Skip to content

Commit 562aff5

Browse files
authored
ci(amplifier): add r2 support for releases (#541)
1 parent 0ac9bde commit 562aff5

File tree

2 files changed

+98
-10
lines changed

2 files changed

+98
-10
lines changed

.github/workflows/build-contracts-and-push-to-r2.yaml

+97-9
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ on:
44
push:
55
branches:
66
- main
7+
tags:
8+
- '*-v[0-9]+.[0-9]+.[0-9]+'
79
workflow_dispatch:
810
inputs:
911
branch:
@@ -22,40 +24,126 @@ jobs:
2224
packages: write
2325
id-token: write
2426
steps:
25-
- name: Determine branch
26-
id: get-branch-name
27+
- name: Get tag
28+
id: get-tag
2729
run: |
28-
if [ "${{ github.event_name }}" == "push" ]; then
29-
branch="main"
30+
echo "github_ref=$GITHUB_REF"
31+
if [[ $GITHUB_REF == refs/tags/* ]]; then
32+
echo "tag=${GITHUB_REF#refs/tags/}"
33+
echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
3034
else
31-
branch="${{ inputs.branch }}"
35+
echo "tag=" >> $GITHUB_OUTPUT
3236
fi
33-
echo "branch=$branch" >> $GITHUB_OUTPUT
37+
38+
- name: Check for release information from tag
39+
id: check-release
40+
run: |
41+
tag="${{ steps.get-tag.outputs.tag }}"
42+
is_release="false"
43+
44+
if [[ $tag =~ ^([a-zA-Z-]+)-v([0-9]+\.[0-9]+\.[0-9]+)$ ]]; then
45+
is_release="true"
46+
crate_name="${BASH_REMATCH[1]}"
47+
crate_version="${BASH_REMATCH[2]}"
48+
49+
echo "Is release: $is_release"
50+
echo "Crate Name: $crate_name"
51+
echo "Crate Version: $crate_version"
52+
53+
echo "is-release=$is_release" >> $GITHUB_OUTPUT
54+
echo "crate-name=$crate_name" >> $GITHUB_OUTPUT
55+
echo "crate-version=$crate_version" >> $GITHUB_OUTPUT
56+
else
57+
echo "Is release: $is_release"
58+
echo "Not a release tag. Skipping crate name and version extraction."
59+
echo "is-release=$is_release" >> $GITHUB_OUTPUT
60+
fi
61+
62+
63+
- name: Determine checkout ref
64+
id: get-checkout-ref
65+
run: |
66+
if [[ $GITHUB_REF == refs/tags/* ]]; then
67+
echo "ref=$GITHUB_REF" >> $GITHUB_OUTPUT
68+
elif [ "${{ github.event_name }}" == "push" ]; then
69+
echo "ref=main" >> $GITHUB_OUTPUT
70+
else
71+
echo "ref=${{ inputs.branch }}" >> $GITHUB_OUTPUT
72+
fi
73+
3474
3575
- name: Checkout code
3676
uses: actions/checkout@v4
3777
with:
3878
fetch-depth: "0"
3979
path: axelar-amplifier
4080
submodules: recursive
41-
ref: ${{ steps.get-branch-name.outputs.branch }}
81+
ref: ${{ steps.get-checkout-ref.outputs.ref }}
82+
4283

43-
- name: Compile amplifier contracts
84+
- name: Import GPG key
85+
id: import_gpg
86+
uses: crazy-max/ghaction-import-gpg@v4
87+
with:
88+
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
89+
passphrase: ${{ secrets.GPG_PASSPHRASE }}
90+
91+
92+
- name: Compile all amplifier contracts
4493
id: compile-contracts
4594
run: |
4695
cd axelar-amplifier
4796
docker run --rm -v "$(pwd)":/code \
4897
--mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \
4998
--mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \
5099
cosmwasm/optimizer:0.16.0
51-
100+
52101
commit_hash=$(git rev-parse --short HEAD)
53102
cd ..
54103
mkdir -p ./artifacts/$commit_hash/
55104
cp -R axelar-amplifier/artifacts/* ./artifacts/$commit_hash/
56105
echo "wasm-directory=./artifacts" >> $GITHUB_OUTPUT
57106
107+
108+
- name: Prepare and sign release artifacts
109+
if: steps.check-release.outputs.is-release == 'true'
110+
id: prepare-release
111+
run: |
112+
cd ${{ steps.compile-contracts.outputs.wasm-directory }}
113+
crate_name="${{ steps.check-release.outputs.crate-name }}"
114+
crate_version="${{ steps.check-release.outputs.crate-version }}"
115+
wasm_file=$(find . -name "${crate_name//-/_}.wasm")
116+
checksum_file=$(find . -name "checksums.txt")
117+
118+
if [ -z "$wasm_file" ]; then
119+
echo "Error: Could not find .wasm file for $crate_name"
120+
exit 1
121+
fi
122+
123+
mkdir -p "../release-artifacts"
124+
cp "$wasm_file" "../release-artifacts/${crate_name}.wasm"
125+
cp "$checksum_file" "../release-artifacts/"
126+
127+
gpg --armor --detach-sign ../release-artifacts/${crate_name}.wasm
128+
gpg --armor --detach-sign ../release-artifacts/checksums.txt
129+
130+
echo "release-artifacts-dir=./release-artifacts" >> $GITHUB_OUTPUT
131+
echo "r2-destination-dir=./releases/amplifier/${crate_name}/${crate_version}" >> $GITHUB_OUTPUT
132+
133+
134+
- uses: ryand56/r2-upload-action@latest
135+
if: steps.check-release.outputs.is-release == 'true'
136+
with:
137+
r2-account-id: ${{ secrets.R2_ACCOUNT_ID }}
138+
r2-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_CF }}
139+
r2-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_CF }}
140+
r2-bucket: ${{ secrets.R2_BUCKET }}
141+
source-dir: ${{ steps.prepare-release.outputs.release-artifacts-dir }}
142+
destination-dir: ${{ steps.prepare-release.outputs.r2-destination-dir }}
143+
144+
58145
- uses: ryand56/r2-upload-action@latest
146+
if: steps.check-release.outputs.is-release != 'true'
59147
with:
60148
r2-account-id: ${{ secrets.R2_ACCOUNT_ID }}
61149
r2-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID_CF }}

release.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
pre-release-commit-message = "chore: release {{crate_name}} {{version}} [skip ci]"
1+
pre-release-commit-message = "chore: release {{crate_name}} {{version}}"
22
consolidate-commits = false
33
release = true
44
publish = false

0 commit comments

Comments
 (0)