Skip to content

Commit 9ceea80

Browse files
authored
[CI] Update homebrew tap on tag/release. (#85)
1 parent c67acda commit 9ceea80

File tree

3 files changed

+89
-0
lines changed

3 files changed

+89
-0
lines changed

.github/workflows/ci.yml

+11
Original file line numberDiff line numberDiff line change
@@ -317,3 +317,14 @@ jobs:
317317
${{ env.ARTIFACT_DIR }}/*.deb
318318
${{ env.ARTIFACT_DIR }}/*.rpm
319319
${{ env.ARTIFACT_DIR }}/*.nupkg
320+
321+
# --- Update homebrew tap ---
322+
323+
- name: Update homebrew tap (liquidaty/homebrew-zsv)
324+
if: ${{ startsWith(github.ref, 'refs/tags/v') && runner.os == 'macOS' }}
325+
env:
326+
HOMEBREW_TAP_DEPLOY_KEY: ${{ secrets.HOMEBREW_TAP_DEPLOY_KEY }}
327+
TAG: ${{ env.TAG }}
328+
TRIPLET: ${{ env.AMD64_MACOSX_GCC }}
329+
run: |
330+
./scripts/ci-update-homebrew-tap.sh

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,4 @@ amd64-macosx-clang
5757
amd64-freebsd-gcc
5858
jq
5959
nuget-feed
60+
homebrew-zsv

scripts/ci-update-homebrew-tap.sh

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#!/bin/sh
2+
3+
set -e
4+
5+
echo "[INF] Running $0"
6+
7+
if [ "$HOMEBREW_TAP_DEPLOY_KEY" = "" ] || [ "$TAG" = "" ] || [ "$TRIPLET" = "" ]; then
8+
echo "[ERR] One or more environment variable(s) are not set!"
9+
echo "[ERR] Set HOMEBREW_TAP_DEPLOY_KEY, TAG, and TRIPLET before running $0 script."
10+
exit 1
11+
fi
12+
13+
TAR="zsv-$TAG-$TRIPLET.tar.gz"
14+
TAR_URL="https://github.com/liquidaty/zsv/releases/download/v$TAG/$TAR"
15+
HOMEBREW_TAP_REPO="[email protected]:liquidaty/homebrew-zsv.git"
16+
HOMEBREW_TAP_DIR="homebrew-zsv"
17+
HOMEBREW_TAP_FORMULA="formula/zsv.rb"
18+
HOMEBREW_TAP_DEPLOY_KEY_FILE="homebrew_tap_deploy_key_file"
19+
20+
echo "[INF] Updating homebrew tap"
21+
22+
echo "[INF] PWD: $PWD"
23+
echo "[INF] TAG: $TAG"
24+
echo "[INF] TAR: $TAR"
25+
echo "[INF] TAR_URL: $TAR_URL"
26+
echo "[INF] HOMEBREW_TAP_REPO: $HOMEBREW_TAP_REPO"
27+
echo "[INF] HOMEBREW_TAP_DIR: $HOMEBREW_TAP_DIR"
28+
echo "[INF] HOMEBREW_TAP_FORMULA: $HOMEBREW_TAP_FORMULA"
29+
30+
echo "[INF] Downloading release tar file [$TAR_URL]"
31+
wget -q "$TAR_URL"
32+
ls -Gghl "$TAR"
33+
34+
echo "[INF] Calculating SHA256 of $TAR"
35+
SHA256=$(openssl dgst -sha256 "$TAR" | cut -d ' ' -f2 | tr -d '\n')
36+
echo "[INF] SHA256: $SHA256"
37+
rm -f "$TAR"
38+
39+
echo "[INF] Setting up GitHub credentials"
40+
echo "$HOMEBREW_TAP_DEPLOY_KEY" > $HOMEBREW_TAP_DEPLOY_KEY_FILE
41+
chmod 400 $HOMEBREW_TAP_DEPLOY_KEY_FILE
42+
export GIT_SSH_COMMAND="ssh -i $PWD/$HOMEBREW_TAP_DEPLOY_KEY_FILE -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
43+
git config --global user.name "zsv-ci"
44+
git config --global user.email "zsv-ci@localhost"
45+
46+
rm -rf "$HOMEBREW_TAP_DIR"
47+
48+
git clone "$HOMEBREW_TAP_REPO"
49+
cd "$HOMEBREW_TAP_DIR"
50+
51+
echo "[INF] Replacing 'url' and 'sha256' fields [$HOMEBREW_TAP_FORMULA]"
52+
sed -i -e "s|url .*|url '$TAR_URL'|" $HOMEBREW_TAP_FORMULA
53+
sed -i -e "s|sha256 .*|sha256 '$SHA256'|" $HOMEBREW_TAP_FORMULA
54+
55+
DIFF=$(git diff "$HOMEBREW_TAP_FORMULA")
56+
if [ "$DIFF" = "" ]; then
57+
echo "[INF] 'url' and 'sha256' fields are the same."
58+
echo "[INF] Homebrew tap formula is already updated."
59+
echo "[INF] No changes required. Exiting!"
60+
exit 0
61+
fi
62+
63+
echo "[INF] --- git diff $HOMEBREW_TAP_FORMULA STARTS ---"
64+
echo "$DIFF"
65+
echo "[INF] ---- git diff $HOMEBREW_TAP_FORMULA ENDS ----"
66+
67+
echo "[INF] Commiting and pushing changes"
68+
git add "$HOMEBREW_TAP_FORMULA"
69+
git commit -m "Automatic bump version to v$TAG."
70+
git push origin main
71+
72+
cd ..
73+
rm -rf "$HOMEBREW_TAP_DIR"
74+
75+
echo "[INF] Homebrew tap updated successfully!"
76+
77+
echo "[INF] --- [DONE] ---"

0 commit comments

Comments
 (0)