Skip to content

Commit

Permalink
release: v0.1.0 (#255)
Browse files Browse the repository at this point in the history
  • Loading branch information
hu55a1n1 committed Oct 21, 2024
1 parent 9bcd91b commit 0113a6e
Show file tree
Hide file tree
Showing 11 changed files with 110 additions and 49 deletions.
37 changes: 0 additions & 37 deletions .github/workflows/cosmwasm-release.yml

This file was deleted.

24 changes: 12 additions & 12 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }

# quartz
quartz-cw-proof = { path = "crates/enclave/cw-proof", default-features = false }
quartz-common = { path = "crates/common", default-features = false }
quartz-contract-core = { path = "crates/contracts/core", default-features = false }
quartz-dcap-verifier-msgs = { path = "crates/contracts/dcap-verifier/msgs", default-features = false }
quartz-enclave-core = { path = "crates/enclave/core", default-features = false }
quartz-proto = { path = "crates/enclave/proto", default-features = false }
quartz-tee-ra = { path = "crates/contracts/tee-ra", default-features = false }
quartz-tcbinfo = { path = "crates/contracts/tcbinfo", default-features = false, features = [
quartz-cw-proof = { version = "0.1.0", path = "crates/enclave/cw-proof", default-features = false }
quartz-common = { version = "0.1.0", path = "crates/common", default-features = false }
quartz-contract-core = { version = "0.1.0", path = "crates/contracts/core", default-features = false }
quartz-dcap-verifier-msgs = { version = "0.1.0", path = "crates/contracts/dcap-verifier/msgs", default-features = false }
quartz-enclave-core = { version = "0.1.0", path = "crates/enclave/core", default-features = false }
quartz-proto = { version = "0.1.0", path = "crates/enclave/proto", default-features = false }
quartz-tee-ra = { version = "0.1.0", path = "crates/contracts/tee-ra", default-features = false }
quartz-tcbinfo = { version = "0.1.0", path = "crates/contracts/tcbinfo", default-features = false, features = [
"library",
] }
quartz-tcbinfo-msgs = { path = "crates/contracts/tcbinfo/msgs", default-features = false }
quartz-tm-prover = { path = "crates/utils/tm-prover", default-features = false }
quartz-tm-stateless-verifier = { path = "crates/enclave/tm-stateless-verifier", default-features = false }
cw-client = { path = "crates/utils/cw-client", default-features = false }
quartz-tcbinfo-msgs = { version = "0.1.0", path = "crates/contracts/tcbinfo/msgs", default-features = false }
quartz-tm-prover = { version = "0.1.0", path = "crates/utils/tm-prover", default-features = false }
quartz-tm-stateless-verifier = { version = "0.1.0", path = "crates/enclave/tm-stateless-verifier", default-features = false }
cw-client = { version = "0.1.0", path = "crates/utils/cw-client", default-features = false }

[profile.release]
opt-level = "z"
Expand Down
1 change: 1 addition & 0 deletions crates/contracts/dcap-verifier/msgs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ homepage.workspace = true
keywords = ["cosmos", "cosmwasm", "cycles", "quartz", "sgx"]
readme = "README.md"
description = """
Message and query definitions for the quartz-dcap-verifier contract
"""

[dependencies]
Expand Down
3 changes: 3 additions & 0 deletions crates/contracts/dcap-verifier/msgs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# quartz-dcap-verifier-msgs

Message and query definitions for the quartz-dcap-verifier contract
1 change: 1 addition & 0 deletions crates/contracts/tcbinfo/msgs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ homepage.workspace = true
keywords = ["cosmos", "cosmwasm", "cycles", "quartz", "sgx"]
readme = "README.md"
description = """
Message and query definitions for the quartz-tcbinfo contract
"""

[dependencies]
Expand Down
3 changes: 3 additions & 0 deletions crates/contracts/tcbinfo/msgs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# quartz-tcbinfo-msgs

Message and query definitions for the quartz-tcbinfo contract
3 changes: 3 additions & 0 deletions crates/enclave/cw-proof/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# quartz-cw-proof

Merkle proofs of CosmWasm contract state. This crate contains proof types and a verifier implementation.
3 changes: 3 additions & 0 deletions crates/enclave/proto/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# quartz-proto

Protobuf types defining the Quartz handshake to initialize connection between a smart contract and trusted execution environment.
3 changes: 3 additions & 0 deletions crates/enclave/tm-stateless-verifier/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# quartz-tm-stateless-verifier

Stateless verification of a tendermint light client proof.
3 changes: 3 additions & 0 deletions crates/utils/print-fmspc/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# quartz-print-fmspc

Convenience tool to print the FMSPC (Family-Model-Stepping-Platform-Custom) of the local SGX processor.
78 changes: 78 additions & 0 deletions release.sh
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 0113a6e

Please sign in to comment.