From af3ef5a9b0a4932c7ebdd209f20f8fd9bc738f8b Mon Sep 17 00:00:00 2001 From: Zahary Karadjov Date: Mon, 26 Jun 2023 19:53:35 +0300 Subject: [PATCH] Re-enable the ARM packaging --- .github/workflows/release.yml | 92 ++++++++++++++++++++++++++++++++++- docker/dist/entry_point.sh | 7 --- 2 files changed, 91 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e66676dfe..dc0a4a525 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -155,6 +155,85 @@ jobs: ./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@v2 + with: + name: Linux_arm_archive + path: ./dist/${{ steps.make_dist.outputs.archive }} + retention-days: 2 + - name: Upload BN 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 + - name: Upload VC checksum artefact + uses: actions/upload-artifact@v2 + 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 @@ -259,7 +338,7 @@ jobs: retention-days: 2 prepare-release: name: Prepare release draft - needs: [build-amd64, build-arm64, build-win64, build-macos-amd64, build-macos-arm64] + needs: [build-amd64, build-arm64, build-arm, build-win64, build-macos-amd64, build-macos-arm64] runs-on: ubuntu-latest steps: - name: Download artefacts @@ -285,6 +364,8 @@ jobs: 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 @@ -306,6 +387,8 @@ jobs: Linux_amd64_packages/* Linux_arm64_archive/* Linux_arm64_packages/* + Linux_arm_archive/* + Linux_arm_packages/* Windows_amd64_archive/* macOS_amd64_archive/* macOS_arm64_archive/* @@ -320,6 +403,9 @@ jobs: 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 @@ -341,19 +427,23 @@ jobs: 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 diff --git a/docker/dist/entry_point.sh b/docker/dist/entry_point.sh index c196544c8..d6ee7b89e 100755 --- a/docker/dist/entry_point.sh +++ b/docker/dist/entry_point.sh @@ -75,7 +75,6 @@ if [[ "${PLATFORM}" == "Windows_amd64" ]]; then # nim-blscurve's Windows SSSE3 detection doesn't work when cross-compiling, # so we enable it here. make \ - -j$(nproc) \ CC="${CC}" \ CXX="${CXX}" \ CXXFLAGS="${CXXFLAGS} -D__STDC_FORMAT_MACROS -D_WIN32_WINNT=0x0600" \ @@ -94,7 +93,6 @@ elif [[ "${PLATFORM}" == "Linux_arm32v7" ]]; then QUICK_AND_DIRTY_COMPILER=1 \ deps-common build/generate_makefile make \ - -j$(nproc) \ LOG_LEVEL="TRACE" \ CC="${CC}" \ NIMFLAGS="${NIMFLAGS_COMMON} --cpu:arm --gcc.exe=${CC} --gcc.linkerexe=${CC}" \ @@ -111,7 +109,6 @@ elif [[ "${PLATFORM}" == "Linux_arm64v8" ]]; then QUICK_AND_DIRTY_COMPILER=1 \ deps-common build/generate_makefile make \ - -j$(nproc) \ LOG_LEVEL="TRACE" \ CC="${CC}" \ NIMFLAGS="${NIMFLAGS_COMMON} --cpu:arm64 --gcc.exe=${CC} --gcc.linkerexe=${CC}" \ @@ -139,7 +136,6 @@ elif [[ "${PLATFORM}" == "macOS_amd64" ]]; then NIMFLAGS="${NIMFLAGS_COMMON} --os:macosx --clang.exe=${CC}" \ nat-libs make \ - -j$(nproc) \ LOG_LEVEL="TRACE" \ CC="${CC}" \ AR="x86_64-apple-darwin${DARWIN_VER}-ar" \ @@ -172,7 +168,6 @@ elif [[ "${PLATFORM}" == "macOS_arm64" ]]; then NIMFLAGS="${NIMFLAGS_COMMON} --os:macosx --cpu:arm64 --passC:'-mcpu=apple-a13' --clang.exe=${CC}" \ nat-libs make \ - -j$(nproc) \ LOG_LEVEL="TRACE" \ CC="${CC}" \ AR="arm64-apple-darwin${DARWIN_VER}-ar" \ @@ -188,7 +183,6 @@ elif [[ "${PLATFORM}" == "Linux_amd64_opt" ]]; then echo make \ - -j$(nproc) \ LOG_LEVEL="TRACE" \ NIMFLAGS="${NIMFLAGS_COMMON} -d:marchOptimized" \ PARTIAL_STATIC_LINKING=1 \ @@ -200,7 +194,6 @@ else echo make \ - -j$(nproc) \ LOG_LEVEL="TRACE" \ NIMFLAGS="${NIMFLAGS_COMMON}" \ PARTIAL_STATIC_LINKING=1 \