diff --git a/.github/workflows/artifacts.yml b/.github/workflows/artifacts.yml index c0049133741..19594e1f14e 100644 --- a/.github/workflows/artifacts.yml +++ b/.github/workflows/artifacts.yml @@ -2,10 +2,9 @@ name: artifacts on: - workflow_dispatch: release: types: - - created + - prereleased jobs: artifacts: @@ -21,18 +20,30 @@ jobs: - name: setup gradle uses: gradle/gradle-build-action@v2 - name: assemble distributions - run: ./gradlew assemble -Dorg.gradle.parallel=true -Dorg.gradle.caching=true - - name: short sha - id: shortSha - run: echo "sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + run: + ./gradlew -Prelease.releaseVersion=${{github.ref_name}} assemble -Dorg.gradle.parallel=true -Dorg.gradle.caching=true + - name: hashes + id: hashes + run: | + echo "zipSha=$(shasum -a 256 build/distributions/besu*.zip)" >> $GITHUB_OUTPUT + echo "tarSha=$(shasum -a 256 build/distributions/besu*.tar.gz)" >> $GITHUB_OUTPUT - name: upload tarball uses: actions/upload-artifact@v3 with: - name: besu-${{ steps.shortSha.outputs.sha }}.tar.gz path: 'build/distributions/besu*.tar.gz' - name: upload zipfile uses: actions/upload-artifact@v3 with: - name: besu-${{ steps.shortSha.outputs.sha }}.zip path: 'build/distributions/besu*.zip' + - name: Upload Release assets + uses: softprops/action-gh-release@v1 + with: + append_body: true + files: | + build/distributions/besu*.tar.gz + build/distributions/besu*.zip + body: | + ${{steps.hashes.outputs.tarSha}} + ${{steps.hashes.outputs.zipSha}} + diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 63428ed8a9e..2947a9ada91 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -1,9 +1,8 @@ name: docker on: - workflow_dispatch: release: types: - - created + - prereleased jobs: hadolint: @@ -29,23 +28,31 @@ jobs: - name: hadoLint_graalvm run: docker run --rm -i hadolint/hadolint < docker/graalvm/Dockerfile buildDocker: - runs-on: ubuntu-22.04 needs: hadolint strategy: fail-fast: false matrix: platform: - - linux/amd64 - - linux/arm/v6 - - linux/arm/v7 - - linux/arm64 + - ubuntu-22.04 + - [self-hosted, ARM64, macOS] + runs-on: ${{ matrix.platform }} steps: - name: Prepare + id: prep run: | platform=${{ matrix.platform }} - echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV + if [ "$platform" = 'ubuntu-22.04' ]; then + echo "PLATFORM_PAIR=linux-amd64" >> $GITHUB_OUTPUT + echo "ARCH=amd64" >> $GITHUB_OUTPUT + else + echo "PLATFORM_PAIR=linux-arm64" >> $GITHUB_OUTPUT + echo "ARCH=arm64" >> $GITHUB_OUTPUT + fi - name: Checkout Repo uses: actions/checkout@v3 + - name: short sha + id: shortSha + run: echo "sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - name: Set up Java uses: actions/setup-java@v3 with: @@ -53,22 +60,32 @@ jobs: java-version: 17 - name: setup gradle uses: gradle/gradle-build-action@v2 - - name: distDocker + - name: build image uses: gradle/gradle-build-action@v2 with: - arguments: distDocker - - name: test image + arguments: distDocker -PdockerOrgName=${{ secrets.DOCKER_ORG }} -Prelease.releaseVersion=${{ github.ref_name }} + - name: install goss run: | mkdir -p docker/reports - curl -L https://github.com/aelsabbahy/goss/releases/download/v0.3.9/goss-$PLATFORM-PAIR -o ./docker/tests/goss-$PLATFORM-PAIR + curl -L https://github.com/aelsabbahy/goss/releases/download/v0.4.4/goss-${{ steps.prep.outputs.PLATFORM_PAIR }} -o ./docker/tests/goss-${{ steps.prep.outputs.PLATFORM_PAIR }} - name: test docker uses: gradle/gradle-build-action@v2 + env: + architecture: ${{ steps.prep.outputs.ARCH }} with: - arguments: testDocker + arguments: testDocker -PdockerOrgName=${{ secrets.DOCKER_ORG }} -Prelease.releaseVersion=${{ github.ref_name }} - name: Login to DockerHub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USER_RW }} password: ${{ secrets.DOCKER_PASSWORD_RW }} - name: publish - run: ./gradlew --no-daemon -PdockerOrgName=${{ secrets.DOCKER_ORG }} dockerUpload + env: + architecture: ${{ steps.prep.outputs.ARCH }} + run: ./gradlew --no-daemon dockerUpload -PdockerOrgName=${{ secrets.DOCKER_ORG }} -Prelease.releaseVersion=${{ github.ref_name }} + multiArch: + needs: buildDocker + runs-on: ubuntu-22.04 + steps: + - name: multi-arch docker + run: ./gradlew manifestDocker -PdockerOrgName=${{secrets.DOCKER_ORG }} -Prelease.releaseVersion=${{ github.ref_name }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c3d3c37e2ac..811fc380253 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,7 +2,7 @@ name: release besu on: workflow_dispatch: release: - types: released + types: [released] jobs: dockerPromoteX64: runs-on: ubuntu-22.04 diff --git a/build.gradle b/build.gradle index 6dd81d3b731..d2408bef310 100644 --- a/build.gradle +++ b/build.gradle @@ -750,7 +750,6 @@ task distDocker { } task testDocker { - dependsOn distDocker def dockerReportsDir = "docker/reports/" doFirst { @@ -770,7 +769,6 @@ task testDocker { } task dockerUpload { - dependsOn distDocker def architecture = System.getenv('architecture') def image = "${dockerImageName}:${dockerBuildVersion}" def additionalTags = []