workflow-docker-manual #15
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-manual | |
on: | |
workflow_dispatch: | |
inputs: | |
tags: | |
description: 'Enter tag name for test/dev image' | |
default: 'test' | |
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: Show Runners environment (debug) | |
uses: nick-fields/retry@v2 | |
with: | |
timeout_minutes: 5 | |
max_attempts: 3 | |
retry_wait_seconds: 120 | |
command: | | |
export | |
- 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: Install platform emulators | |
shell: bash | |
run: | | |
docker run --privileged --rm tonistiigi/binfmt --install all | |
- name: Build Docker image and tag | |
shell: bash | |
run: | | |
docker buildx create --use --platform=linux/arm64,linux/amd64 --name multi-platform-builder | |
docker buildx use multi-platform-builder | |
docker buildx inspect --bootstrap | |
docker buildx build --platform linux/amd64,linux/arm64 \ | |
--tag ${{ github.repository }}:${{ steps.generate_temporary_tag_name.outputs.test_tag }} \ | |
--tag ${{ github.repository }}:${{ github.event.inputs.tags }} \ | |
--tag quay.io/${{ github.repository }}:${{ steps.generate_temporary_tag_name.outputs.test_tag }} \ | |
--tag quay.io/${{ github.repository }}:${{ github.event.inputs.tags }} \ | |
--tag ghcr.io/${{ github.repository }}:${{ steps.generate_temporary_tag_name.outputs.test_tag }} \ | |
--tag ghcr.io/${{ github.repository }}:${{ github.event.inputs.tags }} \ | |
--tag registry.gitlab.com/${{ github.repository }}:${{ steps.generate_temporary_tag_name.outputs.test_tag }} \ | |
--tag registry.gitlab.com/${{ github.repository }}:${{ github.event.inputs.tags }} \ | |
-o type=image,push=false \ | |
. | |
- 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: Display built and tagged images | |
shell: bash | |
run: | | |
docker images | |
- 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 }}:${{ github.event.inputs.tags }} | |
- 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 }}:${{ github.event.inputs.tags }} | |
- 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 }}:${{ github.event.inputs.tags }} | |
- 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 }}:${{ github.event.inputs.tags }} |