@@ -12,39 +12,78 @@ permissions:
1212jobs :
1313 publish-binary :
1414 name : Publish Binary
15- runs-on : ubuntu-latest
15+ runs-on : ${{ matrix.architecture }}
16+ strategy :
17+ matrix :
18+ architecture : [ubuntu-24.04, ubuntu-24.04-arm]
1619 steps :
1720 - name : Checkout code.
1821 uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
22+ - name : Setup Nix.
23+ uses : cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
1924 - name : Publish binary.
20- run : make publish-binary RELEASE="${GITHUB_REF_NAME}"
25+ run : nix develop -c make publish-binary RELEASE="${GITHUB_REF_NAME}"
2126 env :
2227 GH_TOKEN : ${{ secrets.GITHUB_TOKEN }} # This token is provided by GitHub Actions.
2328
2429 publish-crate :
2530 name : Publish Crate
26- runs-on : ubuntu-latest
31+ runs-on : ubuntu-24.04
2732 steps :
2833 - name : Checkout code.
2934 uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
35+ - name : Setup Nix.
36+ uses : cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31.9.0
3037 - name : Publish crate.
31- run : make publish-crate
38+ run : nix develop -c make publish-crate
3239 env :
3340 CARGO_REGISTRY_TOKEN : ${{ secrets.CARGO_REGISTRY_TOKEN }}
3441
35- publish-docker :
36- name : Publish Docker Image
37- runs-on : ubuntu-latest
42+ publish-docker-image :
43+ name : Publish Docker Image (${{ matrix.platform }})
44+ runs-on : ${{ matrix.runner }}
45+ needs : [publish-binary]
46+ strategy :
47+ matrix :
48+ include :
49+ - platform : linux/amd64
50+ runner : ubuntu-24.04
51+ target : x86_64-unknown-linux-musl
52+ suffix : amd64
53+ - platform : linux/arm64
54+ runner : ubuntu-24.04-arm
55+ target : aarch64-unknown-linux-musl
56+ suffix : arm64
3857 steps :
3958 - name : Checkout code.
4059 uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
4160 - name : Set up Docker Buildx
42- uses : docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
61+ uses : docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0
4362 - name : Login to GitHub Container Registry
44- uses : docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3
63+ uses : docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
4564 with :
4665 registry : ghcr.io
4766 username : ${{ github.actor }}
4867 password : ${{ secrets.GITHUB_TOKEN }}
4968 - name : Publish Docker Image
50- run : make publish-docker RELEASE="${GITHUB_REF_NAME}"
69+ run : make publish-docker-image RELEASE="${GITHUB_REF_NAME}" PLATFORM="${{ matrix.platform }}" TARGET="${{ matrix.target }}" SUFFIX="${{ matrix.suffix }}"
70+ env :
71+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
72+
73+ publish-docker-manifest :
74+ name : Publish Docker Manifest
75+ runs-on : ubuntu-24.04
76+ needs : [publish-docker-image]
77+ steps :
78+ - name : Checkout code.
79+ uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
80+ - name : Set up Docker Buildx
81+ uses : docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0
82+ - name : Login to GitHub Container Registry
83+ uses : docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
84+ with :
85+ registry : ghcr.io
86+ username : ${{ github.actor }}
87+ password : ${{ secrets.GITHUB_TOKEN }}
88+ - name : Publish Docker Manifest
89+ run : make publish-docker-manifest RELEASE="${GITHUB_REF_NAME}"
0 commit comments