|
| 1 | +name: Docker Promote |
| 2 | + |
| 3 | +run-name: "Docker Promote ${{ github.event.release.name }}" |
| 4 | + |
| 5 | +on: |
| 6 | + release: |
| 7 | + types: [released] |
| 8 | + |
| 9 | +env: |
| 10 | + registry: docker.io |
| 11 | + GRADLE_OPTS: "-Dorg.gradle.parallel=true -Dorg.gradle.caching=true" |
| 12 | + |
| 13 | +jobs: |
| 14 | + validate: |
| 15 | + runs-on: ubuntu-22.04 |
| 16 | + env: |
| 17 | + RELEASE_NAME: "${{ github.event.release.name }}" |
| 18 | + steps: |
| 19 | + - name: Pre-process Release Name |
| 20 | + id: pre_process_release_name |
| 21 | + run: | |
| 22 | + # strip all whitespace |
| 23 | + RELEASE_NAME="${RELEASE_NAME//[[:space:]]/}" |
| 24 | + if [[ ! "$RELEASE_NAME" =~ ^[0-9]+\.[0-9]+(\.[0-9]+)?(-.*)?$ ]]; then |
| 25 | + echo "Release name does not conform to a valid besu release format YY.M.v[-suffix], e.g. 24.8.0-RC1." |
| 26 | + exit 1 |
| 27 | + fi |
| 28 | + echo "release_name=$RELEASE_NAME" >> $GITHUB_OUTPUT # Set as output using the new syntax |
| 29 | + outputs: |
| 30 | + release_name: ${{ steps.pre_process_release_name.outputs.release_name }} |
| 31 | + |
| 32 | + docker-promote: |
| 33 | + needs: [validate] |
| 34 | + env: |
| 35 | + RELEASE_NAME: ${{ needs.validate.outputs.release_name }} # Use the output from the pre_process_release job |
| 36 | + runs-on: ubuntu-22.04 |
| 37 | + steps: |
| 38 | + - name: Checkout |
| 39 | + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 |
| 40 | + |
| 41 | + - name: Setup Java |
| 42 | + uses: actions/setup-java@387ac29b308b003ca37ba93a6cab5eb57c8f5f93 |
| 43 | + with: |
| 44 | + distribution: temurin |
| 45 | + java-version: 21 |
| 46 | + cache: gradle |
| 47 | + |
| 48 | + - name: Login to ${{ env.registry }} |
| 49 | + uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d |
| 50 | + with: |
| 51 | + registry: ${{ env.registry }} |
| 52 | + username: ${{ secrets.DOCKER_USER_RW }} |
| 53 | + password: ${{ secrets.DOCKER_PASSWORD_RW }} |
| 54 | + |
| 55 | + - name: Setup Gradle |
| 56 | + uses: gradle/actions/setup-gradle@9e899d11ad247ec76be7a60bc1cf9d3abbb9e7f1 |
| 57 | + with: |
| 58 | + cache-disabled: true |
| 59 | + |
| 60 | + - name: Docker upload |
| 61 | + run: ./gradlew "-Prelease.releaseVersion=${{ env.RELEASE_NAME }}" "-PdockerOrgName=${{ env.registry }}/${{ secrets.DOCKER_ORG }}" dockerUploadRelease |
| 62 | + |
| 63 | + - name: Docker manifest |
| 64 | + run: ./gradlew "-Prelease.releaseVersion=${{ env.RELEASE_NAME }}" "-PdockerOrgName=${{ env.registry }}/${{ secrets.DOCKER_ORG }}" manifestDockerRelease |
| 65 | + |
| 66 | + docker-verify: |
| 67 | + needs: [validate, docker-promote] |
| 68 | + env: |
| 69 | + RELEASE_NAME: ${{ needs.validate.outputs.release_name }} # Use the output from the pre_process_release job |
| 70 | + runs-on: ubuntu-22.04 |
| 71 | + permissions: |
| 72 | + contents: read |
| 73 | + actions: write |
| 74 | + steps: |
| 75 | + - name: Checkout |
| 76 | + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 |
| 77 | + |
| 78 | + - name: Trigger container verify |
| 79 | + run: echo '{"version":"${{ env.RELEASE_NAME }}","verify-latest-version":"true"}' | gh workflow run container-verify.yml --json |
| 80 | + env: |
| 81 | + GH_TOKEN: ${{ github.token }} |
0 commit comments