--- name: Deploy on: workflow_dispatch: inputs: reason: required: false description: 'Reason for running this workflow' 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 env: # DOCKERHUB_REPO: sdr-enthusiasts # DOCKERHUB_IMAGE: vrs GHCR_IMAGE: sdr-enthusiasts/docker-adsb-ultrafeeder GHCR_REGISTRY: ghcr.io GH_LABEL: main GHCR_TAG: latest 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 }} run: | echo "Workflow dispatch reason: $INPUTS_REASON" 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 DL3015 --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*") deploy_ghcr_multiarch_latest: name: Deploy latest to ghcr.io (Multi-Arch) needs: [hadolint] runs-on: ubuntu-latest permissions: packages: write steps: # Check out our code - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 0 ref: ${{ env.GH_LABEL }} # 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 with: driver-opts: image=moby/buildkit:v0.10.6 # Build "latest" - name: Build & Push - latest uses: docker/build-push-action@v3 with: context: . file: ./Dockerfile no-cache: true platforms: linux/amd64,linux/arm/v7,linux/arm64 push: true tags: ghcr.io/${{ env.GHCR_IMAGE }}:${{ env.GHCR_TAG }} labels: ${{ steps.meta.outputs.labels }} # ------------------------------------------------------------------------------------------------------------------------ deploy_ghcr_multiarch_latest_nohealthcheck: name: Deploy latest_nohealthcheck to ghcr.io (Multi-Arch) needs: [hadolint] runs-on: ubuntu-latest permissions: packages: write steps: # Check out our code - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 0 ref: ${{ env.GH_LABEL }} # 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 with: driver-opts: image=moby/buildkit:v0.10.6 # Change Dockerfile to use latest_nohealthcheck tag of build image: - name: change build image to use latest_nohealthcheck tag of docker-docker-tar1090 run: | sed -i "s|FROM ghcr.io/sdr-enthusiasts/docker-tar1090:latest|FROM ghcr.io/sdr-enthusiasts/docker-tar1090:latest_nohealthcheck|g" ./Dockerfile # Build "latest_nohealthcheck" - name: Build & Push - latest_nohealthcheck uses: docker/build-push-action@v3 with: context: . file: ./Dockerfile no-cache: true platforms: linux/amd64,linux/arm/v7,linux/arm64 push: true tags: ghcr.io/${{ env.GHCR_IMAGE }}:latest_nohealthcheck labels: ${{ steps.meta.outputs.labels }} # ------------------------------------------------------------------------------------------------------------------------ deploy_ghcr_multiarch_telegraf: name: Deploy telegraf to ghcr.io (Multi-Arch) needs: [hadolint] runs-on: ubuntu-latest permissions: packages: write steps: # Check out our code - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 0 ref: ${{ env.GH_LABEL }} # 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 with: driver-opts: image=moby/buildkit:v0.10.6 # Change Dockerfile to use telegraf tag of build image: - name: change build image to use telegraf tag of docker-docker-tar1090 run: | sed -i "s|FROM ghcr.io/sdr-enthusiasts/docker-tar1090:latest|FROM ghcr.io/sdr-enthusiasts/docker-tar1090:telegraf|g" ./Dockerfile # Build "telegraf" - name: Build & Push - telegraf uses: docker/build-push-action@v3 with: context: . file: ./Dockerfile no-cache: true platforms: linux/amd64,linux/arm/v7,linux/arm64 push: true tags: ghcr.io/${{ env.GHCR_IMAGE }}:telegraf labels: ${{ steps.meta.outputs.labels }} # ------------------------------------------------------------------------------------------------------------------------ deploy_ghcr_multiarch_telegraf_nohealthcheck: name: Deploy telegraf_nohealthcheck to ghcr.io (Multi-Arch) needs: [hadolint] runs-on: ubuntu-latest permissions: packages: write steps: # Check out our code - name: Checkout uses: actions/checkout@v3 with: fetch-depth: 0 ref: ${{ env.GH_LABEL }} # 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 with: driver-opts: image=moby/buildkit:v0.10.6 # Change Dockerfile to use telegraf_nohealthcheck tag of build image: - name: change build image to use telegraf_nohealthcheck tag of docker-docker-tar1090 run: | sed -i "s|FROM ghcr.io/sdr-enthusiasts/docker-tar1090:latest|FROM ghcr.io/sdr-enthusiasts/docker-tar1090:telegraf_nohealthcheck|g" ./Dockerfile # Build "telegraf_nohealthcheck" - name: Build & Push - telegraf_nohealthcheck uses: docker/build-push-action@v3 with: context: . file: ./Dockerfile no-cache: true platforms: linux/amd64,linux/arm/v7,linux/arm64 push: true tags: ghcr.io/${{ env.GHCR_IMAGE }}:telegraf_nohealthcheck labels: ${{ steps.meta.outputs.labels }}