include java 17 #17
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: workflow-docker-release | |
on: | |
push: | |
tags: | |
- '*' | |
jobs: | |
gcr-dockerhub-build-publish: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Login to Docker Hub | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Login to GitHub | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.CR_PAT }} | |
- name: Login to Quay | |
uses: docker/login-action@v2 | |
with: | |
registry: quay.io | |
username: ${{ secrets.QUAY_USERNAME }} | |
password: ${{ secrets.QUAY_TOKEN }} | |
- name: Login to GitLab | |
uses: docker/login-action@v2 | |
with: | |
registry: registry.gitlab.com | |
username: ${{ secrets.GITLAB_USERNAME }} | |
password: ${{ secrets.GITLAB_TOKEN }} | |
- name: Sync GitHub README.md with Docker Hub | |
uses: peter-evans/dockerhub-description@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_PASSWORD }} # NOTE: This MUST be the password NOT the token | |
repository: ${{ github.repository }} | |
short-description: ${{ github.event.repository.description }} | |
- name: DEBUG Show Runners environment | |
uses: nick-fields/retry@v2 | |
with: | |
timeout_minutes: 5 | |
max_attempts: 3 | |
retry_wait_seconds: 120 | |
command: | | |
export | |
- name: Identify GitHub Release tag name | |
# get tag name from runners environment 'GITHUB_REF_NAME' and then use bash substring | |
# to strip out '+' symbol - required due to gcr not supporting this as a tag | |
# name (docker hub does support it). | |
# note if push is NOT triggered by tag then 'GITHUB_REF_NAME' will be the branch name. | |
uses: nick-fields/retry@v2 | |
with: | |
timeout_minutes: 5 | |
max_attempts: 3 | |
retry_wait_seconds: 120 | |
command: | | |
tag="${GITHUB_REF_NAME}" && echo "tag=${tag//+/-}" >> $GITHUB_OUTPUT | |
id: identify_github_release_tag_name | |
- name: Generate temporary tag name | |
shell: bash | |
run: | | |
test_tag=$(date +%Y%m%d%H%M%S) | |
echo "[debug] Generated test tag name is '${test_tag}'" | |
echo "test_tag=$test_tag" >> $GITHUB_OUTPUT | |
id: generate_temporary_tag_name | |
- name: Generate app name | |
shell: bash | |
run: | | |
app_name=$(echo "${GITHUB_REPOSITORY}" | grep -P -o -m 1 '(?<=/arch-).*') | |
echo "[debug] Generated app name is '${app_name}'" | |
echo "app_name=$app_name" >> $GITHUB_OUTPUT | |
id: generate_app_name | |
- name: Build Docker image and tag | |
uses: nick-fields/retry@v2 | |
with: | |
timeout_minutes: 60 | |
max_attempts: 3 | |
retry_wait_seconds: 120 | |
command: | | |
docker build \ | |
--tag ${{ github.repository }}:${{ steps.generate_temporary_tag_name.outputs.test_tag }} \ | |
--tag ${{ github.repository }}:latest \ | |
--tag ${{ github.repository }}:${{ steps.identify_github_release_tag_name.outputs.tag }} \ | |
--tag quay.io/${{ github.repository }}:${{ steps.generate_temporary_tag_name.outputs.test_tag }} \ | |
--tag quay.io/${{ github.repository }}:latest \ | |
--tag quay.io/${{ github.repository }}:${{ steps.identify_github_release_tag_name.outputs.tag }} \ | |
--tag ghcr.io/${{ github.repository }}:${{ steps.generate_temporary_tag_name.outputs.test_tag }} \ | |
--tag ghcr.io/${{ github.repository }}:latest \ | |
--tag ghcr.io/${{ github.repository }}:${{ steps.identify_github_release_tag_name.outputs.tag }} \ | |
--tag registry.gitlab.com/${{ github.repository }}:${{ steps.generate_temporary_tag_name.outputs.test_tag }} \ | |
--tag registry.gitlab.com/${{ github.repository }}:latest \ | |
--tag registry.gitlab.com/${{ github.repository }}:${{ steps.identify_github_release_tag_name.outputs.tag }} \ | |
--build-arg release_tag_name=${{ steps.identify_github_release_tag_name.outputs.tag }} \ | |
. | |
- name: DEBUG Show built Docker Images | |
uses: nick-fields/retry@v2 | |
with: | |
timeout_minutes: 5 | |
max_attempts: 3 | |
retry_wait_seconds: 120 | |
command: | | |
docker images | |
- name: Run Tests | |
shell: bash | |
run: | | |
git_clone_scripts_dest="/tmp/scripts" | |
git_clone_scripts_repo="https://github.com/binhex/scripts.git" | |
git clone "${git_clone_scripts_repo}" "${git_clone_scripts_dest}" | |
"${git_clone_scripts_dest}/shell/arch/docker/testrunner.sh" --app-name ${{ steps.generate_app_name.outputs.app_name }} --image-name "ghcr.io/${{ github.repository }}:${{ steps.generate_temporary_tag_name.outputs.test_tag }}" | |
- name: Push Docker image to Docker Hub | |
uses: nick-fields/retry@v2 | |
with: | |
timeout_minutes: 30 | |
max_attempts: 3 | |
retry_wait_seconds: 120 | |
command: | | |
docker push ${{ github.repository }}:latest | |
docker push ${{ github.repository }}:${{ steps.identify_github_release_tag_name.outputs.tag }} | |
- name: Push Docker image to Quay Container Registry | |
uses: nick-fields/retry@v2 | |
with: | |
timeout_minutes: 30 | |
max_attempts: 3 | |
retry_wait_seconds: 120 | |
command: | | |
docker push quay.io/${{ github.repository }}:latest | |
docker push quay.io/${{ github.repository }}:${{ steps.identify_github_release_tag_name.outputs.tag }} | |
- name: Push Docker image to GitHub Container Registry (GHCR) | |
uses: nick-fields/retry@v2 | |
with: | |
timeout_minutes: 30 | |
max_attempts: 3 | |
retry_wait_seconds: 120 | |
command: | | |
docker push ghcr.io/${{ github.repository }}:latest | |
docker push ghcr.io/${{ github.repository }}:${{ steps.identify_github_release_tag_name.outputs.tag }} | |
- name: Push Docker image to GitLab Container Registry (GCR) | |
uses: nick-fields/retry@v2 | |
with: | |
timeout_minutes: 30 | |
max_attempts: 3 | |
retry_wait_seconds: 120 | |
command: | | |
docker push registry.gitlab.com/${{ github.repository }}:latest | |
docker push registry.gitlab.com/${{ github.repository }}:${{ steps.identify_github_release_tag_name.outputs.tag }} |