Add Gitea Actions workflow to build and push the Docker image on push to main
Docker / build-and-push (push) Successful in 4m53s

Copied from latent/.gitea/workflows/docker.yml unchanged — it derives the
image name/registry host from repo context, so it works for postcard as-is.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Fredrik Johansson
2026-08-06 19:50:41 +02:00
co-authored by Claude Sonnet 5
parent cf0f5fca2c
commit e5c242418f
2 changed files with 56 additions and 1 deletions
+53
View File
@@ -0,0 +1,53 @@
name: Docker
on:
push:
branches: [main]
workflow_dispatch:
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Derive image name and tags
id: meta
shell: bash
run: |
set -euo pipefail
SERVER_URL="${GITHUB_SERVER_URL:-${GITEA_SERVER_URL:-}}"
REPO="${GITHUB_REPOSITORY:-${GITEA_REPOSITORY:-}}"
SHA="${GITHUB_SHA:-${GITEA_SHA:-}}"
if [[ -z "${SERVER_URL}" || -z "${REPO}" || -z "${SHA}" ]]; then
echo "Missing SERVER_URL/REPO/SHA env vars." >&2; exit 1
fi
HOST=$(echo "${SERVER_URL}" | sed 's|https://||;s|http://||')
IMAGE=$(echo "${HOST}/${REPO}" | tr '[:upper:]' '[:lower:]')
SHORT_SHA=$(echo "${SHA}" | cut -c1-7)
echo "host=${HOST}" >> "$GITHUB_OUTPUT"
echo "image=${IMAGE}" >> "$GITHUB_OUTPUT"
echo "short_sha=${SHORT_SHA}" >> "$GITHUB_OUTPUT"
- name: Log in to Gitea container registry
uses: docker/login-action@v3
with:
registry: ${{ steps.meta.outputs.host }}
username: ${{ github.actor }}
# Create a Gitea PAT with packages:write scope and add it as a
# repository secret named TKNTKN (Settings → Secrets)
password: ${{ secrets.TKNTKN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
file: Dockerfile
push: true
tags: |
${{ steps.meta.outputs.image }}:latest
${{ steps.meta.outputs.image }}:${{ steps.meta.outputs.short_sha }}
+3 -1
View File
@@ -40,7 +40,9 @@ to `./server/data` (gitignored) for the SQLite db and image blobs.
`docker compose up` using the provided `docker-compose.yml` (copy
`.env.example` to `.env` and adjust — `IMAGE`/`HOST_PORT` are only read by
compose, the rest are passed through to the container).
compose, the rest are passed through to the container). CI builds and
pushes the image on push to `main` via `.gitea/workflows/docker.yml` (needs
a repo secret `TKNTKN` — a Gitea PAT with `packages:write` scope).
## Config