Skip to content

Tag new version, build and publish Docker image #110

Tag new version, build and publish Docker image

Tag new version, build and publish Docker image #110

---
name: Tag new version, build and publish Docker image
on:
workflow_run:
workflows:
- CI
branches:
- main
types:
- completed
env:
IMAGE_ID: ghcr.io/opensafely-core/sqlrunner
IMAGE_NAME: sqlrunner
jobs:
tag-new-version:
permissions:
contents: write
name: Tag new version
runs-on: ubuntu-24.04
outputs:
new_version: ${{ steps.tag.outputs.new_version }} # no prefix, may be `undefined`
steps:
- uses: actions/checkout@v6
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:
permissions:
packages: write
contents: read
name: Build and publish Docker image
runs-on: ubuntu-24.04
needs: tag-new-version
if: needs.tag-new-version.outputs.new_version
steps:
- uses: actions/checkout@v6
- uses: opensafely-core/setup-action@v1
with:
install-just: true
- 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 prod
- 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"
docker tag "$IMAGE_NAME" "$IMAGE_ID:latest"
docker tag "$IMAGE_NAME" "$IMAGE_ID:$VERSION"
docker tag "$IMAGE_NAME" "$IMAGE_ID:v1"
docker push "$IMAGE_ID:latest"
docker push "$IMAGE_ID:$VERSION"
docker push "$IMAGE_ID:v1"