Skip to content

Commit f3aeaef

Browse files
committed
feat: PR preview build release
1 parent d0b5ad0 commit f3aeaef

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
name: PR Preview Build Release Binaries
2+
3+
on:
4+
pull_request:
5+
6+
jobs:
7+
build:
8+
name: Build Release Binaries
9+
runs-on: depot-ubuntu-22.04-4
10+
if: ${{ github.repository_owner == 'coder' }}
11+
12+
steps:
13+
- uses: actions/checkout@v4
14+
15+
- name: Set up Go
16+
uses: actions/setup-go@v5
17+
with:
18+
go-version: 'stable'
19+
20+
- name: Set up Bun
21+
uses: oven-sh/setup-bun@v2
22+
23+
- name: Install Chat Dependencies
24+
run: cd chat && bun install
25+
26+
- name: Run make gen and check for unstaged changes
27+
run: |
28+
make gen
29+
./check_unstaged.sh
30+
31+
- name: Build and Upload
32+
env:
33+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
34+
shell: bash
35+
run: |
36+
build_variants=(
37+
"linux amd64 agentapi-linux-amd64"
38+
"linux arm64 agentapi-linux-arm64"
39+
"darwin amd64 agentapi-darwin-amd64"
40+
"darwin arm64 agentapi-darwin-arm64"
41+
"windows amd64 agentapi-windows-amd64.exe"
42+
)
43+
44+
for variant in "${build_variants[@]}"; do
45+
read -r goos goarch artifact_name <<< "$variant"
46+
47+
echo "Building for GOOS=$goos GOARCH=$goarch..."
48+
CGO_ENABLED=0 GOOS=$goos GOARCH=$goarch BINPATH="out/$artifact_name" make build
49+
done
50+
51+
- name: Upload Build Artifact
52+
if: ${{ inputs.create-artifact }}
53+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
54+
with:
55+
name: agentapi-build
56+
path: ${{ github.workspace }}/out
57+
retention-days: 7
58+
59+
- name: Create or Update PR Release
60+
if: ${{ github.event.action != 'closed' }}
61+
env:
62+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
63+
RELEASE_TAG: 'agentapi_'${{ github.event.pull_request.number }}
64+
65+
run: gh release upload "$RELEASE_TAG" "$GITHUB_WORKSPACE"/out/* --clobber
66+
67+
- name: Delete PR Release on Close
68+
if: ${{ github.event.action == 'closed' }}
69+
env:
70+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
71+
RELEASE_TAG: 'agentapi_'${{ github.event.pull_request.number }}
72+
run: |
73+
TAG="agentapi_${PR_NUMBER}"
74+
echo "Deleting release and tag $TAG..."
75+
gh release delete "$RELEASE_TAG" --cleanup-tag --yes

0 commit comments

Comments
 (0)