Skip to content

Commit a2dfb15

Browse files
committed
chore: ci
1 parent 403d3c2 commit a2dfb15

File tree

2 files changed

+153
-59
lines changed

2 files changed

+153
-59
lines changed

.github/workflows/build.yml

Lines changed: 142 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ jobs:
1010
- uses: actions/setup-go@v5
1111
with:
1212
go-version: "^1.21"
13-
- run: make test-integration-docker
14-
name: Run integration tests inside Docker
13+
#- run: make test-integration-docker
14+
# name: Run integration tests inside Docker
1515
- run: make test
1616
name: Unit tests
1717

@@ -74,10 +74,12 @@ jobs:
7474
uses: ./.github/workflows/docker-build-reusable.yml
7575
with:
7676
dockerfile: Dockerfile
77-
tag_suffix: ""
78-
version: ${{ needs.release.outputs.version }}
79-
version_tag: ${{ needs.release.outputs.version_tag }}
80-
runs_on: "ubuntu-latest"
77+
runs_on: ubuntu-latest
78+
tags: |
79+
highcard/druid:${{ needs.release.outputs.version_tag }}-amd64
80+
artifacts.druid.gg/druid-team/druid:${{ needs.release.outputs.version_tag }}-amd64
81+
build_args: |
82+
VERSION=${{ needs.release.outputs.version_tag }}
8183
secrets:
8284
DOCKERHUB_USERNAME: ${{ vars.DOCKERHUB_USERNAME }}
8385
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
@@ -88,55 +90,111 @@ jobs:
8890
uses: ./.github/workflows/docker-build-reusable.yml
8991
with:
9092
dockerfile: Dockerfile
91-
tag_suffix: ""
92-
version: ${{ needs.release.outputs.version }}
93-
version_tag: ${{ needs.release.outputs.version_tag }}
94-
runs_on: "ubuntu-24.04-arm"
93+
runs_on: ubuntu-24.04-arm64
94+
tags: |
95+
highcard/druid:${{ needs.release.outputs.version_tag }}-arm64
96+
artifacts.druid.gg/druid-team/druid:${{ needs.release.outputs.version_tag }}-arm64
97+
build_args: |
98+
VERSION=${{ needs.release.outputs.version_tag }}
9599
secrets:
96100
DOCKERHUB_USERNAME: ${{ vars.DOCKERHUB_USERNAME }}
97101
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
98102
DRUID_ARTIFACTS_REGISTRY_USERNAME: ${{ vars.DRUID_ARTIFACTS_REGISTRY_USERNAME }}
99103
DRUID_ARTIFACTS_REGISTRY_TOKEN: ${{ secrets.DRUID_ARTIFACTS_REGISTRY_TOKEN }}
100-
docker-steamcmd:
104+
docker-base-manifest:
105+
name: Create multi-arch base manifests
106+
needs: [release, docker-base-amd64, docker-base-arm64]
107+
runs-on: ubuntu-latest
108+
if: ${{ needs.release.outputs.version != '' }}
109+
steps:
110+
- name: Login to Docker Hub
111+
uses: docker/login-action@v3
112+
with:
113+
username: ${{ vars.DOCKERHUB_USERNAME }}
114+
password: ${{ secrets.DOCKERHUB_TOKEN }}
115+
- name: Create and push base manifests
116+
uses: Noelware/docker-manifest-action@v1
117+
with:
118+
inputs: highcard/druid:${{ needs.release.outputs.version_tag }}-amd64,highcard/druid:${{ needs.release.outputs.version_tag }}-arm64
119+
tags: |
120+
highcard/druid:latest
121+
highcard/druid:stable
122+
highcard/druid:${{ needs.release.outputs.version }}
123+
highcard/druid:${{ needs.release.outputs.version_tag }}
124+
push: true
125+
126+
docker-base-manifest-artifacts:
127+
name: Create multi-arch base manifests (artifacts registry)
101128
needs: [release, docker-base-amd64, docker-base-arm64]
129+
runs-on: ubuntu-latest
130+
if: ${{ needs.release.outputs.version != '' }}
131+
steps:
132+
- name: Login to Artifacts Registry
133+
uses: docker/login-action@v3
134+
with:
135+
registry: artifacts.druid.gg
136+
username: ${{ vars.DRUID_ARTIFACTS_REGISTRY_USERNAME }}
137+
password: ${{ secrets.DRUID_ARTIFACTS_REGISTRY_TOKEN }}
138+
- name: Create and push base manifests (artifacts)
139+
uses: Noelware/docker-manifest-action@v1
140+
with:
141+
inputs: artifacts.druid.gg/druid-team/druid:${{ needs.release.outputs.version_tag }}-amd64,artifacts.druid.gg/druid-team/druid:${{ needs.release.outputs.version_tag }}-arm64
142+
tags: |
143+
artifacts.druid.gg/druid-team/druid:latest
144+
artifacts.druid.gg/druid-team/druid:stable
145+
artifacts.druid.gg/druid-team/druid:${{ needs.release.outputs.version }}
146+
artifacts.druid.gg/druid-team/druid:${{ needs.release.outputs.version_tag }}
147+
push: true
148+
149+
docker-steamcmd:
150+
needs: [release, docker-base-manifest, docker-base-manifest-artifacts]
102151
uses: ./.github/workflows/docker-build-reusable.yml
103152
with:
104153
dockerfile: Dockerfile.steamcmd
105-
tag_suffix: "-steamcmd"
106-
version: ${{ needs.release.outputs.version }}
107-
version_tag: ${{ needs.release.outputs.version_tag }}
154+
tags: |
155+
highcard/druid:latest-steamcmd
156+
highcard/druid:stable-steamcmd
157+
highcard/druid:${{ needs.release.outputs.version }}-steamcmd
158+
highcard/druid:${{ needs.release.outputs.version_tag }}-steamcmd
159+
artifacts.druid.gg/druid-team/druid:latest-steamcmd
160+
artifacts.druid.gg/druid-team/druid:stable-steamcmd
161+
artifacts.druid.gg/druid-team/druid:${{ needs.release.outputs.version }}-steamcmd
162+
artifacts.druid.gg/druid-team/druid:${{ needs.release.outputs.version_tag }}-steamcmd
163+
build_args: |
164+
VERSION=${{ needs.release.outputs.version_tag }}
108165
secrets:
109166
DOCKERHUB_USERNAME: ${{ vars.DOCKERHUB_USERNAME }}
110167
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
111168
DRUID_ARTIFACTS_REGISTRY_USERNAME: ${{ vars.DRUID_ARTIFACTS_REGISTRY_USERNAME }}
112169
DRUID_ARTIFACTS_REGISTRY_TOKEN: ${{ secrets.DRUID_ARTIFACTS_REGISTRY_TOKEN }}
170+
113171
docker-nix-amd64:
114-
needs: [release, docker-base-amd64, docker-base-arm64]
172+
needs: [release, docker-base-manifest, docker-base-manifest-artifacts]
115173
uses: ./.github/workflows/docker-build-reusable.yml
116174
with:
117175
dockerfile: Dockerfile.nix
118-
tag_suffix: "-nix"
119-
version: ${{ needs.release.outputs.version }}
120-
version_tag: ${{ needs.release.outputs.version_tag }}
121-
base_tag_suffix: ""
122-
is_nix: true
123-
runs_on: "ubuntu-latest"
176+
runs_on: ubuntu-latest
177+
tags: |
178+
highcard/druid:${{ needs.release.outputs.version_tag }}-nix-amd64
179+
artifacts.druid.gg/druid-team/druid:${{ needs.release.outputs.version_tag }}-nix-amd64
180+
build_args: |
181+
VERSION=${{ needs.release.outputs.version_tag }}
124182
secrets:
125183
DOCKERHUB_USERNAME: ${{ vars.DOCKERHUB_USERNAME }}
126184
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
127185
DRUID_ARTIFACTS_REGISTRY_USERNAME: ${{ vars.DRUID_ARTIFACTS_REGISTRY_USERNAME }}
128186
DRUID_ARTIFACTS_REGISTRY_TOKEN: ${{ secrets.DRUID_ARTIFACTS_REGISTRY_TOKEN }}
129187
docker-nix-arm64:
130-
needs: [release, docker-base-amd64, docker-base-arm64]
188+
needs: [release, docker-base-manifest, docker-base-manifest-artifacts]
131189
uses: ./.github/workflows/docker-build-reusable.yml
132190
with:
133191
dockerfile: Dockerfile.nix
134-
tag_suffix: "-nix"
135-
version: ${{ needs.release.outputs.version }}
136-
version_tag: ${{ needs.release.outputs.version_tag }}
137-
base_tag_suffix: ""
138-
is_nix: true
139-
runs_on: "ubuntu-24.04-arm"
192+
runs_on: ubuntu-24.04-arm64
193+
tags: |
194+
highcard/druid:${{ needs.release.outputs.version_tag }}-nix-arm64
195+
artifacts.druid.gg/druid-team/druid:${{ needs.release.outputs.version_tag }}-nix-arm64
196+
build_args: |
197+
VERSION=${{ needs.release.outputs.version_tag }}
140198
secrets:
141199
DOCKERHUB_USERNAME: ${{ vars.DOCKERHUB_USERNAME }}
142200
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
@@ -147,13 +205,64 @@ jobs:
147205
uses: ./.github/workflows/docker-build-reusable.yml
148206
with:
149207
dockerfile: Dockerfile.nix
150-
tag_suffix: "-nix-steamcmd"
151-
version: ${{ needs.release.outputs.version }}
152-
version_tag: ${{ needs.release.outputs.version_tag }}
153-
base_tag_suffix: "-steamcmd"
154-
is_nix: true
208+
tags: |
209+
highcard/druid:latest-nix-steamcmd
210+
highcard/druid:stable-nix-steamcmd
211+
highcard/druid:${{ needs.release.outputs.version }}-nix-steamcmd
212+
highcard/druid:${{ needs.release.outputs.version_tag }}-nix-steamcmd
213+
artifacts.druid.gg/druid-team/druid:latest-nix-steamcmd
214+
artifacts.druid.gg/druid-team/druid:stable-nix-steamcmd
215+
artifacts.druid.gg/druid-team/druid:${{ needs.release.outputs.version }}-nix-steamcmd
216+
artifacts.druid.gg/druid-team/druid:${{ needs.release.outputs.version_tag }}-nix-steamcmd
217+
build_args: |
218+
VERSION=${{ needs.release.outputs.version_tag }}-steamcmd
155219
secrets:
156220
DOCKERHUB_USERNAME: ${{ vars.DOCKERHUB_USERNAME }}
157221
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
158222
DRUID_ARTIFACTS_REGISTRY_USERNAME: ${{ vars.DRUID_ARTIFACTS_REGISTRY_USERNAME }}
159223
DRUID_ARTIFACTS_REGISTRY_TOKEN: ${{ secrets.DRUID_ARTIFACTS_REGISTRY_TOKEN }}
224+
225+
docker-nix-manifest:
226+
name: Create multi-arch nix manifests
227+
needs: [release, docker-nix-amd64, docker-nix-arm64]
228+
runs-on: ubuntu-latest
229+
if: ${{ needs.release.outputs.version != '' }}
230+
steps:
231+
- name: Login to Docker Hub
232+
uses: docker/login-action@v3
233+
with:
234+
username: ${{ vars.DOCKERHUB_USERNAME }}
235+
password: ${{ secrets.DOCKERHUB_TOKEN }}
236+
- name: Create and push nix manifests
237+
uses: Noelware/docker-manifest-action@v1
238+
with:
239+
inputs: highcard/druid:${{ needs.release.outputs.version_tag }}-nix-amd64,highcard/druid:${{ needs.release.outputs.version_tag }}-nix-arm64
240+
tags: |
241+
highcard/druid:latest-nix
242+
highcard/druid:stable-nix
243+
highcard/druid:${{ needs.release.outputs.version }}-nix
244+
highcard/druid:${{ needs.release.outputs.version_tag }}-nix
245+
push: true
246+
247+
docker-nix-manifest-artifacts:
248+
name: Create multi-arch nix manifests (artifacts registry)
249+
needs: [release, docker-nix-amd64, docker-nix-arm64]
250+
runs-on: ubuntu-latest
251+
if: ${{ needs.release.outputs.version != '' }}
252+
steps:
253+
- name: Login to Artifacts Registry
254+
uses: docker/login-action@v3
255+
with:
256+
registry: artifacts.druid.gg
257+
username: ${{ vars.DRUID_ARTIFACTS_REGISTRY_USERNAME }}
258+
password: ${{ secrets.DRUID_ARTIFACTS_REGISTRY_TOKEN }}
259+
- name: Create and push nix manifests (artifacts)
260+
uses: Noelware/docker-manifest-action@v1
261+
with:
262+
inputs: artifacts.druid.gg/druid-team/druid:${{ needs.release.outputs.version_tag }}-nix-amd64,artifacts.druid.gg/druid-team/druid:${{ needs.release.outputs.version_tag }}-nix-arm64
263+
tags: |
264+
artifacts.druid.gg/druid-team/druid:latest-nix
265+
artifacts.druid.gg/druid-team/druid:stable-nix
266+
artifacts.druid.gg/druid-team/druid:${{ needs.release.outputs.version }}-nix
267+
artifacts.druid.gg/druid-team/druid:${{ needs.release.outputs.version_tag }}-nix
268+
push: true

