Fixes #3645, currently the release containers are build from the release branches, which are created in preparation for a release. This causes some users with automated CI/CD to either deploy a pre-release version or be notified of a release version before it has actually been released. This change switches the workflow to be triggered by tags, which are created on the release version.
67 lines
1.8 KiB
YAML
67 lines
1.8 KiB
YAML
name: build-and-push-release-image
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
# Run on pushing a tag in the format of 'v0.0.0'
|
|
- "v[0-9]+.[0-9]+.[0-9]+"
|
|
|
|
jobs:
|
|
build-and-push-release-image:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: read
|
|
packages: write
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up QEMU
|
|
uses: docker/setup-qemu-action@v3
|
|
|
|
- name: Extract build args
|
|
# Extract version from tag name
|
|
# Example: tag name `v1.0.0` sets up env.VERSION=1.0.0
|
|
run: |
|
|
echo "VERSION=${GITHUB_REF_NAME#v}" >> $GITHUB_ENV
|
|
|
|
- name: Login to Docker Hub
|
|
uses: docker/login-action@v3
|
|
with:
|
|
username: stevenlgtm
|
|
password: ${{ secrets.DOCKER_HUB_TOKEN }}
|
|
|
|
- name: Login to GitHub Container Registry
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ github.token }}
|
|
|
|
- name: Set up Docker Buildx
|
|
id: buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
with:
|
|
install: true
|
|
version: v0.9.1
|
|
|
|
- name: Docker meta
|
|
id: meta
|
|
uses: docker/metadata-action@v5
|
|
with:
|
|
images: |
|
|
neosmemo/memos
|
|
ghcr.io/usememos/memos
|
|
tags: |
|
|
type=semver,pattern={{version}},value=${{ env.VERSION }}
|
|
type=semver,pattern={{major}}.{{minor}},value=${{ env.VERSION }}
|
|
|
|
- name: Build and Push
|
|
id: docker_build
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: ./
|
|
file: ./Dockerfile
|
|
platforms: linux/amd64,linux/arm64
|
|
push: true
|
|
tags: ${{ steps.meta.outputs.tags }}
|
|
labels: ${{ steps.meta.outputs.labels }}
|