Skip to content

Commit 85f0e55

Browse files
authored
Add CI script for docker base image builder (#3528)
* Add CI script for docker base image builder * Remove unused dist build rule from makefile * lint * Fix nightly_build.yml get branch name
1 parent a5ba304 commit 85f0e55

22 files changed

+271
-388
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# nimbus-execution-client
2+
# Copyright (c) 2025 Status Research & Development GmbH
3+
# Licensed under either of
4+
# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE))
5+
# * MIT license ([LICENSE-MIT](LICENSE-MIT))
6+
# at your option.
7+
# This file may not be copied, modified, or distributed except according to
8+
# those terms.
9+
10+
name: Build Docker Base Images
11+
on:
12+
workflow_dispatch:
13+
14+
jobs:
15+
build:
16+
strategy:
17+
fail-fast: false
18+
max-parallel: 20
19+
matrix:
20+
target: [amd64, arm64, win64, macos]
21+
22+
name: 'Docker build for ${{ matrix.target }}'
23+
runs-on: ubuntu-latest
24+
steps:
25+
- name: Checkout code
26+
uses: actions/checkout@v4
27+
- name: Login to Docker Hub
28+
uses: docker/login-action@v3
29+
with:
30+
username: ${{ secrets.DOCKERHUB_USERNAME }}
31+
password: ${{ secrets.DOCKERHUB_TOKEN }}
32+
- name: Build and push a base Docker image
33+
run: |
34+
cd docker/dist/base_image
35+
make 'push-${{ matrix.target }}'

.github/workflows/ci.yml

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,23 @@ on:
2121
- '.github/workflows/portal*.yml'
2222
- 'nimbus_verified_proxy/**'
2323
- '.github/workflows/nimbus_verified_proxy.yml'
24+
- '.github/workflows/build_base_image.yml'
25+
- 'docker/**'
26+
27+
pull_request:
28+
paths-ignore:
29+
- 'doc/**'
30+
- 'docs/**'
31+
- '**/*.md'
32+
- '**/*.yml'
33+
- 'hive_integration/**'
34+
- 'portal/**'
35+
- '.github/workflows/portal*.yml'
36+
- 'nimbus_verified_proxy/**'
37+
- '.github/workflows/nimbus_verified_proxy.yml'
38+
- '.github/workflows/build_base_image.yml'
39+
- 'docker/**'
2440

25-
# Disable `pull_request`. Experimenting with using only `push` for PRs.
26-
#pull_request:
27-
# paths-ignore: ['doc/**', 'docs/**', '**/*.md', 'hive_integration/**']
2841
workflow_dispatch:
2942

3043
jobs:

.github/workflows/kurtosis.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ on:
2323
- '.github/workflows/portal*.yml'
2424
- 'nimbus_verified_proxy/**'
2525
- '.github/workflows/nimbus_verified_proxy.yml'
26+
- '.github/workflows/build_base_image.yml'
27+
- 'docker/**'
28+
2629
pull_request:
2730
branches:
2831
- master
@@ -35,6 +38,8 @@ on:
3538
- '.github/workflows/portal*.yml'
3639
- 'nimbus_verified_proxy/**'
3740
- '.github/workflows/nimbus_verified_proxy.yml'
41+
- '.github/workflows/build_base_image.yml'
42+
- 'docker/**'
3843

3944
jobs:
4045
build:

.github/workflows/nightly_build.yml

Lines changed: 41 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Nimbus
2-
# Copyright (c) 2020-2024 Status Research & Development GmbH
2+
# Copyright (c) 2020-2025 Status Research & Development GmbH
33
# Licensed under either of
44
# * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
55
# http://www.apache.org/licenses/LICENSE-2.0)
@@ -24,33 +24,37 @@ jobs:
2424
with:
2525
ref: ${{ github.ref }}
2626

27+
- name: Extract branch name
28+
id: extract_branch
29+
run: echo "branch_name=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT
30+
2731
- name: Build project
2832
id: make_dist
2933
run: |
3034
make dist-amd64
3135
cd dist
3236
ARCHIVE=$(echo *.tar.gz)
3337
tar -xzf ${ARCHIVE}
34-
NEW_ARCHIVE_DIR="nimbus-eth1_Linux_amd64_$(date +%Y%m%d)_$(git rev-parse --short=8 HEAD)"
38+
NEW_ARCHIVE_DIR="nimbus-eth1-linux-amd64_${{ steps.extract_branch.outputs.branch_name }}_$(git rev-parse --short=8 HEAD)"
3539
mv ${ARCHIVE%.tar.gz} ${NEW_ARCHIVE_DIR}
3640
tar -czf ${NEW_ARCHIVE_DIR}.tar.gz ${NEW_ARCHIVE_DIR}
37-
cp ${NEW_ARCHIVE_DIR}.tar.gz nimbus-eth1_Linux_amd64_nightly_latest.tar.gz
41+
cp ${NEW_ARCHIVE_DIR}.tar.gz nimbus-eth1-linux-amd64-nightly-latest.tar.gz
3842
echo "archive=${NEW_ARCHIVE_DIR}.tar.gz" >> $GITHUB_OUTPUT
3943
echo "archive_dir=${NEW_ARCHIVE_DIR}" >> $GITHUB_OUTPUT
4044
4145
- name: Upload archive artefact
4246
uses: actions/upload-artifact@v4
4347
with:
44-
name: Linux_amd64_archive
48+
name: linux-amd64-archive
4549
path: |
4650
./dist/${{ steps.make_dist.outputs.archive }}
47-
./dist/nimbus-eth1_Linux_amd64_nightly_latest.tar.gz
51+
./dist/nimbus-eth1-linux-amd64-nightly-latest.tar.gz
4852
retention-days: 2
4953

5054
- name: Upload checksum artefact
5155
uses: actions/upload-artifact@v4
5256
with:
53-
name: Linux_amd64_checksum
57+
name: linux-amd64-checksum
5458
path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_execution_client.sha512sum
5559
retention-days: 2
5660

@@ -78,26 +82,26 @@ jobs:
7882
cd dist
7983
ARCHIVE=$(echo *.tar.gz)
8084
tar -xzf ${ARCHIVE}
81-
NEW_ARCHIVE_DIR="nimbus-eth1_Linux_arm64v8_$(date +%Y%m%d)_$(git rev-parse --short=8 HEAD)"
85+
NEW_ARCHIVE_DIR="nimbus-eth1-linux-arm64_${{ steps.extract_branch.outputs.branch_name }}_$(git rev-parse --short=8 HEAD)"
8286
mv ${ARCHIVE%.tar.gz} ${NEW_ARCHIVE_DIR}
8387
tar -czf ${NEW_ARCHIVE_DIR}.tar.gz ${NEW_ARCHIVE_DIR}
84-
cp ${NEW_ARCHIVE_DIR}.tar.gz nimbus-eth1_Linux_arm64_nightly_latest.tar.gz
88+
cp ${NEW_ARCHIVE_DIR}.tar.gz nimbus-eth1-linux-arm64-nightly-latest.tar.gz
8589
echo "archive=${NEW_ARCHIVE_DIR}.tar.gz" >> $GITHUB_OUTPUT
8690
echo "archive_dir=${NEW_ARCHIVE_DIR}" >> $GITHUB_OUTPUT
8791
8892
- name: Upload archive artefact
8993
uses: actions/upload-artifact@v4
9094
with:
91-
name: Linux_arm64_archive
95+
name: linux-arm64-archive
9296
path: |
9397
./dist/${{ steps.make_dist.outputs.archive }}
94-
./dist/nimbus-eth1_Linux_arm64_nightly_latest.tar.gz
98+
./dist/nimbus-eth1-linux-arm64-nightly-latest.tar.gz
9599
retention-days: 2
96100

97101
- name: Upload checksum artefact
98102
uses: actions/upload-artifact@v4
99103
with:
100-
name: Linux_arm64_checksum
104+
name: linux-arm64-checksum
101105
path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_execution_client.sha512sum
102106
retention-days: 2
103107

@@ -117,26 +121,26 @@ jobs:
117121
cd dist
118122
ARCHIVE=$(echo *.tar.gz)
119123
tar -xzf ${ARCHIVE}
120-
NEW_ARCHIVE_DIR="nimbus-eth1_Windows_amd64_$(date +%Y%m%d)_$(git rev-parse --short=8 HEAD)"
124+
NEW_ARCHIVE_DIR="nimbus-eth1-windows-amd64_${{ steps.extract_branch.outputs.branch_name }}_$(git rev-parse --short=8 HEAD)"
121125
mv ${ARCHIVE%.tar.gz} ${NEW_ARCHIVE_DIR}
122126
tar -czf ${NEW_ARCHIVE_DIR}.tar.gz ${NEW_ARCHIVE_DIR}
123-
cp ${NEW_ARCHIVE_DIR}.tar.gz nimbus-eth1_Windows_amd64_nightly_latest.tar.gz
127+
cp ${NEW_ARCHIVE_DIR}.tar.gz nimbus-eth1-windows-amd64-nightly-latest.tar.gz
124128
echo "archive=${NEW_ARCHIVE_DIR}.tar.gz" >> $GITHUB_OUTPUT
125129
echo "archive_dir=${NEW_ARCHIVE_DIR}" >> $GITHUB_OUTPUT
126130
127131
- name: Upload archive artefact
128132
uses: actions/upload-artifact@v4
129133
with:
130-
name: Windows_amd64_archive
134+
name: windows-amd64-archive
131135
path: |
132136
./dist/${{ steps.make_dist.outputs.archive }}
133-
./dist/nimbus-eth1_Windows_amd64_nightly_latest.tar.gz
137+
./dist/nimbus-eth1-windows-amd64-nightly-latest.tar.gz
134138
retention-days: 2
135139

136140
- name: Upload checksum artefact
137141
uses: actions/upload-artifact@v4
138142
with:
139-
name: Windows_amd64_checksum
143+
name: windows-amd64-checksum
140144
path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_execution_client.sha512sum
141145
retention-days: 2
142146

@@ -156,26 +160,26 @@ jobs:
156160
cd dist
157161
ARCHIVE=$(echo *.tar.gz)
158162
tar -xzf ${ARCHIVE}
159-
NEW_ARCHIVE_DIR="nimbus-eth1_macOS_arm64_$(date +%Y%m%d)_$(git rev-parse --short=8 HEAD)"
163+
NEW_ARCHIVE_DIR="nimbus-eth1-macos-arm64_${{ steps.extract_branch.outputs.branch_name }}_$(git rev-parse --short=8 HEAD)"
160164
mv ${ARCHIVE%.tar.gz} ${NEW_ARCHIVE_DIR}
161165
tar -czf ${NEW_ARCHIVE_DIR}.tar.gz ${NEW_ARCHIVE_DIR}
162-
cp ${NEW_ARCHIVE_DIR}.tar.gz nimbus-eth1_macOS_arm64_nightly_latest.tar.gz
166+
cp ${NEW_ARCHIVE_DIR}.tar.gz nimbus-eth1-macos-arm64-nightly-latest.tar.gz
163167
echo "archive=${NEW_ARCHIVE_DIR}.tar.gz" >> $GITHUB_OUTPUT
164168
echo "archive_dir=${NEW_ARCHIVE_DIR}" >> $GITHUB_OUTPUT
165169
166170
- name: Upload archive artefact
167171
uses: actions/upload-artifact@v4
168172
with:
169-
name: macOS_arm64_archive
173+
name: macos-arm64-archive
170174
path: |
171175
./dist/${{ steps.make_dist.outputs.archive }}
172-
./dist/nimbus-eth1_macOS_arm64_nightly_latest.tar.gz
176+
./dist/nimbus-eth1-macos-arm64-nightly-latest.tar.gz
173177
retention-days: 2
174178

175179
- name: Upload checksum artefact
176180
uses: actions/upload-artifact@v4
177181
with:
178-
name: macOS_arm64_checksum
182+
name: macos-arm64-checksum
179183
path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_execution_client.sha512sum
180184
retention-days: 2
181185

@@ -200,13 +204,13 @@ jobs:
200204
\`\`\`text
201205
EOF
202206
echo '# Linux AMD64' >> release_notes.md
203-
cat Linux_amd64_checksum/* >> release_notes.md
207+
cat linux-amd64-checksum/* >> release_notes.md
204208
echo '# Linux ARM64' >> release_notes.md
205-
cat Linux_arm64_checksum/* >> release_notes.md
209+
cat linux-arm64-checksum/* >> release_notes.md
206210
echo '# Windows AMD64' >> release_notes.md
207-
cat Windows_amd64_checksum/* >> release_notes.md
211+
cat windows-amd64-checksum/* >> release_notes.md
208212
echo '# macOS ARM64' >> release_notes.md
209-
cat macOS_arm64_checksum/* >> release_notes.md
213+
cat macos-arm64-checksum/* >> release_notes.md
210214
echo '```' >> release_notes.md
211215
212216
- name: Update Nightly Release
@@ -219,22 +223,22 @@ jobs:
219223
prerelease: true
220224
body_path: release_notes.md
221225
files: |
222-
Linux_amd64_archive/*
223-
Linux_arm64_archive/*
224-
Windows_amd64_archive/*
225-
macOS_arm64_archive/*
226+
linux-amd64-archive/*
227+
linux-arm64-archive/*
228+
windows-amd64-archive/*
229+
macos-arm64-archive/*
226230
227231
- name: Delete artefacts
228232
uses: geekyeggo/delete-artifact@v2
229233
with:
230234
failOnError: false
231235
name: |
232-
Linux_amd64_archive
233-
Linux_amd64_checksum
234-
Linux_arm64_archive
235-
Linux_arm64_checksum
236-
Windows_amd64_archive
237-
Windows_amd64_checksum
238-
macOS_arm64_archive
239-
macOS_arm64_checksum
236+
linux-amd64-archive
237+
linux-amd64-checksum
238+
linux-arm64-archive
239+
linux-arm64-checksum
240+
windows-amd64-archive
241+
windows-amd64-checksum
242+
macos-arm64-archive
243+
macos-arm64-checksum
240244

.github/workflows/portal_nightly_docker.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Nimbus
2-
# Copyright (c) 2023-2024 Status Research & Development GmbH
2+
# Copyright (c) 2023-2025 Status Research & Development GmbH
33
# Licensed and distributed under either of
44
# * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT).
55
# * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0).
@@ -21,7 +21,7 @@ jobs:
2121
- name: Checkout code
2222
uses: actions/checkout@v4
2323
- name: Login to Docker Hub
24-
uses: docker/login-action@v1
24+
uses: docker/login-action@v3
2525
with:
2626
username: ${{ secrets.DOCKERHUB_USERNAME }}
2727
password: ${{ secrets.DOCKERHUB_TOKEN }}

0 commit comments

Comments
 (0)