# beacon_chain # Copyright (c) 2021-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. name: Nightly build on: schedule: - cron: "45 4 * * *" workflow_dispatch: #pull_request: env: # Build and include deposit_contract nimbus_signing_node nimbus_light_client logtrace in archive BUILD_TOOLS: 1 jobs: build-amd64: name: Linux AMD64 release asset runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: ref: unstable - name: Build project id: make_dist run: | make dist-amd64 cd dist ARCHIVE=$(echo *.tar.gz) tar -xzf ${ARCHIVE} NEW_ARCHIVE_DIR="nimbus-eth2_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-eth2_Linux_amd64_nightly_latest.tar.gz echo "::set-output name=archive::"${NEW_ARCHIVE_DIR}.tar.gz echo "::set-output name=archive_dir::"${NEW_ARCHIVE_DIR} - name: Upload archive artefact uses: actions/upload-artifact@v3 with: name: Linux_amd64_archive path: | ./dist/${{ steps.make_dist.outputs.archive }} ./dist/nimbus-eth2_Linux_amd64_nightly_latest.tar.gz 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 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: unstable - name: Build project id: make_dist run: | make dist-arm64 cd dist ARCHIVE=$(echo *.tar.gz) tar -xzf ${ARCHIVE} NEW_ARCHIVE_DIR="nimbus-eth2_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-eth2_Linux_arm64v8_nightly_latest.tar.gz echo "::set-output name=archive::"${NEW_ARCHIVE_DIR}.tar.gz echo "::set-output name=archive_dir::"${NEW_ARCHIVE_DIR} - name: Upload archive artefact uses: actions/upload-artifact@v3 with: name: Linux_arm64_archive path: | ./dist/${{ steps.make_dist.outputs.archive }} ./dist/nimbus-eth2_Linux_arm64v8_nightly_latest.tar.gz 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 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@v4 with: ref: unstable - name: Build project id: make_dist run: | make dist-arm cd dist ARCHIVE=$(echo *.tar.gz) tar -xzf ${ARCHIVE} NEW_ARCHIVE_DIR="nimbus-eth2_Linux_arm32v7_$(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-eth2_Linux_arm32v7_nightly_latest.tar.gz echo "::set-output name=archive::"${NEW_ARCHIVE_DIR}.tar.gz echo "::set-output name=archive_dir::"${NEW_ARCHIVE_DIR} - name: Upload archive artefact uses: actions/upload-artifact@v3 with: name: Linux_arm_archive path: | ./dist/${{ steps.make_dist.outputs.archive }} ./dist/nimbus-eth2_Linux_arm32v7_nightly_latest.tar.gz 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 build-win64: name: Windows AMD64 release asset runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: ref: unstable - name: Build project id: make_dist run: | make dist-win64 cd dist ARCHIVE=$(echo *.tar.gz) tar -xzf ${ARCHIVE} NEW_ARCHIVE_DIR="nimbus-eth2_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-eth2_Windows_amd64_nightly_latest.tar.gz echo "::set-output name=archive::"${NEW_ARCHIVE_DIR}.tar.gz echo "::set-output name=archive_dir::"${NEW_ARCHIVE_DIR} - name: Upload archive artefact uses: actions/upload-artifact@v3 with: name: Windows_amd64_archive path: | ./dist/${{ steps.make_dist.outputs.archive }} ./dist/nimbus-eth2_Windows_amd64_nightly_latest.tar.gz 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@v4 with: ref: unstable - name: Build project id: make_dist run: | make dist-macos cd dist ARCHIVE=$(echo *.tar.gz) tar -xzf ${ARCHIVE} NEW_ARCHIVE_DIR="nimbus-eth2_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-eth2_macOS_amd64_nightly_latest.tar.gz echo "::set-output name=archive::"${NEW_ARCHIVE_DIR}.tar.gz echo "::set-output name=archive_dir::"${NEW_ARCHIVE_DIR} - name: Upload archive artefact uses: actions/upload-artifact@v3 with: name: macOS_amd64_archive path: | ./dist/${{ steps.make_dist.outputs.archive }} ./dist/nimbus-eth2_macOS_amd64_nightly_latest.tar.gz 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@v4 with: ref: unstable - name: Build project id: make_dist run: | make dist-macos-arm64 cd dist ARCHIVE=$(echo *.tar.gz) tar -xzf ${ARCHIVE} NEW_ARCHIVE_DIR="nimbus-eth2_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-eth2_macOS_arm64_nightly_latest.tar.gz echo "::set-output name=archive::"${NEW_ARCHIVE_DIR}.tar.gz echo "::set-output name=archive_dir::"${NEW_ARCHIVE_DIR} - name: Upload archive artefact uses: actions/upload-artifact@v3 with: name: macOS_arm64_archive path: | ./dist/${{ steps.make_dist.outputs.archive }} ./dist/nimbus-eth2_macOS_arm64_nightly_latest.tar.gz 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-prerelease: name: Prepare pre-release needs: [build-amd64, build-arm64, build-arm, build-win64, build-macos-amd64, build-macos-arm64] runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: ref: unstable - name: Download artefacts uses: actions/download-artifact@v4.1.7 - 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 '# 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: Delete tag uses: dev-drprasad/delete-tag-and-release@v0.2.1 with: delete_release: true tag_name: nightly env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Create prerelease run: | gh release create nightly --prerelease --target unstable \ --title 'Nightly build ("unstable" branch)' --notes-file release_notes.md \ Linux_amd64_archive/* \ Linux_arm64_archive/* \ Linux_arm_archive/* \ Windows_amd64_archive/* \ macOS_amd64_archive/* \ macOS_arm64_archive/* env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Delete artefacts uses: geekyeggo/delete-artifact@v1 with: failOnError: false name: | Linux_amd64_archive Linux_amd64_checksum Linux_arm64_archive Linux_arm64_checksum Linux_arm_archive Linux_arm_checksum Windows_amd64_archive Windows_amd64_checksum macOS_amd64_archive macOS_amd64_checksum macOS_arm64_archive macOS_arm64_checksum