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 # Gitea Actions aims for GitHub Actions compatibility, but runners may expose # slightly different env vars depending on configuration. 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 echo "SERVER_URL='${SERVER_URL}' REPO='${REPO}' SHA='${SHA}'" >&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 }}