Skip to content

Commit bb6419e

Browse files
committed
fix release to wait ci, removed secrets
1 parent 699cff5 commit bb6419e

File tree

1 file changed

+57
-7
lines changed

1 file changed

+57
-7
lines changed

.github/workflows/release.yml

Lines changed: 57 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,59 @@ permissions:
99
contents: write
1010

1111
jobs:
12+
wait_ci:
13+
name: Wait for CI success on tag
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/checkout@v4
17+
with:
18+
fetch-depth: 0
19+
- name: Determine tag and SHA
20+
id: ref
21+
shell: bash
22+
run: |
23+
TAG="${{ github.ref_type == 'tag' && github.ref_name || '' }}"
24+
if [[ -z "$TAG" ]]; then
25+
echo "Error: no tag in event" >&2
26+
exit 1
27+
fi
28+
SHA="${{ github.sha }}"
29+
echo "tag=$TAG" >> $GITHUB_OUTPUT
30+
echo "sha=$SHA" >> $GITHUB_OUTPUT
31+
- name: Install jq
32+
run: sudo apt-get update && sudo apt-get install -y jq
33+
- name: Wait for CI workflow
34+
env:
35+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
36+
shell: bash
37+
run: |
38+
SHA="${{ steps.ref.outputs.sha }}"
39+
echo "Waiting for CI to succeed for $SHA ..."
40+
ATTEMPTS=120
41+
SLEEP=10
42+
for i in $(seq 1 $ATTEMPTS); do
43+
RESP=$(curl -s -H "Authorization: Bearer $GH_TOKEN" -H "Accept: application/vnd.github+json" \
44+
"https://api.github.com/repos/${{ github.repository }}/actions/runs?per_page=50&head_sha=$SHA")
45+
STATUS=$(echo "$RESP" | jq -r '.workflow_runs[] | select(.name=="CI") | .status' | head -n1)
46+
CONCLUSION=$(echo "$RESP" | jq -r '.workflow_runs[] | select(.name=="CI") | .conclusion' | head -n1)
47+
if [[ "$STATUS" == "completed" ]]; then
48+
if [[ "$CONCLUSION" == "success" ]]; then
49+
echo "CI succeeded."
50+
exit 0
51+
else
52+
echo "CI completed with conclusion: $CONCLUSION"
53+
exit 1
54+
fi
55+
fi
56+
echo "CI status: ${STATUS:-not found}; waiting... ($i/$ATTEMPTS)"
57+
sleep $SLEEP
58+
done
59+
echo "Timed out waiting for CI to complete."
60+
exit 1
61+
1262
release:
1363
runs-on: ubuntu-latest
64+
needs: wait_ci
1465
steps:
1566
- uses: actions/checkout@v4
1667
with:
@@ -19,23 +70,24 @@ jobs:
1970
with:
2071
go-version: '1.22'
2172
- name: Import GPG private key (for checksum signing)
22-
if: ${{ secrets.GPG_PRIVATE_KEY != '' }}
2373
env:
2474
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
2575
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
2676
run: |
77+
if [ -z "${GPG_PRIVATE_KEY:-}" ]; then
78+
echo "No GPG_PRIVATE_KEY secret set; skipping key import."
79+
exit 0
80+
fi
2781
mkdir -p ~/.gnupg
2882
chmod 700 ~/.gnupg
2983
echo "Importing GPG key"
3084
echo "$GPG_PRIVATE_KEY" | gpg --batch --import
31-
# If the key has a passphrase, enable loopback so non-interactive signing can work
32-
if [ -n "$GPG_PASSPHRASE" ]; then
85+
if [ -n "${GPG_PASSPHRASE:-}" ]; then
3386
echo 'pinentry-mode loopback' >> ~/.gnupg/gpg.conf
3487
echo 'allow-loopback-pinentry' >> ~/.gnupg/gpg-agent.conf
3588
gpg-connect-agent reloadagent /bye
3689
fi
37-
echo "GPG keys:"
38-
gpg --list-secret-keys --keyid-format LONG
90+
gpg --list-secret-keys --keyid-format LONG || true
3991
- name: Build
4092
run: go build ./...
4193
- name: GoReleaser
@@ -45,6 +97,4 @@ jobs:
4597
args: release --clean
4698
env:
4799
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
48-
# If your key has a passphrase, gpg will read it via loopback pinentry
49-
# GPG_TTY helps avoid certain agent warnings
50100
GPG_TTY: ${{ runner.env.SSH_AUTH_SOCK }}

0 commit comments

Comments
 (0)