Skip to content

Tag new version, build and publish Docker image #45

Tag new version, build and publish Docker image

Tag new version, build and publish Docker image #45

---
name: Tag new version, build and publish Docker image
on:
workflow_run:
workflows:
- CI
branches:
- main
types:
- completed
env:
IMAGE_NAME: sqlrunner
jobs:
tag-new-version:
name: Tag new version
runs-on: ubuntu-latest
outputs:
new_version: ${{ steps.tag.outputs.new_version }} # no prefix, may be `undefined`
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # all history
- id: tag
uses: mathieudutour/github-tag-action@a22cf08638b34d5badda920f9daf6e72c477b07b # v6.2
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
create_annotated_tag: true
build-and-publish-docker-image:
name: Build and publish Docker image
runs-on: ubuntu-latest
needs: tag-new-version
if: needs.tag-new-version.outputs.new_version
steps:
- uses: actions/checkout@v4
- uses: extractions/setup-just@dd310ad5a97d8e7b41793f8ef055398d51ad4de6 # v2.0.0
- name: Set VERSION environment variable
run: echo VERSION=${{ needs.tag-new-version.outputs.new_version }} >> $GITHUB_ENV
- name: Write VERSION file
run: echo $VERSION > sqlrunner/VERSION
- name: Build image
run: just docker-build "sqlrunner"
- name: Test image
run: docker run --rm $IMAGE_NAME --help
- name: Log into GitHub Container Registry
run: docker login https://ghcr.io --username ${{ github.actor }} --password ${{ secrets.GITHUB_TOKEN }}
- name: Push image to GitHub Container Registry
run: |
echo "VERSION=$VERSION"
IMAGE_ID=ghcr.io/${{ github.repository_owner }}/$IMAGE_NAME
IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]')
docker tag $IMAGE_NAME $IMAGE_ID:latest
docker tag $IMAGE_NAME $IMAGE_ID:$VERSION
docker push $IMAGE_ID:latest
docker push $IMAGE_ID:$VERSION