Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 21 additions & 9 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,14 @@ on: [push]

jobs:
build:
runs-on: ubuntu-latest
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- arch: x86_64
runner: ubuntu-latest
- arch: arm64
runner: ubuntu-24.04-arm
steps:
- name: start service container
run: |
Expand All @@ -27,11 +34,11 @@ jobs:
cache-name: cache-stack
with:
path: ~/.stack
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/*.cabal') }}-${{ hashFiles('**/stack.yaml') }}
key: ${{ runner.os }}-${{ matrix.arch }}-build-${{ env.cache-name }}-${{ hashFiles('**/*.cabal') }}-${{ hashFiles('**/stack.yaml') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
${{ runner.os }}-${{ matrix.arch }}-build-${{ env.cache-name }}-
${{ runner.os }}-${{ matrix.arch }}-build-
${{ runner.os }}-${{ matrix.arch }}-
- name: Build dependencies
run: |
stack --no-terminal build --test --only-dependencies
Expand All @@ -46,13 +53,18 @@ jobs:
export TASKRUNNER_TEST_S3_SECRET_KEY=minioadmin

stack --no-terminal build --test
- name: Zip
- name: Package
run: |
cd dist
tar czvf taskrunner-linux.tar.gz taskrunner
# Create architecture-specific archive
tar czvf taskrunner-linux-${{ matrix.arch }}.tar.gz taskrunner
# For x86_64, also create legacy name for backward compatibility
if [ "${{ matrix.arch }}" == "x86_64" ]; then
cp taskrunner-linux-${{ matrix.arch }}.tar.gz taskrunner-linux.tar.gz
fi
- name: Archive production artifacts
uses: actions/upload-artifact@v4
with:
name: taskrunner-linux.tar.gz
name: taskrunner-linux-${{ matrix.arch }}
path: |
dist/taskrunner-linux.tar.gz
dist/*.tar.gz
77 changes: 66 additions & 11 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,14 @@ permissions:

jobs:
build:
runs-on: ubuntu-latest
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- arch: x86_64
runner: ubuntu-latest
- arch: arm64
runner: ubuntu-24.04-arm
steps:
- name: start service container
run: |
Expand All @@ -33,11 +40,11 @@ jobs:
cache-name: cache-stack
with:
path: ~/.stack
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/*.cabal') }}-${{ hashFiles('**/stack.yaml') }}
key: ${{ runner.os }}-${{ matrix.arch }}-build-${{ env.cache-name }}-${{ hashFiles('**/*.cabal') }}-${{ hashFiles('**/stack.yaml') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
${{ runner.os }}-${{ matrix.arch }}-build-${{ env.cache-name }}-
${{ runner.os }}-${{ matrix.arch }}-build-
${{ runner.os }}-${{ matrix.arch }}-
- name: Build dependencies
run: |
stack --no-terminal build --test --only-dependencies
Expand All @@ -52,10 +59,35 @@ jobs:
export TASKRUNNER_TEST_S3_SECRET_KEY=minioadmin

stack --no-terminal build --test
- name: Zip
- name: Package
run: |
cd dist
tar czvf taskrunner-linux.tar.gz taskrunner
# Create architecture-specific archive
tar czvf taskrunner-linux-${{ matrix.arch }}.tar.gz taskrunner
# For x86_64, also create legacy name for backward compatibility
if [ "${{ matrix.arch }}" == "x86_64" ]; then
cp taskrunner-linux-${{ matrix.arch }}.tar.gz taskrunner-linux.tar.gz
fi
# Upload artifacts from both architecture builds
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: taskrunner-linux-${{ matrix.arch }}
path: |
dist/*.tar.gz

release:
needs: build
runs-on: ubuntu-latest
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts

- name: List artifacts
run: ls -laR artifacts/

- name: Create Release
id: create_release
uses: actions/create-release@v1
Expand All @@ -66,13 +98,36 @@ jobs:
release_name: Release ${{ github.ref_name }}
draft: false
prerelease: false
- name: Upload Release Asset
id: upload-release-asset

# Upload x86_64 with legacy name (backward compatibility)
- name: Upload Release Asset (Linux - Legacy)
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
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
asset_path: ./dist/taskrunner-linux.tar.gz
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./artifacts/taskrunner-linux-x86_64/dist/taskrunner-linux.tar.gz
asset_name: taskrunner-linux.tar.gz
asset_content_type: application/x-tar

# Upload x86_64 with explicit architecture
- name: Upload Release Asset (Linux x86_64)
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./artifacts/taskrunner-linux-x86_64/dist/taskrunner-linux-x86_64.tar.gz
asset_name: taskrunner-linux-x86_64.tar.gz
asset_content_type: application/x-tar

# Upload ARM64
- name: Upload Release Asset (Linux ARM64)
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./artifacts/taskrunner-linux-arm64/dist/taskrunner-linux-arm64.tar.gz
asset_name: taskrunner-linux-arm64.tar.gz
asset_content_type: application/x-tar
Loading