mirror of
https://github.com/temetro/temetro.git
synced 2026-07-26 11:58:14 +00:00
5bbfe551fc
- release.yml: add QEMU + platforms: linux/amd64,linux/arm64 to both build-push steps so the published images work on Apple Silicon (fixes 'no matching manifest for linux/arm64/v8' on docker compose pull). - Settings -> Profile language picker is now a select that opens a confirmation dialog before applying, instead of switching instantly. - CLAUDE.md: require a dated docs changelog entry for every release. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
94 lines
3.1 KiB
YAML
94 lines
3.1 KiB
YAML
# Builds and publishes the temetro Docker images and cuts a GitHub Release.
|
|
#
|
|
# Trigger: push a semver tag, e.g.
|
|
# git tag v0.1.0 && git push origin v0.1.0
|
|
#
|
|
# The frontend image bakes NO API URL — it resolves the backend from the host
|
|
# the browser uses at runtime — so one published image works for every clinic.
|
|
#
|
|
# Required repository secrets (Settings → Secrets and variables → Actions):
|
|
# DOCKERHUB_USERNAME — the Docker Hub account `khalidxv` (or one with push
|
|
# access to that namespace)
|
|
# DOCKERHUB_TOKEN — a Docker Hub access token for that account
|
|
# Without them the build/login step fails; the workflow is otherwise inert.
|
|
name: release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- "v*.*.*"
|
|
|
|
permissions:
|
|
contents: write # create the GitHub Release (the update check reads this)
|
|
|
|
env:
|
|
REGISTRY_NAMESPACE: khalidxv
|
|
|
|
jobs:
|
|
publish:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Derive version from tag
|
|
id: meta
|
|
run: echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
|
|
|
|
# QEMU lets the amd64 runner emulate arm64 so the images below build for
|
|
# both platforms (Intel + Apple Silicon self-hosters).
|
|
- name: Set up QEMU
|
|
uses: docker/setup-qemu-action@v3
|
|
|
|
- name: Set up Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Log in to Docker Hub
|
|
uses: docker/login-action@v3
|
|
with:
|
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
- name: Build & push backend
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: ./backend
|
|
push: true
|
|
platforms: linux/amd64,linux/arm64
|
|
tags: |
|
|
${{ env.REGISTRY_NAMESPACE }}/temetro-backend:${{ steps.meta.outputs.version }}
|
|
${{ env.REGISTRY_NAMESPACE }}/temetro-backend:latest
|
|
|
|
- name: Build & push frontend
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: ./frontend
|
|
push: true
|
|
platforms: linux/amd64,linux/arm64
|
|
tags: |
|
|
${{ env.REGISTRY_NAMESPACE }}/temetro-frontend:${{ steps.meta.outputs.version }}
|
|
${{ env.REGISTRY_NAMESPACE }}/temetro-frontend:latest
|
|
|
|
# Pull this version's section out of CHANGELOG.md so the release has real,
|
|
# human-written notes (the auto "Full Changelog" link is still appended
|
|
# below via generate_release_notes). Falls back to a generic line if the
|
|
# version has no CHANGELOG entry.
|
|
- name: Extract changelog notes
|
|
id: notes
|
|
run: |
|
|
version="${{ steps.meta.outputs.version }}"
|
|
awk -v v="$version" '
|
|
$0 ~ "^## \\[" v "\\]" {flag=1; next}
|
|
/^## \[/ {flag=0}
|
|
flag {print}
|
|
' CHANGELOG.md | sed '/./,$!d' > release-notes.md
|
|
if [ ! -s release-notes.md ]; then
|
|
echo "Release $version. See the changelog for details." > release-notes.md
|
|
fi
|
|
|
|
- name: Create GitHub Release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
body_path: release-notes.md
|
|
generate_release_notes: true
|