release: v0.1.0 (#255)
This commit is contained in:
parent
05163c3eba
commit
870c0223b7
11 changed files with 110 additions and 49 deletions
37
.github/workflows/cosmwasm-release.yml
vendored
37
.github/workflows/cosmwasm-release.yml
vendored
|
@ -1,37 +0,0 @@
|
||||||
name: Cosmwasm release
|
|
||||||
|
|
||||||
on:
|
|
||||||
release:
|
|
||||||
types: [ created ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
release:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout sources
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
- name: Install protobuf-compiler
|
|
||||||
run: sudo apt-get install -y protobuf-compiler
|
|
||||||
- name: Install cargo-run-script
|
|
||||||
uses: actions-rs/cargo@v1
|
|
||||||
with:
|
|
||||||
command: install
|
|
||||||
args: cargo-run-script
|
|
||||||
- name: Run cargo optimize
|
|
||||||
uses: actions-rs/cargo@v1
|
|
||||||
with:
|
|
||||||
command: run-script
|
|
||||||
args: optimize
|
|
||||||
- name: Get release ID
|
|
||||||
id: get_release
|
|
||||||
uses: bruceadams/get-release@v1.2.3
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ github.token }}
|
|
||||||
- name: Upload optimized wasm
|
|
||||||
uses: svenstaro/upload-release-action@v2
|
|
||||||
with:
|
|
||||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
file: ./artifacts/*.wasm
|
|
||||||
tag: ${{ github.ref }}
|
|
||||||
overwrite: true
|
|
||||||
file_glob: true
|
|
24
Cargo.toml
24
Cargo.toml
|
@ -125,20 +125,20 @@ mc-sgx-dcap-sys-types = { version = "0.11.0", default-features = false }
|
||||||
mc-attestation-verifier = { version = "0.4.3", default-features = false }
|
mc-attestation-verifier = { version = "0.4.3", default-features = false }
|
||||||
|
|
||||||
# quartz
|
# quartz
|
||||||
quartz-cw-proof = { path = "crates/enclave/cw-proof", default-features = false }
|
quartz-cw-proof = { version = "0.1.0", path = "crates/enclave/cw-proof", default-features = false }
|
||||||
quartz-common = { path = "crates/common", default-features = false }
|
quartz-common = { version = "0.1.0", path = "crates/common", default-features = false }
|
||||||
quartz-contract-core = { path = "crates/contracts/core", default-features = false }
|
quartz-contract-core = { version = "0.1.0", path = "crates/contracts/core", default-features = false }
|
||||||
quartz-dcap-verifier-msgs = { path = "crates/contracts/dcap-verifier/msgs", default-features = false }
|
quartz-dcap-verifier-msgs = { version = "0.1.0", path = "crates/contracts/dcap-verifier/msgs", default-features = false }
|
||||||
quartz-enclave-core = { path = "crates/enclave/core", default-features = false }
|
quartz-enclave-core = { version = "0.1.0", path = "crates/enclave/core", default-features = false }
|
||||||
quartz-proto = { path = "crates/enclave/proto", default-features = false }
|
quartz-proto = { version = "0.1.0", path = "crates/enclave/proto", default-features = false }
|
||||||
quartz-tee-ra = { path = "crates/contracts/tee-ra", default-features = false }
|
quartz-tee-ra = { version = "0.1.0", path = "crates/contracts/tee-ra", default-features = false }
|
||||||
quartz-tcbinfo = { path = "crates/contracts/tcbinfo", default-features = false, features = [
|
quartz-tcbinfo = { version = "0.1.0", path = "crates/contracts/tcbinfo", default-features = false, features = [
|
||||||
"library",
|
"library",
|
||||||
] }
|
] }
|
||||||
quartz-tcbinfo-msgs = { path = "crates/contracts/tcbinfo/msgs", default-features = false }
|
quartz-tcbinfo-msgs = { version = "0.1.0", path = "crates/contracts/tcbinfo/msgs", default-features = false }
|
||||||
quartz-tm-prover = { path = "crates/utils/tm-prover", default-features = false }
|
quartz-tm-prover = { version = "0.1.0", path = "crates/utils/tm-prover", default-features = false }
|
||||||
quartz-tm-stateless-verifier = { path = "crates/enclave/tm-stateless-verifier", default-features = false }
|
quartz-tm-stateless-verifier = { version = "0.1.0", path = "crates/enclave/tm-stateless-verifier", default-features = false }
|
||||||
cw-client = { path = "crates/utils/cw-client", default-features = false }
|
cw-client = { version = "0.1.0", path = "crates/utils/cw-client", default-features = false }
|
||||||
|
|
||||||
[profile.release]
|
[profile.release]
|
||||||
opt-level = "z"
|
opt-level = "z"
|
||||||
|
|
|
@ -10,6 +10,7 @@ homepage.workspace = true
|
||||||
keywords = ["cosmos", "cosmwasm", "cycles", "quartz", "sgx"]
|
keywords = ["cosmos", "cosmwasm", "cycles", "quartz", "sgx"]
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
description = """
|
description = """
|
||||||
|
Message and query definitions for the quartz-dcap-verifier contract
|
||||||
"""
|
"""
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|
3
crates/contracts/dcap-verifier/msgs/README.md
Normal file
3
crates/contracts/dcap-verifier/msgs/README.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# quartz-dcap-verifier-msgs
|
||||||
|
|
||||||
|
Message and query definitions for the quartz-dcap-verifier contract
|
|
@ -10,6 +10,7 @@ homepage.workspace = true
|
||||||
keywords = ["cosmos", "cosmwasm", "cycles", "quartz", "sgx"]
|
keywords = ["cosmos", "cosmwasm", "cycles", "quartz", "sgx"]
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
description = """
|
description = """
|
||||||
|
Message and query definitions for the quartz-tcbinfo contract
|
||||||
"""
|
"""
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|
3
crates/contracts/tcbinfo/msgs/README.md
Normal file
3
crates/contracts/tcbinfo/msgs/README.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# quartz-tcbinfo-msgs
|
||||||
|
|
||||||
|
Message and query definitions for the quartz-tcbinfo contract
|
3
crates/enclave/cw-proof/README.md
Normal file
3
crates/enclave/cw-proof/README.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# quartz-cw-proof
|
||||||
|
|
||||||
|
Merkle proofs of CosmWasm contract state. This crate contains proof types and a verifier implementation.
|
3
crates/enclave/proto/README.md
Normal file
3
crates/enclave/proto/README.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# quartz-proto
|
||||||
|
|
||||||
|
Protobuf types defining the Quartz handshake to initialize connection between a smart contract and trusted execution environment.
|
3
crates/enclave/tm-stateless-verifier/README.md
Normal file
3
crates/enclave/tm-stateless-verifier/README.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# quartz-tm-stateless-verifier
|
||||||
|
|
||||||
|
Stateless verification of a tendermint light client proof.
|
3
crates/utils/print-fmspc/README.md
Normal file
3
crates/utils/print-fmspc/README.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# quartz-print-fmspc
|
||||||
|
|
||||||
|
Convenience tool to print the FMSPC (Family-Model-Stepping-Platform-Custom) of the local SGX processor.
|
78
release.sh
Normal file
78
release.sh
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# release.sh will hopefully allow us to publish all of the necessary crates in
|
||||||
|
# this repo in the right order. It is assumed that only one person will be
|
||||||
|
# releasing all crates at the same time.
|
||||||
|
#
|
||||||
|
# It has a default set of crates it will publish, which can be overridden by
|
||||||
|
# way of command line arguments:
|
||||||
|
#
|
||||||
|
# # Release all packages, prompting for each package as to whether to publish
|
||||||
|
# ./scripts/release.sh
|
||||||
|
#
|
||||||
|
# # Just release a single crate, but nothing else
|
||||||
|
# ./scripts/release.sh <crate>
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# A space-separated list of all the crates we want to publish, in the order in
|
||||||
|
# which they must be published. It's important to respect this order, since
|
||||||
|
# each subsequent crate depends on one or more of the preceding ones.
|
||||||
|
DEFAULT_CRATES="cw-client quartz-dcap-verifier-msgs quartz-tcbinfo-msgs quartz-tee-ra quartz-contract-core quartz-cw-proof quartz-proto quartz-tm-stateless-verifier quartz-enclave-core quartz-common quartz-tm-prover quartz-print-fmspc quartz-dcap-verifier quartz-tcbinfo quartz-rs"
|
||||||
|
|
||||||
|
# Allows us to override the crates we want to publish.
|
||||||
|
CRATES=${*:-${DEFAULT_CRATES}}
|
||||||
|
|
||||||
|
get_manifest_path() {
|
||||||
|
cargo metadata --format-version 1 | jq -r '.packages[]|select(.name == "'"${1}"'")|.manifest_path'
|
||||||
|
}
|
||||||
|
|
||||||
|
get_local_version() {
|
||||||
|
cargo metadata --format-version 1 | jq -r '.packages[]|select(.name == "'"${1}"'")|.version'
|
||||||
|
}
|
||||||
|
|
||||||
|
check_version_online() {
|
||||||
|
curl -s "https://crates.io/api/v1/crates/${1}" | jq -r '.versions[]|select(.num == "'"${2}"'").updated_at'
|
||||||
|
}
|
||||||
|
|
||||||
|
publish() {
|
||||||
|
echo "Publishing crate $1..."
|
||||||
|
cargo publish --manifest-path "$(get_manifest_path "${1}")"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
wait_until_available() {
|
||||||
|
echo "Waiting for crate ${1} to become available via crates.io..."
|
||||||
|
for retry in {1..5}; do
|
||||||
|
sleep 5
|
||||||
|
ONLINE_DATE="$(check_version_online "${1}" "${2}")"
|
||||||
|
if [ -n "${ONLINE_DATE}" ]; then
|
||||||
|
echo "Crate ${crate} is now available online"
|
||||||
|
break
|
||||||
|
else
|
||||||
|
if [ "${retry}" == 5 ]; then
|
||||||
|
echo "ERROR: Crate should have become available by now"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "Not available just yet. Waiting a few seconds..."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "Waiting an additional 10 seconds for crate to propagate through CDN..."
|
||||||
|
sleep 10
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Attempting to publish crate(s): ${CRATES}"
|
||||||
|
|
||||||
|
for crate in ${CRATES}; do
|
||||||
|
VERSION="$(get_local_version "${crate}")"
|
||||||
|
ONLINE_DATE="$(check_version_online "${crate}" "${VERSION}")"
|
||||||
|
echo "${crate} version number: ${VERSION}"
|
||||||
|
if [ -n "${ONLINE_DATE}" ]; then
|
||||||
|
echo "${crate} ${VERSION} has already been published at ${ONLINE_DATE}, skipping"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
publish "${crate}"
|
||||||
|
wait_until_available "${crate}" "${VERSION}"
|
||||||
|
done
|
Loading…
Reference in a new issue