Files
atlantis/.github/workflows/testing-env-image.yml
Jeppe Fihl-Pearson 124eb6b4a8 Use GitHub Actions cache when building Docker images (#2737)
* Use GitHub Actions cache when building Docker images

This firstly removes the `pull: true` option from all
`build-push-action` invocations, as it was assumed it caused Docker to
pull the existing image first before building the new one, where as it
instead makes sure the base image is up to date prior to starting the
build.

Instead the `cache-from` and `cache-to` options are added which cause
the action to store and retrieve caches for each layer from GitHub
Actions' cache system as documented at
https://docs.docker.com/build/ci/github-actions/examples/#cache-backend-api.

* Pin exact Go version in testing image

This matches what is done for the production image.
2022-12-04 21:16:57 -06:00

54 lines
1.4 KiB
YAML

name: testing-env-image
on:
push:
paths:
- "testing/**"
- ".github/workflows/testing-env-image.yml"
branches:
- "main"
pull_request:
paths:
- 'testing/**'
- '.github/workflows/testing-env-image.yml'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
with:
image: tonistiigi/binfmt:latest
platforms: arm64,arm
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Packages Container registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- run: echo "TODAY=$(date +"%Y.%m.%d")" >> $GITHUB_ENV
- name: Build and push testing-env:${{env.TODAY}} image
uses: docker/build-push-action@v3
with:
cache-from: type=gha
cache-to: type=gha,mode=max
context: testing
platforms: linux/arm64/v8,linux/amd64,linux/arm/v7
push: ${{ github.event_name != 'pull_request' }}
tags: |
ghcr.io/runatlantis/testing-env:${{env.TODAY}}
ghcr.io/runatlantis/testing-env:latest