Docker Promote 24.10.0 #9
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Docker Promote | |
run-name: "Docker Promote ${{ github.event.release.name }}" | |
on: | |
release: | |
types: [released] | |
env: | |
registry: docker.io | |
GRADLE_OPTS: "-Dorg.gradle.parallel=true -Dorg.gradle.caching=true" | |
jobs: | |
validate: | |
runs-on: ubuntu-22.04 | |
env: | |
RELEASE_VERSION: "${{ github.event.release.name }}" | |
steps: | |
- name: Pre-process Release Name | |
id: pre_process_release_version | |
run: | | |
# strip all whitespace | |
RELEASE_VERSION="${RELEASE_VERSION//[[:space:]]/}" | |
if [[ ! "$RELEASE_VERSION" =~ ^[0-9]+\.[0-9]+(\.[0-9]+)?(-.*)?$ ]]; then | |
echo "Release name does not conform to a valid besu release format YY.M.v[-suffix], e.g. 24.8.0-RC1." | |
exit 1 | |
fi | |
echo "release_version=$RELEASE_VERSION" >> $GITHUB_OUTPUT # Set as output using the new syntax | |
outputs: | |
release_version: ${{ steps.pre_process_release_version.outputs.release_version }} | |
docker-promote: | |
needs: [validate] | |
env: | |
RELEASE_VERSION: ${{ needs.validate.outputs.release_version }} | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
- name: Setup Java | |
uses: actions/setup-java@387ac29b308b003ca37ba93a6cab5eb57c8f5f93 | |
with: | |
distribution: temurin | |
java-version: 21 | |
cache: gradle | |
- name: Login to ${{ env.registry }} | |
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d | |
with: | |
registry: ${{ env.registry }} | |
username: ${{ secrets.DOCKER_USER_RW }} | |
password: ${{ secrets.DOCKER_PASSWORD_RW }} | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@9e899d11ad247ec76be7a60bc1cf9d3abbb9e7f1 | |
with: | |
cache-disabled: true | |
- name: Docker upload | |
run: ./gradlew "-Prelease.releaseVersion=${{ env.RELEASE_VERSION }}" "-PdockerOrgName=${{ env.registry }}/${{ secrets.DOCKER_ORG }}" dockerUploadRelease | |
- name: Docker manifest | |
run: ./gradlew "-Prelease.releaseVersion=${{ env.RELEASE_VERSION }}" "-PdockerOrgName=${{ env.registry }}/${{ secrets.DOCKER_ORG }}" manifestDockerRelease | |
docker-verify: | |
needs: [validate,docker-promote] | |
env: | |
CONTAINER_NAME: besu-check | |
RELEASE_VERSION: ${{ needs.validate.outputs.release_version }} | |
runs-on: ${{ matrix.combination.runner }} | |
timeout-minutes: 4 | |
strategy: | |
matrix: | |
combination: | |
- tag: latest-amd64 | |
platform: 'linux/amd64' | |
runner: ubuntu-22.04 | |
- tag: latest | |
platform: '' | |
runner: ubuntu-22.04 | |
- tag: latest-arm64 | |
platform: '' | |
runner: besu-arm64 | |
- tag: latest | |
platform: '' | |
runner: besu-arm64 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | |
with: | |
sparse-checkout: '.github/workflows/BesuContainerVerify.sh' | |
- name: Start container | |
run: | | |
PLATFORM_OPT="" | |
[[ x${{ matrix.combination.platform }} != 'x' ]] && PLATFORM_OPT="--platform ${{ matrix.combination.platform }}" | |
docker run -d $PLATFORM_OPT --name ${{ env.CONTAINER_NAME }} ${{ secrets.DOCKER_ORG }}/besu:${{ matrix.combination.tag }} | |
- name: Verify besu container | |
run: bash .github/workflows/BesuContainerVerify.sh | |
env: | |
TAG: ${{ matrix.combination.tag }} | |
VERSION: ${{ env.RELEASE_VERSION }} | |
CHECK_LATEST: true | |
- name: Stop container | |
run: docker stop ${{ env.CONTAINER_NAME }} |