
name: release artifacts

on:
  release:
    types:
      - prereleased
env:
  GRADLE_OPTS: "-Dorg.gradle.parallel=true -Dorg.gradle.caching=true"

jobs:
  artifacts:
    runs-on: ubuntu-22.04
    permissions:
      contents: write
    steps:
      - name: checkout
        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
      - name: Set up JDK 17
        uses: actions/setup-java@387ac29b308b003ca37ba93a6cab5eb57c8f5f93
        with:
          distribution: 'temurin'
          java-version: '17'
      - name: setup gradle
        uses: gradle/actions/setup-gradle@9e899d11ad247ec76be7a60bc1cf9d3abbb9e7f1
        with:
          cache-disabled: true
      - name: assemble release
        run:
          ./gradlew -Prelease.releaseVersion=${{github.ref_name}} -Pversion=${{github.ref_name}} assemble
      - name: hashes
        id: hashes
        run: |
          cd build/distributions
          echo "zipSha=$(shasum -a 256 besu*.zip)" >> $GITHUB_OUTPUT
          echo "tarSha=$(shasum -a 256 besu*.tar.gz)" >> $GITHUB_OUTPUT
      - name: upload tarball
        uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3
        with:
          path: 'build/distributions/besu*.tar.gz'
          name: besu-${{ github.ref_name }}.tar.gz
          compression-level: 0
      - name: upload zipfile
        uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3
        with:
          path: 'build/distributions/besu*.zip'
          name: besu-${{ github.ref_name }}.zip
          compression-level: 0
      - name: Artifactory Publish
        env:
          ARTIFACTORY_USER: ${{ secrets.BESU_ARTIFACTORY_USER }}
          ARTIFACTORY_KEY: ${{ secrets.BESU_ARTIFACTORY_TOKEN }}
        run: ./gradlew -Prelease.releaseVersion=${{ github.ref_name }} -Pversion=${{github.ref_name}} artifactoryPublish
  testWindows:
    runs-on: windows-2022
    needs: artifacts
    timeout-minutes: 10
    steps:
      - name: Set up Java
        uses: actions/setup-java@387ac29b308b003ca37ba93a6cab5eb57c8f5f93
        with:
          distribution: adopt
          java-version: 17
      - name: Download zip
        uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe
        with:
          pattern: besu-*.zip
          merge-multiple: true
      - name: test Besu
        run: |
          dir
          unzip besu-*.zip -d besu-tmp
          cd besu-tmp
          mv besu-* ../besu
          cd ..
          besu\bin\besu.bat --help
          besu\bin\besu.bat --version
  publish:
    runs-on: ubuntu-22.04
    needs: testWindows
    steps:
      - name: Download archives
        uses: actions/download-artifact@eaceaf801fd36c7dee90939fad912460b18a1ffe
        with:
          pattern: besu-*
          merge-multiple: true
          path: 'build/distributions'
      - name: Upload Release assets
        uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844
        with:
          append_body: true
          files: |
            build/distributions/besu*.tar.gz
            build/distributions/besu*.zip
          body: |
            ${{steps.hashes.outputs.tarSha}}
            ${{steps.hashes.outputs.zipSha}}