Update Dockerfile (#18) #15
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: Release to Github Packages. # https://ghcr.io | |
on: # https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#on | |
workflow_dispatch: | |
push: | |
tags: # This builds for all branches with semantically versioned tags (v0.12.3). | |
- v* # https://semver.org will fail, if there are any other tags | |
#release: # Builds only releases. Includes draft and pre-releases. | |
#types: [created] | |
#pull_request: # Run 'tests' for any PRs. Default is to not run for first-time contributors: see /settings/actions | |
env: | |
TAG_LATEST: true # Encourage users to use a major version (foobar:1) instead of :latest. | |
# By semantic versioning standards, major changes are changes 'backwards incompatible'. Major upgrades are often rare and prehaps, need attention from the user. | |
jobs: | |
# Push image to GitHub Packages. | |
push: | |
runs-on: ubuntu-latest | |
permissions: | |
packages: write | |
contents: read | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Build image | |
run: docker build . --file Dockerfile --tag ${{ github.event.repository.name }} --label "runnumber=${GITHUB_RUN_ID}" | |
- name: Authenticate with ghcr.io | |
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin | |
- name: Push image | |
run: | | |
# Destiination, trsnform to lowercase | |
IMAGE_ID=$(echo ghcr.io/${{ github.repository }} | tr '[A-Z]' '[a-z]') | |
function tag_push() { | |
docker tag ${{ github.event.repository.name }} $IMAGE_ID:$1 | |
docker push $IMAGE_ID:$1 | |
} | |
# Strip git ref prefix from version | |
VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') | |
# trigger is (hopefully semantically) tagged | |
if [[ "${{ github.ref }}" == "refs/tags/"* ]]; then | |
# Strip +buildinfo | |
VERSION=$(cut -d+ -f1 <<< $VERSION) | |
# Strip "v" prefix from tag name (v1.2.3 to 1.2.3) | |
VERSION=$(sed -e 's/^v//' <<< $VERSION) | |
if [[ -z $(cut -sd- -f1 <<< $VERSION) ]]; then # Not a prerelease (not v0.1.2-rc4) | |
[[ ${TAG_LATEST} == "true" ]] && tag_push latest | |
tag_push $VERSION # push patch (:1.2.3) | |
# push minor version (:1.2) | |
VERSION=$(cut -d. -f -2 <<< $VERSION) | |
tag_push $VERSION | |
# major version (:1) | |
VERSION=$(cut -d. -f -1 <<< $VERSION) | |
fi | |
fi | |
# push normally (and possibly major) | |
tag_push $VERSION | |
# Can't push multiple tags at once: https://github.com/docker/cli/issues/267 |