.github/workflows/docker-build-reusable.yml

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,21 @@ on:
55
dockerfile:
66
required: true
77
type: string
8-
tag_suffix:
8+
tags:
99
required: true
10+
description: |-
11+
Newline or comma separated list of tags to apply to this single-arch image build.
12+
Example:
13+
"highcard/druid:v0.1.170-amd64\nartifacts.druid.gg/druid-team/druid:v0.1.170-amd64"
1014
type: string
11-
version:
12-
required: true
13-
type: string
14-
version_tag:
15-
required: true
16-
type: string
17-
base_tag_suffix:
15+
build_args:
1816
required: false
17+
description: Optional newline separated build args (KEY=VALUE) passed to docker build.
1918
type: string
20-
default: ""
21-
is_nix:
22-
required: false
23-
type: boolean
24-
default: false
2519
runs_on:
2620
required: false
2721
type: string
28-
default: "ubuntu-latest"
22+
default: ubuntu-latest
2923
secrets:
3024
DOCKERHUB_USERNAME:
3125
required: true
@@ -56,23 +50,14 @@ jobs:
5650
registry: artifacts.druid.gg
5751
username: ${{ secrets.DRUID_ARTIFACTS_REGISTRY_USERNAME }}
5852
password: ${{ secrets.DRUID_ARTIFACTS_REGISTRY_TOKEN }}
59-
#stable is still pretty bleeding edge at this point
60-
- name: Build and push Docker image
53+
- name: Build and push (single-arch) image
6154
uses: docker/build-push-action@v6
6255
with:
6356
context: .
6457
file: ${{ inputs.dockerfile }}
65-
tags: |
66-
highcard/druid:latest${{ inputs.tag_suffix }}
67-
highcard/druid:stable${{ inputs.tag_suffix }}
68-
highcard/druid:${{ inputs.version }}${{ inputs.tag_suffix }}
69-
highcard/druid:${{ inputs.version_tag }}${{ inputs.tag_suffix }}
70-
artifacts.druid.gg/druid-team/druid:latest${{ inputs.tag_suffix }}
71-
artifacts.druid.gg/druid-team/druid:stable${{ inputs.tag_suffix }}
72-
artifacts.druid.gg/druid-team/druid:${{ inputs.version }}${{ inputs.tag_suffix }}
73-
artifacts.druid.gg/druid-team/druid:${{ inputs.version_tag }}${{ inputs.tag_suffix }}
58+
tags: ${{ inputs.tags }}
7459
push: true
7560
build-args: |
76-
VERSION=${{ inputs.is_nix && format('{0}{1}', inputs.version, inputs.base_tag_suffix) || inputs.version }}
7761
GIT_COMMIT=${{ github.sha }}
7862
GIT_BRANCH=${{ github.ref_name }}
63+
${{ inputs.build_args }}

0 commit comments

Comments
 (0)