Files
pygeoapi/.github/workflows/containers.yml
T
KoalaGeo 8cd1e737f2 PR #801 for #989: GH Workflow - Docker Build+Push to DockerHub and GH Container Registry
* Create ghcr.yml

Create and publish a Docker image to GitHub Container Registry

* Update installation.rst

Add reference to GitHub Container registry

* Update running-with-docker.rst

Add ghcr references

* Make ghcr conditional on main.yml

Updated main.yml run conditions & add on-success condition to ghcr.yml

* Miss aligned

* change workflow name

GHCR

* Update build to Build

Names didn't match GHCR condition

* Remove cog symbol from Build name

* Add paths-ignore

**.md

* Added build & push to DockerHub

* Add authorship & update header

* Tidy yml, add on-success condition

* Add on failure condition

* Remove GHC Tests and Conditional Push

* DockerHub Test - koalageo/pygeoapi

* DockerHub - Revert to geopython/pygeoapi

* Use SECRET for DockerHub repo

* Combined Build & Push

* Update tag function

* Fix tags for latest

* Lastest tag only on `master`

* Use tag on push tag event

* Add latest tag on default branch

* Add unit tests step

* Add separate build & test steps

* Typo in docs

* Move flake8 to before tests - catch errors early

* Add further tags

Co-authored-by: Benjamin Webb <40066515+webb-ben@users.noreply.github.com>

Co-authored-by: Benjamin Webb <40066515+webb-ben@users.noreply.github.com>
2022-09-26 23:38:34 +02:00

86 lines
2.5 KiB
YAML

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
name: Publish Docker image
on:
workflow_run:
workflows: ["Build"]
types: [completed]
env:
TEST_TAG: ${{ secrets.DOCKER_REPOSITORY }}:test
jobs:
on-success:
name: Build, Test and Push Docker Image to DockerHub
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
permissions:
packages: write
contents: read
steps:
- name: Check out the repo
uses: actions/checkout@v2
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Log in to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Log in to the Container registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and export to Docker
uses: docker/build-push-action@v2
with:
context: .
load: true
tags: ${{ env.TEST_TAG }}
- name: pygeoapi Unit Tests with Docker Image ⚙️
run: |
docker run --entrypoint "/entrypoint.sh" --rm ${{ env.TEST_TAG }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v3
with:
images: |
${{ secrets.DOCKER_REPOSITORY }}
ghcr.io/${{ github.repository }}
tags: |
type=semver,pattern={{version}}
type=raw,value=latest,enable=${{ endsWith(github.ref, github.event.repository.default_branch) }}
- name: Build and push Docker images
uses: docker/build-push-action@v2
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
platforms: linux/arm64, linux/amd64
on-failure:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
steps:
- name: Print Test Fail
run: echo Tests Failed