Skip to content

Commit f8a096a

Browse files
committed
build: filter by arch to prevent duplicated
1 parent 007cb7a commit f8a096a

File tree

2 files changed

+49
-13
lines changed

2 files changed

+49
-13
lines changed

.github/workflows/release.yml

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,26 @@ on:
3434
default: "false"
3535

3636
jobs:
37+
setup:
38+
runs-on: ubuntu-latest
39+
outputs:
40+
version: ${{ steps.set-version.outputs.version }}
41+
steps:
42+
- name: Extract version
43+
id: set-version
44+
run: |
45+
if [ -n "${{ github.event.inputs.release_name }}" ]; then
46+
VERSION="${{ github.event.inputs.release_name }}"
47+
elif [[ "${GITHUB_REF}" == refs/tags/v* ]]; then
48+
VERSION="${GITHUB_REF#refs/tags/v}"
49+
elif [[ "${GITHUB_REF}" == refs/tags/* ]]; then
50+
VERSION="${GITHUB_REF#refs/tags/}"
51+
else
52+
VERSION="${GITHUB_REF_NAME}"
53+
fi
54+
echo "VERSION=$VERSION"
55+
echo "version=$VERSION" >> $GITHUB_OUTPUT
56+
3757
generate-matrix:
3858
runs-on: ubuntu-latest
3959
outputs:
@@ -62,15 +82,14 @@ jobs:
6282
6383
build:
6484
runs-on: ubuntu-latest
65-
needs: generate-matrix
85+
needs: [setup, generate-matrix]
86+
env:
87+
VERSION: ${{ needs.setup.outputs.version }}
6688
if: ${{ github.event.inputs.create_binaries == 'true' || (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')) }}
6789
strategy:
6890
fail-fast: false
6991
matrix:
7092
include: ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
71-
env:
72-
ARTIFACT_NAME: ""
73-
VERSION: ${{ github.event.inputs.release_name || github.ref_name }}
7493

7594
steps:
7695
- uses: actions/checkout@v4
@@ -103,7 +122,7 @@ jobs:
103122

104123
create-release:
105124
runs-on: ubuntu-latest
106-
needs: build
125+
needs: [setup, build]
107126
if: ${{ github.event.inputs.create_release == 'true' || (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')) }}
108127
steps:
109128
- uses: actions/checkout@v4
@@ -138,23 +157,23 @@ jobs:
138157
with:
139158
make_latest: true
140159
prerelease: ${{ steps.release_name.outputs.release_name != '' && contains(steps.release_name.outputs.release_name, 'a') }}
141-
tag_name: ${{ steps.release_name.outputs.release_name }}
142-
name: ${{ steps.release_name.outputs.release_name }}
160+
tag_name: ${{ needs.setup.outputs.version }}
161+
name: ${{ needs.setup.outputs.version }}
143162
body: ${{ steps.git-cliff.outputs.content }}
144163
files: |
145164
artifacts/*
146165
CHANGES.md
147166
148167
docker-build:
149168
runs-on: ubuntu-latest
150-
needs: [generate-matrix]
169+
needs: [setup, generate-matrix]
170+
env:
171+
VERSION: ${{ needs.setup.outputs.version }}
151172
if: ${{ github.event.inputs.create_images == 'true' || (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')) }}
152173
strategy:
153174
fail-fast: false
154175
matrix:
155176
include: ${{ fromJson(needs.generate-matrix.outputs.matrix) }}
156-
env:
157-
VERSION: ${{ github.event.inputs.release_name || github.ref_name }}
158177
steps:
159178
- uses: actions/checkout@v4
160179
- name: Set Repository Lowercase
@@ -181,9 +200,9 @@ jobs:
181200
182201
docker-publish:
183202
runs-on: ubuntu-latest
184-
needs: [generate-matrix, docker-build]
203+
needs: [setup, generate-matrix, docker-build]
185204
env:
186-
VERSION: ${{ github.event.inputs.release_name || github.ref_name }}
205+
VERSION: ${{ needs.setup.outputs.version }}
187206
steps:
188207
- name: Log in to GHCR
189208
uses: docker/login-action@v3

flake.nix

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,21 @@
1919
};
2020
lib = pkgs.lib;
2121

22+
uniqueBy = filter: list:
23+
let
24+
aux = seen: remaining:
25+
if remaining == [] then []
26+
else
27+
let
28+
item = builtins.head remaining;
29+
rest = builtins.tail remaining;
30+
in
31+
if builtins.elem (filter item) seen then
32+
aux seen rest
33+
else
34+
[item] ++ aux (seen ++ [(filter item)]) rest;
35+
in aux [] list;
36+
2237
mkCrossPkgs = { arch, os }: let
2338
cross = arch + "-" + os;
2439
crossSystem = lib.systems.elaborate cross;
@@ -113,7 +128,9 @@
113128
}) architectures)) // (pkgs.lib.listToAttrs (map ({arch, ...} @ args: {
114129
name = "image-${arch}";
115130
value = containerPkg args;
116-
}) architectures));
131+
})
132+
(uniqueBy (i: i.arch) architectures)
133+
));
117134

118135
apps = {
119136
help = {

0 commit comments

Comments
 (0)