Skip to content

Commit 9a6476d

Browse files
committed
Support separate debug and release build artifacts in CI workflow
1 parent facf9e7 commit 9a6476d

2 files changed

Lines changed: 94 additions & 12 deletions

File tree

.github/workflows/CI.yml

Lines changed: 93 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,57 @@ name: CI
33
on:
44
push:
55
branches: [main]
6-
pull_request:
7-
branches: [main]
86
workflow_dispatch:
97

8+
concurrency:
9+
group: ci-${{ github.workflow }}-${{ github.ref }}
10+
cancel-in-progress: true
11+
1012
jobs:
11-
build:
13+
guard-main:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- name: Require main branch
17+
run: |
18+
if [[ "${GITHUB_REF}" != "refs/heads/main" ]]; then
19+
echo "workflow_dispatch is only allowed on main; got ${GITHUB_REF}"
20+
exit 1
21+
fi
22+
23+
build-buildenv:
24+
needs: guard-main
1225
runs-on: ubuntu-latest
1326
steps:
1427
- uses: actions/checkout@v6
1528

16-
- name: Build Docker image (bananas-buildenv)
29+
- name: Build Docker image
1730
run: bash scripts/init.sh
1831

32+
- name: Archive Docker image
33+
run: |
34+
set -euo pipefail
35+
docker save bananas-buildenv | gzip > /tmp/bananas-buildenv.tar.gz
36+
37+
- uses: actions/upload-artifact@v7
38+
with:
39+
name: bananas-buildenv
40+
path: /tmp/bananas-buildenv.tar.gz
41+
retention-days: 1
42+
43+
build-release:
44+
needs: build-buildenv
45+
runs-on: ubuntu-latest
46+
steps:
47+
- uses: actions/checkout@v6
48+
49+
- uses: actions/download-artifact@v8
50+
with:
51+
name: bananas-buildenv
52+
path: /tmp
53+
54+
- name: Load Docker image
55+
run: docker load < /tmp/bananas-buildenv.tar.gz
56+
1957
- name: Compile ROM
2058
run: bash scripts/build.sh
2159

@@ -27,12 +65,44 @@ jobs:
2765
2866
- uses: actions/upload-artifact@v7
2967
with:
30-
name: bananas-gb
68+
name: bananas-release
3169
path: build/bananas.gb
3270

33-
release:
34-
needs: build
35-
if: github.ref == 'refs/heads/main'
71+
build-debug:
72+
needs: build-buildenv
73+
runs-on: ubuntu-latest
74+
steps:
75+
- uses: actions/checkout@v6
76+
77+
- uses: actions/download-artifact@v8
78+
with:
79+
name: bananas-buildenv
80+
path: /tmp
81+
82+
- name: Load Docker image
83+
run: docker load < /tmp/bananas-buildenv.tar.gz
84+
85+
- name: Compile debug ROM
86+
run: bash scripts/build.sh DEBUG=1
87+
88+
- name: Verify debug artifacts
89+
run: |
90+
test -s build/bananas.gb
91+
test -s build/bananas.sym
92+
test -s build/bananas.map
93+
test -s build/bananas.noi
94+
95+
- uses: actions/upload-artifact@v7
96+
with:
97+
name: bananas-debug
98+
path: |
99+
build/bananas.gb
100+
build/bananas.sym
101+
build/bananas.map
102+
build/bananas.noi
103+
104+
publish:
105+
needs: [build-release, build-debug]
36106
runs-on: ubuntu-latest
37107
permissions:
38108
contents: write
@@ -41,14 +111,26 @@ jobs:
41111

42112
- uses: actions/download-artifact@v8
43113
with:
44-
name: bananas-gb
45-
path: build
114+
name: bananas-release
115+
path: build/release
116+
117+
- uses: actions/download-artifact@v8
118+
with:
119+
name: bananas-debug
120+
path: build/debug
121+
122+
- name: Package artifacts
123+
run: |
124+
zip bananas-release.zip -j build/release/*
125+
zip bananas-debug.zip -j build/debug/*
46126
47127
- name: Publish rolling "latest" release
48128
env:
49129
GH_TOKEN: ${{ github.token }}
50130
run: |
51131
gh release delete latest --yes --cleanup-tag 2>/dev/null || true
52-
gh release create latest build/bananas.gb \
132+
gh release create latest \
133+
bananas-release.zip \
134+
bananas-debug.zip \
53135
--title "Latest build" \
54136
--notes "Built from commit ${GITHUB_SHA::7} on $(date -u +%Y-%m-%d)"

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ A 2-player artillery game for the original Game Boy (DMG), inspired by the class
1212

1313
## TL;DR
1414

15-
Download the latest release ROM [bananas.gb](https://github.com/mdeclerk/Bananas/releases/latest) and run with [SameBoy](https://sameboy.github.io/) or [mGBA](https://mgba.io/).
15+
Download latest [release ROM](https://github.com/mdeclerk/Bananas/releases/tag/latest/), run with [SameBoy](https://sameboy.github.io/) or [mGBA](https://mgba.io/).
1616

1717
## Prerequisites
1818

0 commit comments

Comments
 (0)