Skip to content

Commit 230e18f

Browse files
authored
Nightly build comeback after broken for years (#3545)
linux-arm64 platform now using compilers from https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads supported platforms: linux-amd64, linux-arm64, windows-amd64, macos-arm64.
1 parent 340099c commit 230e18f

15 files changed

+110
-221
lines changed

.github/workflows/build_base_image.yml

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ jobs:
1919
needs: matrix_config
2020

2121
strategy:
22+
fail-fast: false
2223
matrix: ${{ fromJSON(needs.matrix_config.outputs.matrix) }}
2324

2425
defaults:
@@ -69,37 +70,22 @@ jobs:
6970
retention-days: 1
7071

7172
publish-images:
73+
needs: [matrix_config, build]
74+
7275
strategy:
7376
fail-fast: false
74-
max-parallel: 20
75-
matrix:
76-
target: [amd64, arm64, win64, macos]
77+
matrix: ${{ fromJSON(needs.matrix_config.outputs.matrix) }}
7778

78-
needs: build
79-
name: 'Docker build for ${{ matrix.target }}'
79+
name: 'Docker build for ${{ matrix.os }}-${{ matrix.cpu }}'
8080
runs-on: ubuntu-latest
8181
steps:
8282
- name: Checkout code
8383
uses: actions/checkout@v4
8484

85-
- name: Calculate artifact name
86-
id: artefact
87-
run: |
88-
if [[ '${{ matrix.target }}' == 'amd64' ]]; then
89-
artefact_name=linux_amd64
90-
elif [[ '${{ matrix.target }}' == 'arm64' ]]; then
91-
artefact_name=linux_arm64
92-
elif [[ '${{ matrix.target }}' == 'win64' ]]; then
93-
artefact_name=windows_amd64
94-
else
95-
artefact_name=macos_arm64
96-
fi
97-
echo "name=$artefact_name" >> $GITHUB_OUTPUT
98-
9985
- name: Download artefacts
10086
uses: actions/download-artifact@v4
10187
with:
102-
name: '${{ steps.artefact.outputs.name }}_rocksdb'
88+
name: '${{ matrix.os }}_${{ matrix.cpu }}_rocksdb'
10389
path: docker/dist/base_image/rocksdb
10490

10591
- name: Display structure of artefacts
@@ -114,10 +100,10 @@ jobs:
114100
- name: Build and push a base Docker image
115101
run: |
116102
cd docker/dist/base_image
117-
make 'push-${{ matrix.target }}'
103+
make 'push-${{ matrix.os }}-${{ matrix.cpu }}'
118104
119105
- name: Delete artefacts
120106
uses: geekyeggo/delete-artifact@v5
121107
with:
122108
failOnError: false
123-
name: '${{ steps.artefact.outputs.name }}_rocksdb'
109+
name: '${{ matrix.os }}_${{ matrix.cpu }}_rocksdb'

.github/workflows/nightly_build.yml

Lines changed: 29 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -15,184 +15,77 @@ on:
1515
workflow_dispatch:
1616

1717
jobs:
18-
build-amd64:
19-
name: Linux AMD64 release asset
20-
runs-on: ubuntu-latest
21-
steps:
22-
- name: Checkout code
23-
uses: actions/checkout@v4
24-
with:
25-
ref: ${{ github.ref }}
18+
matrix_config:
19+
uses: ./.github/workflows/matrix_config.yml
2620

27-
- name: Extract branch name
28-
id: extract_branch
29-
run: echo "branch_name=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT
21+
build:
22+
needs: matrix_config
3023

31-
- name: Build project
32-
id: make_dist
33-
run: |
34-
make dist-amd64
35-
cd dist
36-
ARCHIVE=$(echo *.tar.gz)
37-
tar -xzf ${ARCHIVE}
38-
NEW_ARCHIVE_DIR="nimbus-eth1-linux-amd64_${{ steps.extract_branch.outputs.branch_name }}_$(git rev-parse --short=8 HEAD)"
39-
mv ${ARCHIVE%.tar.gz} ${NEW_ARCHIVE_DIR}
40-
tar -czf ${NEW_ARCHIVE_DIR}.tar.gz ${NEW_ARCHIVE_DIR}
41-
cp ${NEW_ARCHIVE_DIR}.tar.gz nimbus-eth1-linux-amd64-nightly-latest.tar.gz
42-
echo "archive=${NEW_ARCHIVE_DIR}.tar.gz" >> $GITHUB_OUTPUT
43-
echo "archive_dir=${NEW_ARCHIVE_DIR}" >> $GITHUB_OUTPUT
24+
strategy:
25+
fail-fast: false
26+
matrix: ${{ fromJSON(needs.matrix_config.outputs.matrix) }}
4427

45-
- name: Upload archive artefact
46-
uses: actions/upload-artifact@v4
47-
with:
48-
name: linux-amd64-archive
49-
path: |
50-
./dist/${{ steps.make_dist.outputs.archive }}
51-
./dist/nimbus-eth1-linux-amd64-nightly-latest.tar.gz
52-
retention-days: 2
28+
defaults:
29+
run:
30+
shell: bash
5331

54-
- name: Upload checksum artefact
55-
uses: actions/upload-artifact@v4
56-
with:
57-
name: linux-amd64-checksum
58-
path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_execution_client.sha512sum
59-
retention-days: 2
60-
61-
build-arm64:
62-
name: Linux ARM64 release asset
32+
name: '${{ matrix.os }}-${{ matrix.cpu }}'
6333
runs-on: ubuntu-latest
64-
steps:
65-
- name: Install packages
66-
env:
67-
DEBIAN_FRONTEND: "noninteractive"
68-
TZ: "Etc/UTC"
69-
run: |
70-
sudo apt-get -qq update
71-
sudo apt-get -qq -y install binfmt-support qemu-user-static
72-
73-
- name: Checkout code
74-
uses: actions/checkout@v4
75-
with:
76-
ref: ${{ github.ref }}
77-
78-
- name: Build project
79-
id: make_dist
80-
run: |
81-
make dist-arm64
82-
cd dist
83-
ARCHIVE=$(echo *.tar.gz)
84-
tar -xzf ${ARCHIVE}
85-
NEW_ARCHIVE_DIR="nimbus-eth1-linux-arm64_${{ steps.extract_branch.outputs.branch_name }}_$(git rev-parse --short=8 HEAD)"
86-
mv ${ARCHIVE%.tar.gz} ${NEW_ARCHIVE_DIR}
87-
tar -czf ${NEW_ARCHIVE_DIR}.tar.gz ${NEW_ARCHIVE_DIR}
88-
cp ${NEW_ARCHIVE_DIR}.tar.gz nimbus-eth1-linux-arm64-nightly-latest.tar.gz
89-
echo "archive=${NEW_ARCHIVE_DIR}.tar.gz" >> $GITHUB_OUTPUT
90-
echo "archive_dir=${NEW_ARCHIVE_DIR}" >> $GITHUB_OUTPUT
91-
92-
- name: Upload archive artefact
93-
uses: actions/upload-artifact@v4
94-
with:
95-
name: linux-arm64-archive
96-
path: |
97-
./dist/${{ steps.make_dist.outputs.archive }}
98-
./dist/nimbus-eth1-linux-arm64-nightly-latest.tar.gz
99-
retention-days: 2
10034

101-
- name: Upload checksum artefact
102-
uses: actions/upload-artifact@v4
103-
with:
104-
name: linux-arm64-checksum
105-
path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_execution_client.sha512sum
106-
retention-days: 2
107-
108-
build-win64:
109-
name: Windows AMD64 release asset
110-
runs-on: ubuntu-latest
11135
steps:
11236
- name: Checkout code
11337
uses: actions/checkout@v4
11438
with:
11539
ref: ${{ github.ref }}
11640

117-
- name: Build project
118-
id: make_dist
119-
run: |
120-
make dist-win64
121-
cd dist
122-
ARCHIVE=$(echo *.tar.gz)
123-
tar -xzf ${ARCHIVE}
124-
NEW_ARCHIVE_DIR="nimbus-eth1-windows-amd64_${{ steps.extract_branch.outputs.branch_name }}_$(git rev-parse --short=8 HEAD)"
125-
mv ${ARCHIVE%.tar.gz} ${NEW_ARCHIVE_DIR}
126-
tar -czf ${NEW_ARCHIVE_DIR}.tar.gz ${NEW_ARCHIVE_DIR}
127-
cp ${NEW_ARCHIVE_DIR}.tar.gz nimbus-eth1-windows-amd64-nightly-latest.tar.gz
128-
echo "archive=${NEW_ARCHIVE_DIR}.tar.gz" >> $GITHUB_OUTPUT
129-
echo "archive_dir=${NEW_ARCHIVE_DIR}" >> $GITHUB_OUTPUT
130-
131-
- name: Upload archive artefact
132-
uses: actions/upload-artifact@v4
133-
with:
134-
name: windows-amd64-archive
135-
path: |
136-
./dist/${{ steps.make_dist.outputs.archive }}
137-
./dist/nimbus-eth1-windows-amd64-nightly-latest.tar.gz
138-
retention-days: 2
139-
140-
- name: Upload checksum artefact
141-
uses: actions/upload-artifact@v4
142-
with:
143-
name: windows-amd64-checksum
144-
path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_execution_client.sha512sum
145-
retention-days: 2
146-
147-
build-macos-arm64:
148-
name: macOS ARM64 release asset
149-
runs-on: ubuntu-latest
150-
steps:
151-
- name: Checkout code
152-
uses: actions/checkout@v4
153-
with:
154-
ref: ${{ github.ref }}
41+
- name: Extract branch name
42+
id: extract_branch
43+
run: echo "branch_name=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT
15544

15645
- name: Build project
15746
id: make_dist
15847
run: |
159-
make dist-macos-arm64
48+
make dist-${{ matrix.os }}-${{ matrix.cpu }}
16049
cd dist
16150
ARCHIVE=$(echo *.tar.gz)
16251
tar -xzf ${ARCHIVE}
163-
NEW_ARCHIVE_DIR="nimbus-eth1-macos-arm64_${{ steps.extract_branch.outputs.branch_name }}_$(git rev-parse --short=8 HEAD)"
52+
NEW_ARCHIVE_DIR="nimbus-eth1-${{ matrix.os }}-${{ matrix.cpu }}-${{ steps.extract_branch.outputs.branch_name }}-$(git rev-parse --short=8 HEAD)"
16453
mv ${ARCHIVE%.tar.gz} ${NEW_ARCHIVE_DIR}
16554
tar -czf ${NEW_ARCHIVE_DIR}.tar.gz ${NEW_ARCHIVE_DIR}
166-
cp ${NEW_ARCHIVE_DIR}.tar.gz nimbus-eth1-macos-arm64-nightly-latest.tar.gz
55+
cp ${NEW_ARCHIVE_DIR}.tar.gz nimbus-eth1-${{ matrix.os }}-${{ matrix.cpu }}-nightly-latest.tar.gz
16756
echo "archive=${NEW_ARCHIVE_DIR}.tar.gz" >> $GITHUB_OUTPUT
16857
echo "archive_dir=${NEW_ARCHIVE_DIR}" >> $GITHUB_OUTPUT
16958
17059
- name: Upload archive artefact
17160
uses: actions/upload-artifact@v4
17261
with:
173-
name: macos-arm64-archive
62+
name: ${{ matrix.os }}-${{ matrix.cpu }}-archive
17463
path: |
17564
./dist/${{ steps.make_dist.outputs.archive }}
176-
./dist/nimbus-eth1-macos-arm64-nightly-latest.tar.gz
65+
./dist/nimbus-eth1-${{ matrix.os }}-${{ matrix.cpu }}-nightly-latest.tar.gz
17766
retention-days: 2
17867

17968
- name: Upload checksum artefact
18069
uses: actions/upload-artifact@v4
18170
with:
182-
name: macos-arm64-checksum
71+
name: ${{ matrix.os }}-${{ matrix.cpu }}-checksum
18372
path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_execution_client.sha512sum
18473
retention-days: 2
18574

186-
prepare-prerelease:
187-
name: Prepare pre-release
188-
needs: [build-amd64, build-arm64, build-win64, build-macos-arm64]
75+
nightly-build-release:
76+
name: Nightly build release
77+
needs: build
18978
runs-on: ubuntu-latest
19079
steps:
19180
- name: Checkout code
19281
uses: actions/checkout@v4
19382
with:
19483
ref: ${{ github.ref }}
19584

85+
- name: Extract branch name
86+
id: extract_branch
87+
run: echo "branch_name=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT
88+
19689
- name: Download artefacts
19790
uses: actions/download-artifact@v4
19891

@@ -219,7 +112,7 @@ jobs:
219112
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
220113
with:
221114
tag_name: nightly
222-
name: 'Nightly build ("master" branch)'
115+
name: 'Nightly build ("${{ steps.extract_branch.outputs.branch_name }}" branch)'
223116
prerelease: true
224117
body_path: release_notes.md
225118
files: |
@@ -229,7 +122,7 @@ jobs:
229122
macos-arm64-archive/*
230123
231124
- name: Delete artefacts
232-
uses: geekyeggo/delete-artifact@v2
125+
uses: geekyeggo/delete-artifact@v5
233126
with:
234127
failOnError: false
235128
name: |
@@ -241,4 +134,3 @@ jobs:
241134
windows-amd64-checksum
242135
macos-arm64-archive
243136
macos-arm64-checksum
244-

Dockerfile.debug

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Nimbus
2-
# Copyright (c) 2023-2025 Status Research & Development GmbH
2+
# Copyright (c) 2024-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).

Makefile

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -118,10 +118,10 @@ VERIF_PROXY_OUT_PATH ?= build/libverifproxy/
118118
libnimbus.a \
119119
libbacktrace \
120120
rocksdb \
121-
dist-amd64 \
122-
dist-arm64 \
123-
dist-win64 \
124-
dist-macos \
121+
dist-linux-amd64 \
122+
dist-linux-arm64 \
123+
dist-windows-amd64 \
124+
dist-macos-arm64 \
125125
dist
126126

127127
ifeq ($(NIM_PARAMS),)
@@ -389,26 +389,26 @@ endif
389389
# can be found in Git history. Look for the `nimbus-eth1` commit that adds
390390
# this comment and removes `wrappers/*`.
391391

392-
dist-amd64:
392+
dist-linux-amd64:
393393
+ MAKE="$(MAKE)" \
394-
scripts/make_dist.sh amd64
394+
scripts/make_dist.sh linux-amd64
395395

396-
dist-arm64:
396+
dist-linux-arm64:
397397
+ MAKE="$(MAKE)" \
398-
scripts/make_dist.sh arm64
398+
scripts/make_dist.sh linux-arm64
399399

400-
dist-win64:
400+
dist-windows-amd64:
401401
+ MAKE="$(MAKE)" \
402-
scripts/make_dist.sh win64
402+
scripts/make_dist.sh windows-amd64
403403

404-
dist-macos:
404+
dist-macos-arm64:
405405
+ MAKE="$(MAKE)" \
406-
scripts/make_dist.sh macos
406+
scripts/make_dist.sh macos-arm64
407407

408408
dist:
409-
+ $(MAKE) --no-print-directory dist-amd64
410-
+ $(MAKE) --no-print-directory dist-arm64
411-
+ $(MAKE) --no-print-directory dist-win64
412-
+ $(MAKE) --no-print-directory dist-macos
409+
+ $(MAKE) --no-print-directory dist-linux-amd64
410+
+ $(MAKE) --no-print-directory dist-linux-arm64
411+
+ $(MAKE) --no-print-directory dist-windows-amd64
412+
+ $(MAKE) --no-print-directory dist-macos-arm64
413413

414414
endif # "variables.mk" was not included
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
# according to those terms.
1010

1111
# The build is reproducible only if this base image stays the same.
12-
FROM statusim/nimbus-eth1:dist_base_eth1_v2_amd64
12+
FROM statusim/nimbus-eth1:dist_base_eth1_v2_linux_amd64
1313

1414
SHELL ["/bin/bash", "-c"]
1515

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
# according to those terms.
1010

1111
# The build is reproducible only if this base image stays the same.
12-
FROM statusim/nimbus-eth1:dist_base_eth1_v2_arm64
12+
FROM statusim/nimbus-eth1:dist_base_eth1_v2_linux_arm64
1313

1414
SHELL ["/bin/bash", "-c"]
1515

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
# syntax=docker/dockerfile:1
1212

1313
# The build is reproducible only if this base image stays the same.
14-
FROM statusim/nimbus-eth1:dist_base_eth1_v2_macos AS osx-cross
14+
FROM statusim/nimbus-eth1:dist_base_eth1_v2_macos_arm64 AS osx-cross
1515

1616
FROM ubuntu:24.04
1717

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
# syntax=docker/dockerfile:1
1212

1313
# The build is reproducible only if this base image stays the same.
14-
FROM statusim/nimbus-eth1:dist_base_eth1_v2_win64
14+
FROM statusim/nimbus-eth1:dist_base_eth1_v2_windows_amd64
1515

1616
SHELL ["/bin/bash", "-c"]
1717

File renamed without changes.

0 commit comments

Comments
 (0)