+70
.github/workflows/release.yml
+70
.github/workflows/release.yml
···
1
+
name: Build and Release
2
+
3
+
on:
4
+
push:
5
+
tags:
6
+
- 'v*'
7
+
8
+
jobs:
9
+
build:
10
+
name: Build on ${{ matrix.os }}
11
+
runs-on: ${{ matrix.os }}
12
+
permissions:
13
+
contents: read
14
+
strategy:
15
+
fail-fast: false
16
+
matrix:
17
+
include:
18
+
- os: ubuntu-latest
19
+
platform: x86_64-linux
20
+
- os: macos-latest
21
+
platform: x86_64-darwin
22
+
- os: macos-latest
23
+
platform: aarch64-darwin
24
+
extra_args: --option system aarch64-darwin
25
+
26
+
steps:
27
+
- name: Checkout code
28
+
uses: actions/checkout@v4
29
+
30
+
- name: Install Nix
31
+
uses: DeterminateSystems/determinate-nix-action@v3.11.2
32
+
33
+
- name: Build binary
34
+
run: |
35
+
if [[ "${{ matrix.platform }}" == *"-linux" ]]; then
36
+
# For Linux builds
37
+
nix build .#packages.${{ matrix.platform }}.default --option system ${{ matrix.platform }} -o result-${{ matrix.platform }}
38
+
else
39
+
# For macOS builds
40
+
nix build .#packages.${{ matrix.platform }}.default ${{ matrix.extra_args }} -o result-${{ matrix.platform }}
41
+
fi
42
+
mkdir -p dist
43
+
cp -r result-${{ matrix.platform }}/bin/* dist/
44
+
cd dist && tar -czf ../soapdump-${{ matrix.platform }}.tar.gz *
45
+
46
+
- name: Upload artifact
47
+
uses: actions/upload-artifact@v4
48
+
with:
49
+
name: soapdump-${{ matrix.platform }}
50
+
path: soapdump-${{ matrix.platform }}.tar.gz
51
+
52
+
release:
53
+
name: Create Release
54
+
needs: build
55
+
runs-on: ubuntu-latest
56
+
permissions:
57
+
contents: write
58
+
steps:
59
+
- name: Download all artifacts
60
+
uses: actions/download-artifact@v4
61
+
62
+
- name: Create Release
63
+
id: create_release
64
+
uses: softprops/action-gh-release@v1
65
+
with:
66
+
files: |
67
+
soapdump-x86_64-linux/soapdump-x86_64-linux.tar.gz
68
+
soapdump-x86_64-darwin/soapdump-x86_64-darwin.tar.gz
69
+
soapdump-aarch64-darwin/soapdump-aarch64-darwin.tar.gz
70
+
generate_release_notes: true