Skip to content

Commit 007321e

Browse files
committed
Merge branch 'master' into add-modsecurity
2 parents 6b2fc23 + eeb7a8c commit 007321e

File tree

2 files changed

+241
-0
lines changed

2 files changed

+241
-0
lines changed

.github/workflows/build.yml

Lines changed: 237 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,237 @@
1+
name: Build Docker images
2+
3+
on:
4+
pull_request:
5+
branches: ["master"]
6+
push:
7+
branches: ["master"]
8+
9+
env:
10+
BASE_IMAGE: ${{ secrets.DOCKERHUB_USERNAME }}/docker-nginx-full
11+
12+
jobs:
13+
build_base_image:
14+
runs-on: ubuntu-latest
15+
name: Build ${{ matrix.platform }} base image
16+
strategy:
17+
matrix:
18+
platform:
19+
- amd64
20+
- arm64
21+
- arm/v7
22+
23+
steps:
24+
- name: Check out repository
25+
uses: actions/[email protected]
26+
27+
- name: Set build arguments
28+
run: |
29+
platform=linux/${{ matrix.platform }}
30+
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
31+
cat versions >> $GITHUB_ENV
32+
33+
- name: Docker meta
34+
id: meta
35+
uses: docker/metadata-action@v5
36+
with:
37+
images: ${{ env.BASE_IMAGE }}
38+
39+
- name: Set up QEMU
40+
uses: docker/setup-qemu-action@v3
41+
42+
- name: Set up Docker Buildx
43+
uses: docker/setup-buildx-action@v3
44+
45+
- name: Login to DockerHub
46+
uses: docker/[email protected]
47+
with:
48+
username: ${{ secrets.DOCKERHUB_USERNAME }}
49+
password: ${{ secrets.DOCKERHUB_TOKEN }}
50+
51+
- name: Build and push
52+
id: build
53+
uses: docker/build-push-action@v6
54+
with:
55+
tags: docker.io/${{ env.BASE_IMAGE }}
56+
labels: ${{ steps.meta.outputs.labels }}
57+
platforms: linux/${{ matrix.platform }}
58+
file: docker/Dockerfile
59+
outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true
60+
build-args: |
61+
OPENRESTY_VERSION=${{ env.OPENRESTY_VERSION }}
62+
CROWDSEC_OPENRESTY_BOUNCER_VERSION=${{ env.CROWDSEC_OPENRESTY_BOUNCER_VERSION }}
63+
LUA_VERSION=${{ env.LUA_VERSION }}
64+
LUAROCKS_VERSION=${{ env.LUAROCKS_VERSION }}
65+
66+
- name: Export digest
67+
run: |
68+
mkdir -p /tmp/digests
69+
digest="${{ steps.build.outputs.digest }}"
70+
touch "/tmp/digests/${digest#sha256:}"
71+
72+
- name: Upload digest
73+
uses: actions/upload-artifact@v4
74+
with:
75+
name: digests-${{ env.PLATFORM_PAIR }}
76+
path: /tmp/digests/*
77+
if-no-files-found: error
78+
retention-days: 1
79+
80+
merge_base_image:
81+
runs-on: ubuntu-latest
82+
needs:
83+
- build_base_image
84+
steps:
85+
- name: Download digests
86+
uses: actions/download-artifact@v4
87+
with:
88+
path: /tmp/digests
89+
pattern: digests-*
90+
merge-multiple: true
91+
92+
- name: Set up Docker Buildx
93+
uses: docker/setup-buildx-action@v3
94+
95+
- name: Docker meta
96+
id: meta
97+
uses: docker/metadata-action@v5
98+
with:
99+
images: ${{ env.BASE_IMAGE }}
100+
101+
- name: Login to Docker Hub
102+
uses: docker/login-action@v3
103+
with:
104+
username: ${{ secrets.DOCKERHUB_USERNAME }}
105+
password: ${{ secrets.DOCKERHUB_TOKEN }}
106+
107+
- name: Create manifest list and push
108+
working-directory: /tmp/digests
109+
run: |
110+
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
111+
$(printf '${{ env.BASE_IMAGE }}@sha256:%s ' *)
112+
113+
- name: Inspect image
114+
run: |
115+
docker buildx imagetools inspect ${{ env.BASE_IMAGE }}:${{ steps.meta.outputs.version }}
116+
117+
build_acme_client_imags:
118+
runs-on: ubuntu-latest
119+
name: Build ${{ matrix.platform }} ${{ matrix.acme_client }} image
120+
strategy:
121+
matrix:
122+
acme_client:
123+
- acmesh
124+
- acmesh-golang
125+
- certbot
126+
- certbot-node
127+
platform:
128+
- amd64
129+
- arm64
130+
- arm/v7
131+
needs:
132+
- merge_base_image
133+
134+
steps:
135+
- name: Check out repository
136+
uses: actions/[email protected]
137+
138+
- name: Set build arguments
139+
run: |
140+
platform=linux/${{ matrix.platform }}
141+
acme_client=${{ matrix.acme_client }}
142+
echo "PLATFORM_CLIENT_PAIR=${acme_client}-${platform//\//-}" >> $GITHUB_ENV
143+
cat versions >> $GITHUB_ENV
144+
145+
- name: Docker meta
146+
id: meta
147+
uses: docker/metadata-action@v5
148+
with:
149+
images: ${{ env.BASE_IMAGE }}
150+
151+
- name: Set up QEMU
152+
uses: docker/setup-qemu-action@v3
153+
154+
- name: Set up Docker Buildx
155+
uses: docker/setup-buildx-action@v3
156+
157+
- name: Login to DockerHub
158+
uses: docker/[email protected]
159+
with:
160+
username: ${{ secrets.DOCKERHUB_USERNAME }}
161+
password: ${{ secrets.DOCKERHUB_TOKEN }}
162+
163+
- name: Build and push
164+
id: build
165+
uses: docker/build-push-action@v6
166+
with:
167+
tags: docker.io/${{ env.BASE_IMAGE }}
168+
labels: ${{ steps.meta.outputs.labels }}
169+
platforms: linux/${{ matrix.platform }}
170+
file: docker/Dockerfile.${{ matrix.acme_client }}
171+
outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true
172+
build-args: |
173+
BASE_IMAGE=${{ env.BASE_IMAGE }}:${{ steps.meta.outputs.version }}
174+
175+
- name: Export digest
176+
run: |
177+
mkdir -p /tmp/digests
178+
digest="${{ steps.build.outputs.digest }}"
179+
touch "/tmp/digests/${digest#sha256:}"
180+
181+
- name: Upload digest
182+
uses: actions/upload-artifact@v4
183+
with:
184+
name: digests-${{ env.PLATFORM_CLIENT_PAIR }}
185+
path: /tmp/digests/*
186+
if-no-files-found: error
187+
retention-days: 1
188+
189+
merge_acme_client_images:
190+
runs-on: ubuntu-latest
191+
name: Merge ${{ matrix.acme_client }} platform images
192+
strategy:
193+
matrix:
194+
acme_client:
195+
- acmesh
196+
- acmesh-golang
197+
- certbot
198+
- certbot-node
199+
needs:
200+
- build_acme_client_imags
201+
steps:
202+
- name: Download digests
203+
uses: actions/download-artifact@v4
204+
with:
205+
path: /tmp/digests
206+
pattern: digests-${{ matrix.acme_client }}-linux*
207+
merge-multiple: true
208+
209+
- name: Set up Docker Buildx
210+
uses: docker/setup-buildx-action@v3
211+
212+
- name: Docker meta
213+
id: meta
214+
uses: docker/metadata-action@v5
215+
with:
216+
images: ${{ env.BASE_IMAGE }}
217+
tags: |
218+
type=schedule
219+
type=ref,prefix=${{ matrix.acme_client }}-,event=branch
220+
type=ref,prefix=${{ matrix.acme_client }}-,event=tag
221+
type=ref,prefix=${{ matrix.acme_client }}-,event=pr
222+
223+
- name: Login to Docker Hub
224+
uses: docker/login-action@v3
225+
with:
226+
username: ${{ secrets.DOCKERHUB_USERNAME }}
227+
password: ${{ secrets.DOCKERHUB_TOKEN }}
228+
229+
- name: Create manifest list and push
230+
working-directory: /tmp/digests
231+
run: |
232+
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
233+
$(printf '${{ env.BASE_IMAGE }}@sha256:%s ' *)
234+
235+
- name: Inspect image
236+
run: |
237+
docker buildx imagetools inspect ${{ env.BASE_IMAGE }}:${{ steps.meta.outputs.version }}

versions

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
OPENRESTY_VERSION=1.25.3.2
2+
CROWDSEC_OPENRESTY_BOUNCER_VERSION=0.1.7
3+
LUA_VERSION=5.1.5
4+
LUAROCKS_VERSION=3.3.1

0 commit comments

Comments
 (0)