From f783404c364e7614abbb11ccfd2ef720728f91bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C8=98tefan=20Talpalaru?= Date: Tue, 17 Aug 2021 17:35:37 +0200 Subject: [PATCH] CI: Altair build workflow --- .github/workflows/altair.yml | 313 +++++++++++++++++++++++++++++++++++ 1 file changed, 313 insertions(+) create mode 100644 .github/workflows/altair.yml diff --git a/.github/workflows/altair.yml b/.github/workflows/altair.yml new file mode 100644 index 000000000..416c4e0e8 --- /dev/null +++ b/.github/workflows/altair.yml @@ -0,0 +1,313 @@ +name: Altair beta build (rolling release) +on: + #schedule: + #- cron: "45 5 * * *" + workflow_dispatch: + #pull_request: + +jobs: + build-amd64: + name: Linux AMD64 release asset + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + ref: altair + + - 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} + 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@v2 + with: + name: Linux_amd64_archive + path: ./dist/${{ steps.make_dist.outputs.archive }} + retention-days: 2 + + - name: Upload checksum artefact + uses: actions/upload-artifact@v2 + with: + name: Linux_amd64_checksum + path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_beacon_node.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@v2 + with: + ref: altair + + - 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} + 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@v2 + with: + name: Linux_arm64_archive + path: ./dist/${{ steps.make_dist.outputs.archive }} + retention-days: 2 + + - name: Upload checksum artefact + uses: actions/upload-artifact@v2 + with: + name: Linux_arm64_checksum + path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_beacon_node.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@v2 + with: + ref: altair + + - 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} + 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@v2 + with: + name: Linux_arm_archive + path: ./dist/${{ steps.make_dist.outputs.archive }} + retention-days: 2 + + - name: Upload checksum artefact + uses: actions/upload-artifact@v2 + with: + name: Linux_arm_checksum + path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_beacon_node.sha512sum + retention-days: 2 + + build-win64: + name: Windows AMD64 release asset + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + ref: altair + + - 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} + 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@v2 + with: + name: Windows_amd64_archive + path: ./dist/${{ steps.make_dist.outputs.archive }} + retention-days: 2 + + - name: Upload checksum artefact + uses: actions/upload-artifact@v2 + with: + name: Windows_amd64_checksum + path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_beacon_node.sha512sum + retention-days: 2 + + build-macos-amd64: + name: macOS AMD64 release asset + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + ref: altair + + - 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} + 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@v2 + with: + name: macOS_amd64_archive + path: ./dist/${{ steps.make_dist.outputs.archive }} + retention-days: 2 + + - name: Upload checksum artefact + uses: actions/upload-artifact@v2 + with: + name: macOS_amd64_checksum + path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_beacon_node.sha512sum + retention-days: 2 + + build-macos-arm64: + name: macOS ARM64 release asset + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + ref: altair + + - 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} + 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@v2 + with: + name: macOS_arm64_archive + path: ./dist/${{ steps.make_dist.outputs.archive }} + retention-days: 2 + + - name: Upload checksum artefact + uses: actions/upload-artifact@v2 + with: + name: macOS_arm64_checksum + path: ./dist/${{ steps.make_dist.outputs.archive_dir }}/build/nimbus_beacon_node.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@v2 + with: + ref: altair + + - name: Download artefacts + uses: actions/download-artifact@v2 + + - 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.0 + with: + delete_release: true + tag_name: altair-beta + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Create prerelease + run: | + gh release create altair-beta --prerelease --target altair \ + --title 'Altair beta build (rolling release, experimental)' --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 +