# Nimbus # Copyright (c) 2020-2024 Status Research & Development GmbH # Licensed under either of # * Apache License, version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or # http://www.apache.org/licenses/LICENSE-2.0) # * MIT license ([LICENSE-MIT](LICENSE-MIT) or # http://opensource.org/licenses/MIT) # at your option. This file may not be copied, modified, or distributed except # according to those terms. name: Nightly build on: schedule: - cron: "45 5 * * *" workflow_dispatch: jobs: build-amd64: name: Linux AMD64 release asset runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: ref: ${{ github.ref }} - name: Build project id: make_dist run: | make dist-amd64 cd dist ARCHIVE=$(echo *.tar.gz) tar -xzf ${ARCHIVE} NEW_ARCHIVE_DIR="nimbus-eth1_Linux_amd64_$(date +%Y%m%d)_$(git rev-parse --short=8 HEAD)" mv ${ARCHIVE%.tar.gz} ${NEW_ARCHIVE_DIR} tar -czf ${NEW_ARCHIVE_DIR}.tar.gz ${NEW_ARCHIVE_DIR} cp ${NEW_ARCHIVE_DIR}.tar.gz nimbus-eth1_Linux_amd64_nightly_latest.tar.gz echo "archive=${NEW_ARCHIVE_DIR}.tar.gz" >> $GITHUB_OUTPUT echo "archive_dir=${NEW_ARCHIVE_DIR}" >> $GITHUB_OUTPUT - name: Upload archive artefact uses: actions/upload-artifact@v4 with: name: Linux_amd64_archive path: | ./dist/${{ steps.make_dist.outputs.archive }} ./dist/nimbus-eth1_Linux_amd64_nightly_latest.tar.gz retention-days: 2 - name: Upload checksum artefact uses: actions/upload-artifact@v4 with: name: Linux_amd64_checksum path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_execution_client.sha512sum 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@v4 with: ref: ${{ github.ref }} - name: Build project id: make_dist run: | make dist-arm64 cd dist ARCHIVE=$(echo *.tar.gz) tar -xzf ${ARCHIVE} NEW_ARCHIVE_DIR="nimbus-eth1_Linux_arm64v8_$(date +%Y%m%d)_$(git rev-parse --short=8 HEAD)" mv ${ARCHIVE%.tar.gz} ${NEW_ARCHIVE_DIR} tar -czf ${NEW_ARCHIVE_DIR}.tar.gz ${NEW_ARCHIVE_DIR} cp ${NEW_ARCHIVE_DIR}.tar.gz nimbus-eth1_Linux_arm64_nightly_latest.tar.gz echo "archive=${NEW_ARCHIVE_DIR}.tar.gz" >> $GITHUB_OUTPUT echo "archive_dir=${NEW_ARCHIVE_DIR}" >> $GITHUB_OUTPUT - name: Upload archive artefact uses: actions/upload-artifact@v4 with: name: Linux_arm64_archive path: | ./dist/${{ steps.make_dist.outputs.archive }} ./dist/nimbus-eth1_Linux_arm64_nightly_latest.tar.gz retention-days: 2 - name: Upload checksum artefact uses: actions/upload-artifact@v4 with: name: Linux_arm64_checksum path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_execution_client.sha512sum retention-days: 2 build-win64: name: Windows AMD64 release asset runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: ref: ${{ github.ref }} - name: Build project id: make_dist run: | make dist-win64 cd dist ARCHIVE=$(echo *.tar.gz) tar -xzf ${ARCHIVE} NEW_ARCHIVE_DIR="nimbus-eth1_Windows_amd64_$(date +%Y%m%d)_$(git rev-parse --short=8 HEAD)" mv ${ARCHIVE%.tar.gz} ${NEW_ARCHIVE_DIR} tar -czf ${NEW_ARCHIVE_DIR}.tar.gz ${NEW_ARCHIVE_DIR} cp ${NEW_ARCHIVE_DIR}.tar.gz nimbus-eth1_Windows_amd64_nightly_latest.tar.gz echo "archive=${NEW_ARCHIVE_DIR}.tar.gz" >> $GITHUB_OUTPUT echo "archive_dir=${NEW_ARCHIVE_DIR}" >> $GITHUB_OUTPUT - name: Upload archive artefact uses: actions/upload-artifact@v4 with: name: Windows_amd64_archive path: | ./dist/${{ steps.make_dist.outputs.archive }} ./dist/nimbus-eth1_Windows_amd64_nightly_latest.tar.gz retention-days: 2 - name: Upload checksum artefact uses: actions/upload-artifact@v4 with: name: Windows_amd64_checksum path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_execution_client.sha512sum retention-days: 2 build-macos-amd64: name: macOS AMD64 release asset runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: ref: ${{ github.ref }} - name: Build project id: make_dist run: | make dist-macos cd dist ARCHIVE=$(echo *.tar.gz) tar -xzf ${ARCHIVE} NEW_ARCHIVE_DIR="nimbus-eth1_macOS_amd64_$(date +%Y%m%d)_$(git rev-parse --short=8 HEAD)" mv ${ARCHIVE%.tar.gz} ${NEW_ARCHIVE_DIR} tar -czf ${NEW_ARCHIVE_DIR}.tar.gz ${NEW_ARCHIVE_DIR} cp ${NEW_ARCHIVE_DIR}.tar.gz nimbus-eth1_macOS_amd64_nightly_latest.tar.gz echo "archive=${NEW_ARCHIVE_DIR}.tar.gz" >> $GITHUB_OUTPUT echo "archive_dir=${NEW_ARCHIVE_DIR}" >> $GITHUB_OUTPUT - name: Upload archive artefact uses: actions/upload-artifact@v4 with: name: macOS_amd64_archive path: | ./dist/${{ steps.make_dist.outputs.archive }} ./dist/nimbus-eth1_macOS_amd64_nightly_latest.tar.gz retention-days: 2 - name: Upload checksum artefact uses: actions/upload-artifact@v4 with: name: macOS_amd64_checksum path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_execution_client.sha512sum retention-days: 2 build-macos-arm64: name: macOS ARM64 release asset runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: ref: ${{ github.ref }} - name: Build project id: make_dist run: | make dist-macos-arm64 cd dist ARCHIVE=$(echo *.tar.gz) tar -xzf ${ARCHIVE} NEW_ARCHIVE_DIR="nimbus-eth1_macOS_arm64_$(date +%Y%m%d)_$(git rev-parse --short=8 HEAD)" mv ${ARCHIVE%.tar.gz} ${NEW_ARCHIVE_DIR} tar -czf ${NEW_ARCHIVE_DIR}.tar.gz ${NEW_ARCHIVE_DIR} cp ${NEW_ARCHIVE_DIR}.tar.gz nimbus-eth1_macOS_arm64_nightly_latest.tar.gz echo "archive=${NEW_ARCHIVE_DIR}.tar.gz" >> $GITHUB_OUTPUT echo "archive_dir=${NEW_ARCHIVE_DIR}" >> $GITHUB_OUTPUT - name: Upload archive artefact uses: actions/upload-artifact@v4 with: name: macOS_arm64_archive path: | ./dist/${{ steps.make_dist.outputs.archive }} ./dist/nimbus-eth1_macOS_arm64_nightly_latest.tar.gz retention-days: 2 - name: Upload checksum artefact uses: actions/upload-artifact@v4 with: name: macOS_arm64_checksum path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_execution_client.sha512sum retention-days: 2 prepare-prerelease: name: Prepare pre-release needs: [build-amd64, build-arm64, build-win64, build-macos-amd64, build-macos-arm64] runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: ref: ${{ github.ref }} - name: Download artefacts uses: actions/download-artifact@v4 - name: Create release notes run: | cat > release_notes.md <> release_notes.md cat Linux_amd64_checksum/* >> release_notes.md echo '# Linux ARM64' >> release_notes.md cat Linux_arm64_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: Update Nightly Release uses: andelf/nightly-release@main env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: nightly name: 'Nightly build ("master" branch)' prerelease: true body_path: release_notes.md files: | Linux_amd64_archive/* Linux_arm64_archive/* Windows_amd64_archive/* macOS_amd64_archive/* macOS_arm64_archive/* - name: Delete artefacts uses: geekyeggo/delete-artifact@v2 with: failOnError: false name: | Linux_amd64_archive Linux_amd64_checksum Linux_arm64_archive Linux_arm64_checksum Windows_amd64_archive Windows_amd64_checksum macOS_amd64_archive macOS_amd64_checksum macOS_arm64_archive macOS_arm64_checksum