Skip to content

Commit 1b38035

Browse files
committed
Merge branch 'ceno' of github.com:scroll-tech/ceno-reth-benchmark into feat/set_chain_id
2 parents 5dac3c0 + fd70230 commit 1b38035

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

release.sh

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
usage() {
5+
cat <<'EOF'
6+
Usage: release.sh <tag> [release-name]
7+
8+
Builds the ceno-reth-benchmark-bin with cargo and uploads the artifact
9+
to the scroll-tech/ceno-reth-benchmark GitHub releases using the gh CLI.
10+
11+
Environment variables:
12+
GITHUB_REPO Override the repo to publish to (default: scroll-tech/ceno-reth-benchmark)
13+
RELEASE_NOTES Release notes string (ignored if RELEASE_NOTES_FILE is set)
14+
RELEASE_NOTES_FILE Path to a file that will be used for --notes-file
15+
ARTIFACT_DIR Directory to store the packaged binary (default: release-artifacts)
16+
EOF
17+
}
18+
19+
if [[ $# -lt 1 ]]; then
20+
usage >&2
21+
exit 2
22+
fi
23+
24+
if ! command -v gh >/dev/null 2>&1; then
25+
echo "[release.sh] gh CLI not found. Install GitHub CLI: https://cli.github.com/" >&2
26+
exit 1
27+
fi
28+
29+
if ! command -v cargo >/dev/null 2>&1; then
30+
echo "[release.sh] cargo not found in PATH" >&2
31+
exit 1
32+
fi
33+
34+
TAG="$1"
35+
RELEASE_NAME="${2:-$TAG}"
36+
REPO="${GITHUB_REPO:-scroll-tech/ceno-reth-benchmark}"
37+
BINARY_NAME="ceno-reth-benchmark-bin"
38+
ARTIFACT_DIR="${ARTIFACT_DIR:-release-artifacts}"
39+
PROFILE="release"
40+
BUILD_PATH="target/${PROFILE}/${BINARY_NAME}"
41+
42+
echo "[release.sh] Building ${BINARY_NAME} (${PROFILE})"
43+
RUSTFLAGS="-C target-feature=+avx2" JEMALLOC_SYS_WITH_MALLOC_CONF="retain:true,metadata_thp:always,thp:always,dirty_decay_ms:-1,muzzy_decay_ms:-1" cargo build --features jemalloc --features metrics --features gpu --locked --release --bin "${BINARY_NAME}"
44+
45+
if [[ ! -f "${BUILD_PATH}" ]]; then
46+
echo "[release.sh] Build succeeded but ${BUILD_PATH} not found" >&2
47+
exit 1
48+
fi
49+
50+
mkdir -p "${ARTIFACT_DIR}"
51+
OS="$(uname -s | tr '[:upper:]' '[:lower:]')"
52+
ARCH="$(uname -m)"
53+
ARTIFACT_STEM="${BINARY_NAME}-${TAG}-${OS}-${ARCH}"
54+
TMP_DIR="$(mktemp -d)"
55+
trap 'rm -rf "${TMP_DIR}"' EXIT
56+
57+
cp "${BUILD_PATH}" "${TMP_DIR}/${ARTIFACT_STEM}"
58+
chmod +x "${TMP_DIR}/${ARTIFACT_STEM}"
59+
ARCHIVE_PATH="${ARTIFACT_DIR}/${ARTIFACT_STEM}.tar.gz"
60+
echo "[release.sh] Packaging artifact at ${ARCHIVE_PATH}"
61+
tar -C "${TMP_DIR}" -czf "${ARCHIVE_PATH}" "${ARTIFACT_STEM}"
62+
63+
NOTES_ARGS=()
64+
if [[ -n "${RELEASE_NOTES_FILE:-}" ]]; then
65+
NOTES_ARGS=(--notes-file "${RELEASE_NOTES_FILE}")
66+
elif [[ -n "${RELEASE_NOTES:-}" ]]; then
67+
NOTES_ARGS=(--notes "${RELEASE_NOTES}")
68+
else
69+
NOTES_ARGS=(--notes "Automated release for ${TAG}")
70+
fi
71+
72+
echo "[release.sh] Publishing ${ARCHIVE_PATH} to ${REPO} (tag: ${TAG})"
73+
if gh release view "${TAG}" -R "${REPO}" >/dev/null 2>&1; then
74+
gh release upload "${TAG}" "${ARCHIVE_PATH}" --clobber -R "${REPO}"
75+
else
76+
gh release create "${TAG}" "${ARCHIVE_PATH}" -R "${REPO}" -t "${RELEASE_NAME}" "${NOTES_ARGS[@]}"
77+
fi
78+
79+
echo "[release.sh] Release published successfully."

0 commit comments

Comments
 (0)