Skip to content

Commit 531d2ec

Browse files
authored
Merge pull request #12 from restaumatic/add-builds-arm64
Publish TaskRunner for ARM64
2 parents 4efcfd3 + 0485f9f commit 531d2ec

File tree

2 files changed

+87
-20
lines changed

2 files changed

+87
-20
lines changed

.github/workflows/build.yml

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,14 @@ on: [push]
44

55
jobs:
66
build:
7-
runs-on: ubuntu-latest
7+
runs-on: ${{ matrix.runner }}
8+
strategy:
9+
matrix:
10+
include:
11+
- arch: x86_64
12+
runner: ubuntu-latest
13+
- arch: arm64
14+
runner: ubuntu-24.04-arm
815
steps:
916
- name: start service container
1017
run: |
@@ -27,11 +34,11 @@ jobs:
2734
cache-name: cache-stack
2835
with:
2936
path: ~/.stack
30-
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/*.cabal') }}-${{ hashFiles('**/stack.yaml') }}
37+
key: ${{ runner.os }}-${{ matrix.arch }}-build-${{ env.cache-name }}-${{ hashFiles('**/*.cabal') }}-${{ hashFiles('**/stack.yaml') }}
3138
restore-keys: |
32-
${{ runner.os }}-build-${{ env.cache-name }}-
33-
${{ runner.os }}-build-
34-
${{ runner.os }}-
39+
${{ runner.os }}-${{ matrix.arch }}-build-${{ env.cache-name }}-
40+
${{ runner.os }}-${{ matrix.arch }}-build-
41+
${{ runner.os }}-${{ matrix.arch }}-
3542
- name: Build dependencies
3643
run: |
3744
stack --no-terminal build --test --only-dependencies
@@ -46,13 +53,18 @@ jobs:
4653
export TASKRUNNER_TEST_S3_SECRET_KEY=minioadmin
4754
4855
stack --no-terminal build --test
49-
- name: Zip
56+
- name: Package
5057
run: |
5158
cd dist
52-
tar czvf taskrunner-linux.tar.gz taskrunner
59+
# Create architecture-specific archive
60+
tar czvf taskrunner-linux-${{ matrix.arch }}.tar.gz taskrunner
61+
# For x86_64, also create legacy name for backward compatibility
62+
if [ "${{ matrix.arch }}" == "x86_64" ]; then
63+
cp taskrunner-linux-${{ matrix.arch }}.tar.gz taskrunner-linux.tar.gz
64+
fi
5365
- name: Archive production artifacts
5466
uses: actions/upload-artifact@v4
5567
with:
56-
name: taskrunner-linux.tar.gz
68+
name: taskrunner-linux-${{ matrix.arch }}
5769
path: |
58-
dist/taskrunner-linux.tar.gz
70+
dist/*.tar.gz

.github/workflows/release.yml

Lines changed: 66 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,14 @@ permissions:
1010

1111
jobs:
1212
build:
13-
runs-on: ubuntu-latest
13+
runs-on: ${{ matrix.runner }}
14+
strategy:
15+
matrix:
16+
include:
17+
- arch: x86_64
18+
runner: ubuntu-latest
19+
- arch: arm64
20+
runner: ubuntu-24.04-arm
1421
steps:
1522
- name: start service container
1623
run: |
@@ -33,11 +40,11 @@ jobs:
3340
cache-name: cache-stack
3441
with:
3542
path: ~/.stack
36-
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/*.cabal') }}-${{ hashFiles('**/stack.yaml') }}
43+
key: ${{ runner.os }}-${{ matrix.arch }}-build-${{ env.cache-name }}-${{ hashFiles('**/*.cabal') }}-${{ hashFiles('**/stack.yaml') }}
3744
restore-keys: |
38-
${{ runner.os }}-build-${{ env.cache-name }}-
39-
${{ runner.os }}-build-
40-
${{ runner.os }}-
45+
${{ runner.os }}-${{ matrix.arch }}-build-${{ env.cache-name }}-
46+
${{ runner.os }}-${{ matrix.arch }}-build-
47+
${{ runner.os }}-${{ matrix.arch }}-
4148
- name: Build dependencies
4249
run: |
4350
stack --no-terminal build --test --only-dependencies
@@ -52,10 +59,35 @@ jobs:
5259
export TASKRUNNER_TEST_S3_SECRET_KEY=minioadmin
5360
5461
stack --no-terminal build --test
55-
- name: Zip
62+
- name: Package
5663
run: |
5764
cd dist
58-
tar czvf taskrunner-linux.tar.gz taskrunner
65+
# Create architecture-specific archive
66+
tar czvf taskrunner-linux-${{ matrix.arch }}.tar.gz taskrunner
67+
# For x86_64, also create legacy name for backward compatibility
68+
if [ "${{ matrix.arch }}" == "x86_64" ]; then
69+
cp taskrunner-linux-${{ matrix.arch }}.tar.gz taskrunner-linux.tar.gz
70+
fi
71+
# Upload artifacts from both architecture builds
72+
- name: Upload artifacts
73+
uses: actions/upload-artifact@v4
74+
with:
75+
name: taskrunner-linux-${{ matrix.arch }}
76+
path: |
77+
dist/*.tar.gz
78+
79+
release:
80+
needs: build
81+
runs-on: ubuntu-latest
82+
steps:
83+
- name: Download all artifacts
84+
uses: actions/download-artifact@v4
85+
with:
86+
path: artifacts
87+
88+
- name: List artifacts
89+
run: ls -laR artifacts/
90+
5991
- name: Create Release
6092
id: create_release
6193
uses: actions/create-release@v1
@@ -66,13 +98,36 @@ jobs:
6698
release_name: Release ${{ github.ref_name }}
6799
draft: false
68100
prerelease: false
69-
- name: Upload Release Asset
70-
id: upload-release-asset
101+
102+
# Upload x86_64 with legacy name (backward compatibility)
103+
- name: Upload Release Asset (Linux - Legacy)
71104
uses: actions/upload-release-asset@v1
72105
env:
73106
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
74107
with:
75-
upload_url: ${{ steps.create_release.outputs.upload_url }} # This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include a `upload_url`. See this blog post for more info: https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
76-
asset_path: ./dist/taskrunner-linux.tar.gz
108+
upload_url: ${{ steps.create_release.outputs.upload_url }}
109+
asset_path: ./artifacts/taskrunner-linux-x86_64/dist/taskrunner-linux.tar.gz
77110
asset_name: taskrunner-linux.tar.gz
78111
asset_content_type: application/x-tar
112+
113+
# Upload x86_64 with explicit architecture
114+
- name: Upload Release Asset (Linux x86_64)
115+
uses: actions/upload-release-asset@v1
116+
env:
117+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
118+
with:
119+
upload_url: ${{ steps.create_release.outputs.upload_url }}
120+
asset_path: ./artifacts/taskrunner-linux-x86_64/dist/taskrunner-linux-x86_64.tar.gz
121+
asset_name: taskrunner-linux-x86_64.tar.gz
122+
asset_content_type: application/x-tar
123+
124+
# Upload ARM64
125+
- name: Upload Release Asset (Linux ARM64)
126+
uses: actions/upload-release-asset@v1
127+
env:
128+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
129+
with:
130+
upload_url: ${{ steps.create_release.outputs.upload_url }}
131+
asset_path: ./artifacts/taskrunner-linux-arm64/dist/taskrunner-linux-arm64.tar.gz
132+
asset_name: taskrunner-linux-arm64.tar.gz
133+
asset_content_type: application/x-tar

0 commit comments

Comments
 (0)