👷 build & publish container image
This commit is contained in:
parent
e6639c8fe2
commit
643a0997e9
|
|
@ -0,0 +1,66 @@
|
||||||
|
name: 'Publish Container Image'
|
||||||
|
|
||||||
|
# Controls when the action will run. Triggers the workflow on push or pull
|
||||||
|
# request events but only for the master branch
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- '*'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: 'read'
|
||||||
|
|
||||||
|
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
||||||
|
jobs:
|
||||||
|
# This workflow contains a single job called "build"
|
||||||
|
build-and-publish:
|
||||||
|
# The type of runner that the job will run on
|
||||||
|
runs-on: 'ubuntu-latest'
|
||||||
|
|
||||||
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
||||||
|
steps:
|
||||||
|
- name: 'Checkout Repository 🛎️'
|
||||||
|
uses: 'actions/checkout@v2'
|
||||||
|
|
||||||
|
- name: 'Build 🏗️'
|
||||||
|
id: 'build'
|
||||||
|
run: |
|
||||||
|
image="$( \
|
||||||
|
basename "$(echo "${{ github.repository }}")" \
|
||||||
|
| tr '[:upper:]' '[:lower:]' \
|
||||||
|
| sed 's/docker-//' \
|
||||||
|
)"
|
||||||
|
echo "image=$image" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
docker build --file "Dockerfile" --tag "$image" .
|
||||||
|
|
||||||
|
- name: 'Login to GitHub Container Registry 🔑'
|
||||||
|
uses: 'docker/login-action@v1'
|
||||||
|
if: '${{ github.ref_name }} == ${{ github.event.repository.default_branch }}'
|
||||||
|
with:
|
||||||
|
registry: 'ghcr.io'
|
||||||
|
username: '${{ github.repository_owner }}'
|
||||||
|
password: '${{ secrets.GITHUB_TOKEN }}'
|
||||||
|
|
||||||
|
- name: 'Publish to Registry 🐳'
|
||||||
|
if: '${{ github.ref_name }} == ${{ github.event.repository.default_branch }}'
|
||||||
|
run: |
|
||||||
|
image="${{ steps.build.outputs.image }}"
|
||||||
|
repo="ghcr.io/${{ github.repository_owner }}/$image"
|
||||||
|
branch="$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,')"
|
||||||
|
version="$branch"
|
||||||
|
|
||||||
|
echo "repo = $repo"
|
||||||
|
echo "image = $image"
|
||||||
|
echo "version = $version"
|
||||||
|
|
||||||
|
docker tag "$image" "$repo/$image:$version"
|
||||||
|
docker push "$repo/$image:$version"
|
||||||
|
|
||||||
|
# Use Docker `latest` tag convention
|
||||||
|
if [[ "${{ github.event.repository.default_branch }}" == "$branch" ]]; then
|
||||||
|
docker tag "$image" "$repo/$image:latest"
|
||||||
|
docker push "$repo/$image:latest"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "registry_uri=$repo/$image" >> "$GITHUB_OUTPUT"
|
||||||
Loading…
Reference in New Issue