457 lines
18 KiB
YAML
457 lines
18 KiB
YAML
# beacon_chain
|
|
# Copyright (c) 2020-2024 Status Research & Development GmbH
|
|
# Licensed and distributed under either of
|
|
# * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT).
|
|
# * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0).
|
|
# at your option. This file may not be copied, modified, or distributed except according to those terms.
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*' # "v1.2.3"
|
|
|
|
name: Upload Release Asset
|
|
|
|
jobs:
|
|
build-amd64:
|
|
name: Linux AMD64 release asset
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v2
|
|
- name: Build project
|
|
id: make_dist
|
|
run: |
|
|
make dist-amd64
|
|
cd dist
|
|
ARCHIVE=$(echo nimbus-eth2_Linux_amd64_*.tar.gz)
|
|
echo "::set-output name=archive::"${ARCHIVE}
|
|
echo "::set-output name=archive_dir::"${ARCHIVE%.tar.gz}
|
|
tar -xzf ${ARCHIVE} ${ARCHIVE%.tar.gz}/build/nimbus_beacon_node.sha512sum
|
|
tar -xzf ${ARCHIVE} ${ARCHIVE%.tar.gz}/build/nimbus_validator_client.sha512sum
|
|
- name: Upload archive artefact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Linux_amd64_archive
|
|
path: ./dist/${{ steps.make_dist.outputs.archive }}
|
|
retention-days: 2
|
|
- name: Upload BN checksum artefact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Linux_amd64_checksum
|
|
path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_beacon_node.sha512sum
|
|
retention-days: 2
|
|
- name: Upload VC checksum artefact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Linux_amd64_checksum
|
|
path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_validator_client.sha512sum
|
|
retention-days: 2
|
|
- name: Login to Docker Hub
|
|
uses: docker/login-action@v1
|
|
with:
|
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
- name: Build and push a Docker images for end users
|
|
run: |
|
|
cd dist
|
|
tar -xzf ${{ steps.make_dist.outputs.archive }}
|
|
mv ${{ steps.make_dist.outputs.archive_dir }} ../docker/dist/binaries/nimbus-eth2
|
|
cd ../docker/dist/binaries
|
|
REFNAME="${{ github.ref }}"
|
|
TAG="${REFNAME#refs/tags/}"
|
|
DOCKER_BUILDKIT=1 docker build -f Dockerfile.bn.amd64 -t statusim/nimbus-eth2:amd64-${TAG} -t statusim/nimbus-eth2:amd64-latest .
|
|
docker push statusim/nimbus-eth2:amd64-${TAG}
|
|
docker push statusim/nimbus-eth2:amd64-latest
|
|
|
|
DOCKER_BUILDKIT=1 docker build -f Dockerfile.vc.amd64 -t statusim/nimbus-validator-client:amd64-${TAG} -t statusim/nimbus-validator-client:amd64-latest .
|
|
docker push statusim/nimbus-validator-client:amd64-${TAG}
|
|
docker push statusim/nimbus-validator-client:amd64-latest
|
|
- name: Setup ruby # Needed for fpm
|
|
uses: ruby/setup-ruby@v1
|
|
with:
|
|
ruby-version: '3.1' # Not needed with a .ruby-version file
|
|
- name: Create RPM/DEB
|
|
run: |
|
|
scripts/make_packages.sh -b nimbus_beacon_node -t dist/*.tar.gz --install-fpm
|
|
scripts/make_packages.sh -b nimbus_validator_client -t dist/*.tar.gz --install-fpm
|
|
- name: Upload DEB
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Linux_amd64_packages
|
|
path: |
|
|
./dist/*.deb
|
|
./dist/*.rpm
|
|
retention-days: 2
|
|
build-arm64:
|
|
name: Linux ARM64 release asset
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Install packages
|
|
env:
|
|
DEBIAN_FRONTEND: "noninteractive"
|
|
TZ: "Etc/UTC"
|
|
run: |
|
|
sudo apt-get -qq update
|
|
sudo apt-get -qq -y install binfmt-support qemu-user-static
|
|
- name: Checkout code
|
|
uses: actions/checkout@v2
|
|
- name: Build project
|
|
id: make_dist
|
|
run: |
|
|
make dist-arm64
|
|
cd dist
|
|
ARCHIVE=$(echo nimbus-eth2_Linux_arm64v8_*.tar.gz)
|
|
echo "::set-output name=archive::"${ARCHIVE}
|
|
echo "::set-output name=archive_dir::"${ARCHIVE%.tar.gz}
|
|
tar -xzf ${ARCHIVE} ${ARCHIVE%.tar.gz}/build/nimbus_beacon_node.sha512sum
|
|
tar -xzf ${ARCHIVE} ${ARCHIVE%.tar.gz}/build/nimbus_validator_client.sha512sum
|
|
- name: Upload archive artefact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Linux_arm64_archive
|
|
path: ./dist/${{ steps.make_dist.outputs.archive }}
|
|
retention-days: 2
|
|
- name: Upload BN checksum artefact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Linux_arm64_checksum
|
|
path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_beacon_node.sha512sum
|
|
retention-days: 2
|
|
- name: Upload VC checksum artefact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Linux_arm64_checksum
|
|
path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_validator_client.sha512sum
|
|
retention-days: 2
|
|
- name: Login to Docker Hub
|
|
uses: docker/login-action@v1
|
|
with:
|
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
- name: Build and push a Docker images for end users
|
|
run: |
|
|
cd dist
|
|
tar -xzf ${{ steps.make_dist.outputs.archive }}
|
|
mv ${{ steps.make_dist.outputs.archive_dir }} ../docker/dist/binaries/nimbus-eth2
|
|
cd ../docker/dist/binaries
|
|
REFNAME="${{ github.ref }}"
|
|
TAG="${REFNAME#refs/tags/}"
|
|
cp -a /usr/bin/qemu-aarch64-static .
|
|
|
|
DOCKER_BUILDKIT=1 docker build -f Dockerfile.bn.arm64 -t statusim/nimbus-eth2:arm64-${TAG} -t statusim/nimbus-eth2:arm64-latest .
|
|
docker push statusim/nimbus-eth2:arm64-${TAG}
|
|
docker push statusim/nimbus-eth2:arm64-latest
|
|
|
|
DOCKER_BUILDKIT=1 docker build -f Dockerfile.vc.arm64 -t statusim/nimbus-validator-client:arm64-${TAG} -t statusim/nimbus-validator-client:arm64-latest .
|
|
docker push statusim/nimbus-validator-client:arm64-${TAG}
|
|
docker push statusim/nimbus-validator-client:arm64-latest
|
|
- name: Setup ruby # Needed for fpm
|
|
uses: ruby/setup-ruby@v1
|
|
with:
|
|
ruby-version: '3.1' # Not needed with a .ruby-version file
|
|
- name: Create RPM/DEB
|
|
run: |
|
|
scripts/make_packages.sh -b nimbus_beacon_node -t dist/*.tar.gz --install-fpm
|
|
scripts/make_packages.sh -b nimbus_validator_client -t dist/*.tar.gz --install-fpm
|
|
- name: Upload DEB
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Linux_arm64_packages
|
|
path: |
|
|
./dist/*.deb
|
|
./dist/*.rpm
|
|
retention-days: 2
|
|
build-arm:
|
|
name: Linux ARM release asset
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Install packages
|
|
env:
|
|
DEBIAN_FRONTEND: "noninteractive"
|
|
TZ: "Etc/UTC"
|
|
run: |
|
|
sudo apt-get -qq update
|
|
sudo apt-get -qq -y install binfmt-support qemu-user-static
|
|
- name: Checkout code
|
|
uses: actions/checkout@v2
|
|
- name: Build project
|
|
id: make_dist
|
|
run: |
|
|
make dist-arm
|
|
cd dist
|
|
ARCHIVE=$(echo nimbus-eth2_Linux_arm32v7_*.tar.gz)
|
|
echo "::set-output name=archive::"${ARCHIVE}
|
|
echo "::set-output name=archive_dir::"${ARCHIVE%.tar.gz}
|
|
tar -xzf ${ARCHIVE} ${ARCHIVE%.tar.gz}/build/nimbus_beacon_node.sha512sum
|
|
tar -xzf ${ARCHIVE} ${ARCHIVE%.tar.gz}/build/nimbus_validator_client.sha512sum
|
|
- name: Upload archive artefact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Linux_arm_archive
|
|
path: ./dist/${{ steps.make_dist.outputs.archive }}
|
|
retention-days: 2
|
|
- name: Upload BN checksum artefact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Linux_arm_checksum
|
|
path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_beacon_node.sha512sum
|
|
retention-days: 2
|
|
- name: Upload VC checksum artefact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Linux_arm_checksum
|
|
path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_validator_client.sha512sum
|
|
retention-days: 2
|
|
- name: Login to Docker Hub
|
|
uses: docker/login-action@v1
|
|
with:
|
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
- name: Build and push a Docker images for end users
|
|
run: |
|
|
cd dist
|
|
tar -xzf ${{ steps.make_dist.outputs.archive }}
|
|
mv ${{ steps.make_dist.outputs.archive_dir }} ../docker/dist/binaries/nimbus-eth2
|
|
cd ../docker/dist/binaries
|
|
REFNAME="${{ github.ref }}"
|
|
TAG="${REFNAME#refs/tags/}"
|
|
cp -a /usr/bin/qemu-arm-static .
|
|
DOCKER_BUILDKIT=1 docker build -f Dockerfile.bn.arm -t statusim/nimbus-eth2:arm-${TAG} -t statusim/nimbus-eth2:arm-latest .
|
|
docker push statusim/nimbus-eth2:arm-${TAG}
|
|
docker push statusim/nimbus-eth2:arm-latest
|
|
|
|
DOCKER_BUILDKIT=1 docker build -f Dockerfile.vc.arm -t statusim/nimbus-validator-client:arm-${TAG} -t statusim/nimbus-validator-client:arm-latest .
|
|
docker push statusim/nimbus-validator-client:arm-${TAG}
|
|
docker push statusim/nimbus-validator-client:arm-latest
|
|
|
|
- name: Setup ruby # Needed for fpm
|
|
uses: ruby/setup-ruby@v1
|
|
with:
|
|
ruby-version: '3.1' # Not needed with a .ruby-version file
|
|
- name: Create RPM/DEB
|
|
run: |
|
|
scripts/make_packages.sh -b nimbus_beacon_node -t dist/*.tar.gz --install-fpm
|
|
scripts/make_packages.sh -b nimbus_validator_client -t dist/*.tar.gz --install-fpm
|
|
- name: Upload DEB
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Linux_arm_packages
|
|
path: |
|
|
./dist/*.deb
|
|
./dist/*.rpm
|
|
retention-days: 2
|
|
build-win64:
|
|
name: Windows AMD64 release asset
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v2
|
|
- name: Build project
|
|
id: make_dist
|
|
run: |
|
|
make dist-win64
|
|
cd dist
|
|
ARCHIVE=$(echo nimbus-eth2_Windows_amd64_*.tar.gz)
|
|
echo "::set-output name=archive::"${ARCHIVE}
|
|
echo "::set-output name=archive_dir::"${ARCHIVE%.tar.gz}
|
|
tar -xzf ${ARCHIVE} ${ARCHIVE%.tar.gz}/build/nimbus_beacon_node.sha512sum
|
|
tar -xzf ${ARCHIVE} ${ARCHIVE%.tar.gz}/build/nimbus_validator_client.sha512sum
|
|
- name: Upload archive artefact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Windows_amd64_archive
|
|
path: ./dist/${{ steps.make_dist.outputs.archive }}
|
|
retention-days: 2
|
|
- name: Upload BN checksum artefact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Windows_amd64_checksum
|
|
path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_beacon_node.sha512sum
|
|
retention-days: 2
|
|
- name: Upload VC checksum artefact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: Windows_amd64_checksum
|
|
path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_validator_client.sha512sum
|
|
retention-days: 2
|
|
build-macos-amd64:
|
|
name: macOS AMD64 release asset
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v2
|
|
- name: Build project
|
|
id: make_dist
|
|
run: |
|
|
make dist-macos
|
|
cd dist
|
|
ARCHIVE=$(echo nimbus-eth2_macOS_amd64_*.tar.gz)
|
|
echo "::set-output name=archive::"${ARCHIVE}
|
|
echo "::set-output name=archive_dir::"${ARCHIVE%.tar.gz}
|
|
tar -xzf ${ARCHIVE} ${ARCHIVE%.tar.gz}/build/nimbus_beacon_node.sha512sum
|
|
tar -xzf ${ARCHIVE} ${ARCHIVE%.tar.gz}/build/nimbus_validator_client.sha512sum
|
|
- name: Upload archive artefact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: macOS_amd64_archive
|
|
path: ./dist/${{ steps.make_dist.outputs.archive }}
|
|
retention-days: 2
|
|
- name: Upload BN checksum artefact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: macOS_amd64_checksum
|
|
path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_beacon_node.sha512sum
|
|
retention-days: 2
|
|
- name: Upload VC checksum artefact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: macOS_amd64_checksum
|
|
path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_validator_client.sha512sum
|
|
retention-days: 2
|
|
build-macos-arm64:
|
|
name: macOS ARM64 release asset
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v2
|
|
- name: Build project
|
|
id: make_dist
|
|
run: |
|
|
make dist-macos-arm64
|
|
cd dist
|
|
ARCHIVE=$(echo nimbus-eth2_macOS_arm64_*.tar.gz)
|
|
echo "::set-output name=archive::"${ARCHIVE}
|
|
echo "::set-output name=archive_dir::"${ARCHIVE%.tar.gz}
|
|
tar -xzf ${ARCHIVE} ${ARCHIVE%.tar.gz}/build/nimbus_beacon_node.sha512sum
|
|
tar -xzf ${ARCHIVE} ${ARCHIVE%.tar.gz}/build/nimbus_validator_client.sha512sum
|
|
- name: Upload archive artefact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: macOS_arm64_archive
|
|
path: ./dist/${{ steps.make_dist.outputs.archive }}
|
|
retention-days: 2
|
|
- name: Upload BN checksum artefact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: macOS_arm64_checksum
|
|
path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_beacon_node.sha512sum
|
|
retention-days: 2
|
|
- name: Upload VC checksum artefact
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: macOS_arm64_checksum
|
|
path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_validator_client.sha512sum
|
|
retention-days: 2
|
|
prepare-release:
|
|
name: Prepare release draft
|
|
needs: [build-amd64, build-arm64, build-arm, build-win64, build-macos-amd64, build-macos-arm64]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Download artefacts
|
|
uses: actions/download-artifact@v3
|
|
- name: Create release notes
|
|
run: |
|
|
cat > release_notes.md <<EOF
|
|
## Notes
|
|
|
|
## Urgency guidelines
|
|
|
|
\`low-urgency\`: update at your own convenience, sometime within our normal update cycle of two weeks
|
|
|
|
\`medium-urgency\`: may contain an important stability fix, it is better to update sooner rather than later
|
|
|
|
\`high-urgency\`: update as soon as you can, this is a critical update required for Nimbus to function correctly
|
|
|
|
## SHA512 checksums
|
|
|
|
\`\`\`text
|
|
EOF
|
|
echo '# Linux AMD64' >> release_notes.md
|
|
cat Linux_amd64_checksum/* >> release_notes.md
|
|
echo '# Linux ARM64' >> release_notes.md
|
|
cat Linux_arm64_checksum/* >> release_notes.md
|
|
echo '# Linux ARM' >> release_notes.md
|
|
cat Linux_arm_checksum/* >> release_notes.md
|
|
echo '# Windows AMD64' >> release_notes.md
|
|
cat Windows_amd64_checksum/* >> release_notes.md
|
|
echo '# macOS AMD64' >> release_notes.md
|
|
cat macOS_amd64_checksum/* >> release_notes.md
|
|
echo '# macOS ARM64' >> release_notes.md
|
|
cat macOS_arm64_checksum/* >> release_notes.md
|
|
echo '```' >> release_notes.md
|
|
- name: Create release
|
|
id: create_release
|
|
uses: softprops/action-gh-release@v1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
draft: true
|
|
prerelease: false
|
|
body_path: release_notes.md
|
|
files: |
|
|
Linux_amd64_archive/*
|
|
Linux_amd64_packages/*
|
|
Linux_arm64_archive/*
|
|
Linux_arm64_packages/*
|
|
Linux_arm_archive/*
|
|
Linux_arm_packages/*
|
|
Windows_amd64_archive/*
|
|
macOS_amd64_archive/*
|
|
macOS_arm64_archive/*
|
|
- name: Delete artefacts
|
|
uses: geekyeggo/delete-artifact@v1
|
|
with:
|
|
failOnError: false
|
|
name: |
|
|
Linux_amd64_archive
|
|
Linux_amd64_checksum
|
|
Linux_amd64_packages
|
|
Linux_arm64_archive
|
|
Linux_arm64_checksum
|
|
Linux_arm64_packages
|
|
Linux_arm_archive
|
|
Linux_arm_checksum
|
|
Linux_arm_packages
|
|
Windows_amd64_archive
|
|
Windows_amd64_checksum
|
|
macOS_amd64_archive
|
|
macOS_amd64_checksum
|
|
macOS_arm64_archive
|
|
macOS_arm64_checksum
|
|
|
|
- name: Login to Docker Hub
|
|
uses: docker/login-action@v1
|
|
with:
|
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
- name: Build multi-arch Docker images
|
|
run: |
|
|
REFNAME="${{ github.ref }}"
|
|
TAG="${REFNAME#refs/tags/}"
|
|
docker manifest create \
|
|
statusim/nimbus-eth2:multiarch-${TAG} \
|
|
--amend statusim/nimbus-eth2:amd64-${TAG} \
|
|
--amend statusim/nimbus-eth2:arm64-${TAG} \
|
|
--amend statusim/nimbus-eth2:arm-${TAG}
|
|
docker manifest push statusim/nimbus-eth2:multiarch-${TAG}
|
|
docker manifest create \
|
|
statusim/nimbus-eth2:multiarch-latest \
|
|
--amend statusim/nimbus-eth2:amd64-latest \
|
|
--amend statusim/nimbus-eth2:arm64-latest \
|
|
--amend statusim/nimbus-eth2:arm-latest
|
|
docker manifest push statusim/nimbus-eth2:multiarch-latest
|
|
docker manifest create \
|
|
statusim/nimbus-validator-client:multiarch-${TAG} \
|
|
--amend statusim/nimbus-validator-client:amd64-${TAG} \
|
|
--amend statusim/nimbus-validator-client:arm64-${TAG} \
|
|
--amend statusim/nimbus-validator-client:arm-${TAG}
|
|
docker manifest push statusim/nimbus-validator-client:multiarch-${TAG}
|
|
docker manifest create \
|
|
statusim/nimbus-validator-client:multiarch-latest \
|
|
--amend statusim/nimbus-validator-client:amd64-latest \
|
|
--amend statusim/nimbus-validator-client:arm64-latest \
|
|
--amend statusim/nimbus-validator-client:arm-latest
|
|
docker manifest push statusim/nimbus-validator-client:multiarch-latest
|