Skip to content

Commit 3d3708a

Browse files
committed
chore(release): build cross-platform binaries and update Homebrew tap
1 parent f6ab966 commit 3d3708a

1 file changed

Lines changed: 90 additions & 0 deletions

File tree

.github/workflows/release.yml

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
jobs:
9+
build:
10+
name: Build ${{ matrix.target }}
11+
runs-on: ${{ matrix.os }}
12+
strategy:
13+
matrix:
14+
include:
15+
- target: x86_64-unknown-linux-gnu
16+
os: ubuntu-latest
17+
- target: aarch64-unknown-linux-gnu
18+
os: ubuntu-latest
19+
- target: x86_64-apple-darwin
20+
os: macos-latest
21+
- target: aarch64-apple-darwin
22+
os: macos-latest
23+
24+
steps:
25+
- uses: actions/checkout@v4
26+
27+
- uses: denoland/setup-deno@v2
28+
with:
29+
deno-version: v2.x
30+
31+
- name: Cache Deno dependencies
32+
uses: actions/cache@v4
33+
with:
34+
path: |
35+
~/.cache/deno
36+
deno.lock
37+
key: ${{ runner.os }}-deno-${{ hashFiles('deno.lock') }}
38+
39+
- name: Build ${{ matrix.target }}
40+
run: deno compile --allow-read --allow-write --allow-env --allow-sys --allow-run=git,docker,sops,age,age-keygen,shred,rm --target ${{ matrix.target }} --output dist/stackctl src/main.ts
41+
42+
- name: Copy README and LICENSE
43+
run: cp README.md LICENSE dist/
44+
45+
- name: Package tarball
46+
working-directory: dist
47+
run: tar -czf "stackctl-${{ github.ref_name }}-${{ matrix.target }}.tar.gz" stackctl README.md LICENSE
48+
49+
- name: Generate checksum
50+
working-directory: dist
51+
run: shasum -a 256 "stackctl-${{ github.ref_name }}-${{ matrix.target }}.tar.gz" > "stackctl-${{ github.ref_name }}-${{ matrix.target }}.tar.gz.sha256"
52+
53+
- uses: actions/upload-artifact@v4
54+
with:
55+
name: ${{ matrix.target }}
56+
path: |
57+
dist/stackctl-${{ github.ref_name }}-${{ matrix.target }}.tar.gz
58+
dist/stackctl-${{ github.ref_name }}-${{ matrix.target }}.tar.gz.sha256
59+
60+
release:
61+
name: Create Release
62+
needs: build
63+
runs-on: ubuntu-latest
64+
permissions:
65+
contents: write
66+
steps:
67+
- uses: actions/checkout@v4
68+
69+
- uses: actions/download-artifact@v4
70+
with:
71+
pattern: "*"
72+
path: dist/
73+
merge-multiple: true
74+
75+
- name: Generate combined checksums
76+
working-directory: dist
77+
run: shasum -a 256 stackctl-*.tar.gz > checksums.txt
78+
79+
# NOTE: Homebrew tap auto-update is a follow-up task.
80+
# The release workflow currently does not trigger a Homebrew tap PR.
81+
82+
- name: Create Release
83+
uses: softprops/action-gh-release@v2
84+
with:
85+
files: |
86+
dist/stackctl-*.tar.gz
87+
dist/checksums.txt
88+
generate_release_notes: true
89+
draft: false
90+
prerelease: false

0 commit comments

Comments
 (0)