Deploy #513
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: Deploy | |
on: | |
workflow_dispatch: | |
inputs: | |
reason: | |
required: true | |
description: "Reason for running this workflow" | |
use_test_image: | |
required: false | |
type: boolean | |
description: "Use base image testpr" | |
default: false | |
push: | |
branches: | |
- main | |
# Don't trigger if it's just a documentation update | |
paths-ignore: | |
- "**.md" | |
- "**.MD" | |
- "**.yml" | |
- "LICENSE" | |
- ".gitattributes" | |
- ".gitignore" | |
- ".dockerignore" | |
# Set workflow-wide environment variables | |
# - REPO: repo name on dockerhub | |
# - IMAGE: image name on dockerhub | |
jobs: | |
workflow-dispatch: | |
name: Triggered via Workflow Dispatch? | |
# only run this step if workflow dispatch triggered | |
# log the reason the workflow dispatch was triggered | |
if: | | |
github.event_name == 'workflow_dispatch' && | |
github.event.inputs.reason != '' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Log dispatch reason | |
env: | |
INPUTS_REASON: ${{ github.event.inputs.reason }} | |
INPUTS_USE_TEST_IMAGE: ${{ github.event.inputs.use_test_image }} | |
run: | | |
echo "Workflow dispatch reason: $INPUTS_REASON" | |
echo "Use test image: $INPUTS_USE_TEST_IMAGE" | |
hadolint: | |
name: Run hadolint against docker files | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Pull hadolint/hadolint:latest Image | |
run: docker pull hadolint/hadolint:latest | |
- name: Run hadolint against Dockerfiles | |
run: docker run --rm -i -v "$PWD":/workdir --workdir /workdir --entrypoint hadolint hadolint/hadolint --ignore DL3003 --ignore DL3006 --ignore DL3010 --ignore DL4001 --ignore DL3007 --ignore DL3008 --ignore SC2068 --ignore DL3007 --ignore SC1091 --ignore DL3013 --ignore DL3010 $(find . -type f -iname "Dockerfile*") | |
build_and_push: | |
name: Image Build & Push | |
uses: sdr-enthusiasts/common-github-workflows/.github/workflows/build_and_push_image.yml@main | |
needs: [hadolint] | |
with: | |
push_enabled: true | |
push_destinations: ghcr.io;dockerhub | |
dockerhub_profile: mikenye #legacy | |
dockerhub_repo: radarbox #legacy | |
ghcr_repo_owner: ${{ github.repository_owner }} | |
ghcr_repo: ${{ github.repository }} | |
platform_linux_arm32v6_enabled: false | |
platform_linux_i386_enabled: false | |
get_version_method: file_in_container:file=/CONTAINER_VERSION | |
# set build_latest to true if github.event.inputs.use_test_image is false | |
build_latest: ${{ github.event.inputs.use_test_image == 'false' || github.event.inputs.use_test_image == '' }} | |
build_baseimage_test: ${{ github.event.inputs.use_test_image == 'true' }} | |
# only build the entire stack if we are not using the test image | |
build_version_specific: ${{ github.event.inputs.use_test_image == 'false' || github.event.inputs.use_test_image == '' }} | |
build_platform_specific: ${{ github.event.inputs.use_test_image == 'false' || github.event.inputs.use_test_image == '' }} | |
build_nohealthcheck: ${{ github.event.inputs.use_test_image == 'false' || github.event.inputs.use_test_image == '' }} | |
build_baseimage_url: docker-baseimage:base/docker-baseimage:base-test-pr/g;s/docker-baseimage:qemu/docker-baseimage:qemu-test-pr | |
secrets: | |
ghcr_token: ${{ secrets.GITHUB_TOKEN }} | |
dockerhub_token: ${{ secrets.DOCKERHUB_TOKEN }} | |
# deploy_dockerhub_multiarch: | |
# name: Deploy Docker Hub (Multi-Arch) | |
# needs: [hadolint] | |
# runs-on: ubuntu-latest | |
# steps: | |
# # Check out our code | |
# - name: Checkout | |
# uses: actions/checkout@v3 | |
# with: | |
# fetch-depth: 0 | |
# # Log into docker hub (so we can push images) | |
# - name: Login to DockerHub | |
# uses: docker/login-action@v2 | |
# with: | |
# username: ${{ env.DOCKERHUB_REPO }} | |
# password: ${{ secrets.DOCKERHUB_TOKEN }} | |
# # Set up QEMU for multi-arch builds | |
# - name: Set up QEMU | |
# uses: docker/setup-qemu-action@v2 | |
# # Set up buildx for multi platform builds | |
# - name: Set up Docker Buildx | |
# id: buildx | |
# uses: docker/setup-buildx-action@v2 | |
# # Build "latest" | |
# - name: Build & Push - latest | |
# uses: docker/build-push-action@v4 | |
# with: | |
# context: . | |
# file: ./Dockerfile | |
# no-cache: true | |
# platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/i386 | |
# push: true | |
# tags: ${{ env.DOCKERHUB_REPO }}/${{ env.DOCKERHUB_IMAGE }}:latest | |
# # Get version from "latest" | |
# - name: Get latest image version | |
# run: | | |
# docker pull "${{ env.DOCKERHUB_REPO }}/${{ env.DOCKERHUB_IMAGE }}:latest" | |
# echo "VERSION_TAG=$(docker run --rm --entrypoint cat "${{ env.DOCKERHUB_REPO }}/${{ env.DOCKERHUB_IMAGE }}:latest" /CONTAINER_VERSION)" >> $GITHUB_ENV | |
# # Show version from "latest" | |
# - name: Show latest image version | |
# run: | | |
# echo "${{ env.DOCKERHUB_REPO }}/${{ env.DOCKERHUB_IMAGE }}:latest contains version: ${{ env.VERSION_TAG }}" | |
# # Build version specific | |
# - name: Build & Push - version specific | |
# uses: docker/build-push-action@v4 | |
# with: | |
# context: . | |
# file: ./Dockerfile | |
# no-cache: false | |
# platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/i386 | |
# push: true | |
# tags: ${{ env.DOCKERHUB_REPO }}/${{ env.DOCKERHUB_IMAGE }}:${{ env.VERSION_TAG }} | |
# # Patch dockerfile to remove healthcheck | |
# - name: Patch Dockerfile to remove healthcheck | |
# run: sed '/^HEALTHCHECK /d' < Dockerfile > Dockerfile.nohealthcheck | |
# # Build "latest_nohealthcheck" | |
# - name: Build & Push - latest nohealthcheck | |
# uses: docker/build-push-action@v4 | |
# with: | |
# context: . | |
# file: ./Dockerfile.nohealthcheck | |
# no-cache: false | |
# platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/i386 | |
# push: true | |
# tags: ${{ env.DOCKERHUB_REPO }}/${{ env.DOCKERHUB_IMAGE }}:latest_nohealthcheck | |
# # Build version specific _nohealthcheck | |
# - name: Build & Push - version specific nohealthcheck | |
# uses: docker/build-push-action@v4 | |
# with: | |
# context: . | |
# file: ./Dockerfile.nohealthcheck | |
# no-cache: false | |
# platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/i386 | |
# push: true | |
# tags: ${{ env.DOCKERHUB_REPO }}/${{ env.DOCKERHUB_IMAGE }}:${{ env.VERSION_TAG }}_nohealthcheck | |
# # deploy_dockerhub_single_arch: | |
# # name: Deploy Docker Hub | |
# # needs: [hadolint] | |
# # runs-on: ubuntu-latest | |
# # strategy: | |
# # matrix: | |
# # docker-platform: | |
# # - linux/amd64 | |
# # - linux/arm64 | |
# # - linux/arm/v7 | |
# # - linux/i386 | |
# # steps: | |
# # # Check out our code | |
# # - name: Checkout | |
# # uses: actions/checkout@v3 | |
# # with: | |
# # fetch-depth: 0 | |
# # # Set up QEMU for multi-arch builds | |
# # - name: Set up QEMU | |
# # uses: docker/setup-qemu-action@v2 | |
# # # Log into docker hub (so we can push images) | |
# # - name: Login to DockerHub | |
# # uses: docker/login-action@v2 | |
# # with: | |
# # username: ${{ env.DOCKERHUB_REPO }} | |
# # password: ${{ secrets.DOCKERHUB_TOKEN }} | |
# # # Set up buildx for multi platform builds | |
# # - name: Set up Docker Buildx | |
# # id: buildx | |
# # uses: docker/setup-buildx-action@v2 | |
# # # Get archictecture suffix | |
# # - name: Get image architecture suffix | |
# # run: | | |
# # echo "ARCH_TAG=$(echo '${{ matrix.docker-platform }}' | cut -d '/' -f2- | tr -s '/' '_')" >> $GITHUB_ENV | |
# # # Show archictecture suffix | |
# # - name: Show image architecture suffix | |
# # run: | | |
# # echo "Architecture suffix: ${{ env.ARCH_TAG }}" | |
# # # Build "latest" | |
# # - name: Build & Push - latest | |
# # uses: docker/build-push-action@v4 | |
# # with: | |
# # context: . | |
# # file: ./Dockerfile | |
# # no-cache: true | |
# # platforms: ${{ matrix.docker-platform }} | |
# # push: true | |
# # tags: ${{ env.DOCKERHUB_REPO }}/${{ env.DOCKERHUB_IMAGE }}:latest_${{ env.ARCH_TAG }} | |
# # # Get version from "latest" | |
# # - name: Get latest image version | |
# # run: | | |
# # docker pull "${{ env.DOCKERHUB_REPO }}/${{ env.DOCKERHUB_IMAGE }}:latest_${{ env.ARCH_TAG }}" | |
# # echo "VERSION_TAG=$(docker run --rm --entrypoint cat "${{ env.DOCKERHUB_REPO }}/${{ env.DOCKERHUB_IMAGE }}:latest_${{ env.ARCH_TAG }}" /CONTAINER_VERSION)" >> $GITHUB_ENV | |
# # # Show version from "latest" | |
# # - name: Show latest image version | |
# # run: | | |
# # echo "${{ env.DOCKERHUB_REPO }}/${{ env.DOCKERHUB_IMAGE }}:latest contains version: ${{ env.VERSION_TAG }}" | |
# # # Build version specific | |
# # - name: Build & Push - version specific | |
# # uses: docker/build-push-action@v4 | |
# # with: | |
# # context: . | |
# # file: ./Dockerfile | |
# # no-cache: false | |
# # platforms: ${{ matrix.docker-platform }} | |
# # push: true | |
# # tags: ${{ env.DOCKERHUB_REPO }}/${{ env.DOCKERHUB_IMAGE }}:${{ env.VERSION_TAG }}_${{ env.ARCH_TAG }} | |
# # # Patch dockerfile to remove healthcheck | |
# # - name: Patch Dockerfile to remove healthcheck | |
# # run: sed '/^HEALTHCHECK /d' < Dockerfile > Dockerfile.nohealthcheck | |
# # # Build "latest_nohealthcheck" | |
# # - name: Build & Push - latest nohealthcheck | |
# # uses: docker/build-push-action@v4 | |
# # with: | |
# # context: . | |
# # file: ./Dockerfile.nohealthcheck | |
# # no-cache: false | |
# # platforms: ${{ matrix.docker-platform }} | |
# # push: true | |
# # tags: ${{ env.DOCKERHUB_REPO }}/${{ env.DOCKERHUB_IMAGE }}:latest_nohealthcheck_${{ env.ARCH_TAG }} | |
# # # Build version specific _nohealthcheck | |
# # - name: Build & Push - version specific nohealthcheck | |
# # uses: docker/build-push-action@v4 | |
# # with: | |
# # context: . | |
# # file: ./Dockerfile.nohealthcheck | |
# # no-cache: false | |
# # platforms: ${{ matrix.docker-platform }} | |
# # push: true | |
# # tags: ${{ env.DOCKERHUB_REPO }}/${{ env.DOCKERHUB_IMAGE }}:${{ env.VERSION_TAG }}_nohealthcheck_${{ env.ARCH_TAG }} | |
# deploy_ghcr_multiarch: | |
# name: Deploy ghcr.io (Multi-Arch) | |
# needs: [hadolint] | |
# runs-on: ubuntu-latest | |
# steps: | |
# # Check out our code | |
# - name: Checkout | |
# uses: actions/checkout@v3 | |
# with: | |
# fetch-depth: 0 | |
# # Log into ghcr (so we can push images) | |
# - name: Login to ghcr.io | |
# uses: docker/login-action@v2 | |
# with: | |
# registry: ${{ env.GHCR_REGISTRY }} | |
# username: ${{ github.repository_owner }} | |
# password: ${{ secrets.GITHUB_TOKEN }} | |
# # Get metadata from repo | |
# - name: Extract metadata (tags, labels) for Docker | |
# id: meta | |
# uses: docker/metadata-action@v4 | |
# with: | |
# images: ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }} | |
# # Set up QEMU for multi-arch builds | |
# - name: Set up QEMU | |
# uses: docker/setup-qemu-action@v2 | |
# # Set up buildx for multi platform builds | |
# - name: Set up Docker Buildx | |
# id: buildx | |
# uses: docker/setup-buildx-action@v2 | |
# # Build "latest" | |
# - name: Build & Push - latest | |
# uses: docker/build-push-action@v4 | |
# with: | |
# context: . | |
# file: ./Dockerfile | |
# no-cache: true | |
# platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/i386 | |
# push: true | |
# tags: ghcr.io/${{ env.GHCR_IMAGE }}:latest | |
# labels: ${{ steps.meta.outputs.labels }} | |
# # Get version from "latest" | |
# - name: Get latest image version | |
# run: | | |
# docker pull "ghcr.io/${{ env.GHCR_IMAGE }}:latest" | |
# echo "VERSION_TAG=$(docker run --rm --entrypoint cat "ghcr.io/${{ env.GHCR_IMAGE }}:latest" /CONTAINER_VERSION)" >> $GITHUB_ENV | |
# # Show version from "latest" | |
# - name: Show latest image version | |
# run: | | |
# echo "ghcr.io/${{ env.GHCR_IMAGE }}:latest contains version: ${{ env.VERSION_TAG }}" | |
# # Build version specific | |
# - name: Build & Push - version specific | |
# uses: docker/build-push-action@v4 | |
# with: | |
# context: . | |
# file: ./Dockerfile | |
# no-cache: false | |
# platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/i386 | |
# push: true | |
# tags: ghcr.io/${{ env.GHCR_IMAGE }}:${{ env.VERSION_TAG }} | |
# labels: ${{ steps.meta.outputs.labels }} | |
# # Patch dockerfile to remove healthcheck | |
# - name: Patch Dockerfile to remove healthcheck | |
# run: sed '/^HEALTHCHECK /d' < Dockerfile > Dockerfile.nohealthcheck | |
# # Build "latest_nohealthcheck" | |
# - name: Build & Push - latest nohealthcheck | |
# uses: docker/build-push-action@v4 | |
# with: | |
# context: . | |
# file: ./Dockerfile.nohealthcheck | |
# no-cache: false | |
# platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/i386 | |
# push: true | |
# tags: ghcr.io/${{ env.GHCR_IMAGE }}:latest_nohealthcheck | |
# labels: ${{ steps.meta.outputs.labels }} | |
# # Build version specific _nohealthcheck | |
# - name: Build & Push - version specific nohealthcheck | |
# uses: docker/build-push-action@v4 | |
# with: | |
# context: . | |
# file: ./Dockerfile.nohealthcheck | |
# no-cache: false | |
# platforms: linux/amd64,linux/arm/v7,linux/arm64,linux/i386 | |
# push: true | |
# tags: ghcr.io/${{ env.GHCR_IMAGE }}:${{ env.VERSION_TAG }}_nohealthcheck | |
# labels: ${{ steps.meta.outputs.labels }} | |
# # deploy_ghrc_single_arch: | |
# # name: Deploy ghcr.io | |
# # needs: [hadolint] | |
# # runs-on: ubuntu-latest | |
# # strategy: | |
# # matrix: | |
# # docker-platform: | |
# # - linux/amd64 | |
# # - linux/arm64 | |
# # - linux/arm/v7 | |
# # - linux/i386 | |
# # steps: | |
# # # Check out our code | |
# # - name: Checkout | |
# # uses: actions/checkout@v3 | |
# # with: | |
# # fetch-depth: 0 | |
# # # Log into ghcr (so we can push images) | |
# # - name: Login to ghcr.io | |
# # uses: docker/login-action@v2 | |
# # with: | |
# # registry: ${{ env.GHCR_REGISTRY }} | |
# # username: ${{ github.repository_owner }} | |
# # password: ${{ secrets.GITHUB_TOKEN }} | |
# # # Get metadata from repo | |
# # - name: Extract metadata (tags, labels) for Docker | |
# # id: meta | |
# # uses: docker/metadata-action@v4 | |
# # with: | |
# # images: ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }} | |
# # # Set up QEMU for multi-arch builds | |
# # - name: Set up QEMU | |
# # uses: docker/setup-qemu-action@v2 | |
# # # Set up buildx for multi platform builds | |
# # - name: Set up Docker Buildx | |
# # id: buildx | |
# # uses: docker/setup-buildx-action@v2 | |
# # # Get archictecture suffix | |
# # - name: Get image architecture suffix | |
# # run: | | |
# # echo "ARCH_TAG=$(echo '${{ matrix.docker-platform }}' | cut -d '/' -f2- | tr -s '/' '_')" >> $GITHUB_ENV | |
# # # Show archictecture suffix | |
# # - name: Show image architecture suffix | |
# # run: | | |
# # echo "Architecture suffix: ${{ env.ARCH_TAG }}" | |
# # # Build "latest" | |
# # - name: Build & Push - latest | |
# # uses: docker/build-push-action@v4 | |
# # with: | |
# # context: . | |
# # file: ./Dockerfile | |
# # no-cache: true | |
# # platforms: ${{ matrix.docker-platform }} | |
# # push: true | |
# # tags: ghcr.io/${{ env.GHCR_IMAGE }}:latest_${{ env.ARCH_TAG }} | |
# # labels: ${{ steps.meta.outputs.labels }} | |
# # # Get version from "latest" | |
# # - name: Get latest image version | |
# # run: | | |
# # docker pull "ghcr.io/${{ env.GHCR_IMAGE }}:latest_${{ env.ARCH_TAG }}" | |
# # echo "VERSION_TAG=$(docker run --rm --entrypoint cat "ghcr.io/${{ env.GHCR_IMAGE }}:latest_${{ env.ARCH_TAG }}" /CONTAINER_VERSION)" >> $GITHUB_ENV | |
# # # Show version from "latest" | |
# # - name: Show latest image version | |
# # run: | | |
# # echo "ghcr.io/${{ env.GHCR_IMAGE }}:latest contains version: ${{ env.VERSION_TAG }}" | |
# # # Build version specific | |
# # - name: Build & Push - version specific | |
# # uses: docker/build-push-action@v4 | |
# # with: | |
# # context: . | |
# # file: ./Dockerfile | |
# # no-cache: false | |
# # platforms: ${{ matrix.docker-platform }} | |
# # push: true | |
# # tags: ghcr.io/${{ env.GHCR_IMAGE }}:${{ env.VERSION_TAG }}_${{ env.ARCH_TAG }} | |
# # labels: ${{ steps.meta.outputs.labels }} | |
# # # Patch dockerfile to remove healthcheck | |
# # - name: Patch Dockerfile to remove healthcheck | |
# # run: sed '/^HEALTHCHECK /d' < Dockerfile > Dockerfile.nohealthcheck | |
# # # Build "latest_nohealthcheck" | |
# # - name: Build & Push - latest nohealthcheck | |
# # uses: docker/build-push-action@v4 | |
# # with: | |
# # context: . | |
# # file: ./Dockerfile.nohealthcheck | |
# # no-cache: false | |
# # platforms: ${{ matrix.docker-platform }} | |
# # push: true | |
# # tags: ghcr.io/${{ env.GHCR_IMAGE }}:latest_nohealthcheck_${{ env.ARCH_TAG }} | |
# # labels: ${{ steps.meta.outputs.labels }} | |
# # # Build version specific _nohealthcheck | |
# # - name: Build & Push - version specific nohealthcheck | |
# # uses: docker/build-push-action@v4 | |
# # with: | |
# # context: . | |
# # file: ./Dockerfile.nohealthcheck | |
# # no-cache: false | |
# # platforms: ${{ matrix.docker-platform }} | |
# # push: true | |
# # tags: ghcr.io/${{ env.GHCR_IMAGE }}:${{ env.VERSION_TAG }}_nohealthcheck_${{ env.ARCH_TAG }} | |
# # labels: ${{ steps.meta.outputs.labels }} |