Docker #188
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: Docker | |
on: | |
push: | |
tags: | |
- 'v*.*.*' | |
pull_request: | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
DOCKER_BUILD_ARGS: "${{ vars.DOCKER_BUILD_ARGS }}" | |
jobs: | |
release: | |
name: Release | |
runs-on: ${{ vars.RUNNER_UBUNTU && fromJSON(vars.RUNNER_UBUNTU) || 'ubuntu-latest' }} | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Docker meta | |
id: meta | |
uses: docker/metadata-action@v5 | |
with: | |
images: | | |
docker.io/anzbank/sysl-go | |
tags: | | |
type=ref,event=branch | |
type=ref,event=pr | |
type=semver,pattern={{raw}} | |
type=sha,prefix=,format=long | |
labels: | | |
org.opencontainers.image.revision=${{ github.sha }} | |
org.opencontainers.image.url=https://sysl.io | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Build test docker container image | |
run: | | |
docker buildx build \ | |
--platform linux/amd64 \ | |
--output type=docker \ | |
--build-arg SYSLGO_VERSION=${{ github.ref }} \ | |
${{ env.DOCKER_BUILD_ARGS && format('--build-arg {0}', env.DOCKER_BUILD_ARGS) }} \ | |
-t local/sysl-go-test:test . | |
- name: Download container-structure-test | |
env: | |
CONTAINER_STRUCTURE_TEST: ${{ vars.CONTAINER_STRUCTURE_TEST || 'https://storage.googleapis.com/container-structure-test/v1.15.0/container-structure-test-linux-amd64' }} | |
run: | | |
curl -LO ${CONTAINER_STRUCTURE_TEST} && chmod +x container-structure-test-linux-amd64 && sudo mv container-structure-test-linux-amd64 /usr/local/bin/container-structure-test | |
- name: Test container image | |
env: | |
image: local/sysl-go-test:test | |
config: container-structure-tests.yaml | |
run: | | |
container-structure-test test --image $image --config $config --no-color | |
- name: Login to DockerHub | |
# only attempt to push if we are in the open source repo that has credentials, and there's been a push, not merely a pull request. | |
if: github.repository == 'anz-bank/sysl-go' && github.event_name == 'push' | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKER_USER }} | |
password: ${{ secrets.DOCKER_PASS }} | |
- name: Build and push docker container image | |
# only attempt to push if we are in the open source repo that has credentials, and there's been a push, not merely a pull request. | |
if: github.repository == 'anz-bank/sysl-go' && github.event_name == 'push' | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
pull: true | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
platforms: linux/amd64,linux/arm64 | |
build-args: | | |
SYSLGO_VERSION=${{ github.ref }} | |
${{ env.DOCKER_BUILD_ARGS }} |