Files
gitea/.gitea/workflows/build-push.yaml
T
will.anderson 83223bb939
labeler / labeler (pull_request_target) Successful in 34s
Build & Push Gitea image / build-push (push) Successful in 3m18s
ci: install docker buildx plugin; switch to buildx build --load
DOCKER_BUILDKIT=1 requires the buildx plugin which isn't installed on
the runner. Install it explicitly then use docker buildx build --load
(outputs to local daemon so the push step can tag+push normally).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-07 19:01:46 -05:00

99 lines
2.8 KiB
YAML

name: Build & Push Gitea image
# Builds and pushes a custom Gitea image to Artifact Registry.
# Branch → image tag mapping:
# dev → gitea:dev (inner dev loop)
# stage → gitea:stage (staging verification)
# main → gitea:latest + gitea:<sha> (production)
on:
push:
branches:
- dev
- stage
- main
workflow_dispatch:
jobs:
build-push:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Authenticate to GCP
uses: google-github-actions/auth@v2
with:
credentials_json: ${{ secrets.GCP_SA_KEY }}
- name: Set up gcloud
uses: google-github-actions/setup-gcloud@v2
with:
project_id: neuron-785695
- name: Configure Docker for Artifact Registry
run: gcloud auth configure-docker us-central1-docker.pkg.dev --quiet
- name: Compute image tags
id: tag
run: |
REGISTRY="us-central1-docker.pkg.dev/neuron-785695/neuron-ci/gitea"
SHA="${GITHUB_SHA:0:8}"
BRANCH="${GITEA_REF_NAME:-${GITHUB_REF_NAME}}"
case "$BRANCH" in
main)
TAGS="${REGISTRY}:latest ${REGISTRY}:${SHA}"
ENV_TAG="latest"
;;
stage)
TAGS="${REGISTRY}:stage ${REGISTRY}:stage-${SHA}"
ENV_TAG="stage"
;;
dev)
TAGS="${REGISTRY}:dev ${REGISTRY}:dev-${SHA}"
ENV_TAG="dev"
;;
*)
TAGS="${REGISTRY}:${SHA}"
ENV_TAG="${SHA}"
;;
esac
echo "tags=${TAGS}" >> "$GITHUB_OUTPUT"
echo "primary=${REGISTRY}:${ENV_TAG}" >> "$GITHUB_OUTPUT"
echo "sha=${SHA}" >> "$GITHUB_OUTPUT"
- name: Install docker buildx
run: |
mkdir -p ~/.docker/cli-plugins
BUILDX_URL="https://github.com/docker/buildx/releases/download/v0.20.1/buildx-v0.20.1.linux-amd64"
curl -fsSL "$BUILDX_URL" -o ~/.docker/cli-plugins/docker-buildx
chmod +x ~/.docker/cli-plugins/docker-buildx
docker buildx version
- name: Build Gitea image
run: |
TAGS=""
for t in ${{ steps.tag.outputs.tags }}; do
TAGS="$TAGS -t $t"
done
docker buildx build \
--load \
--build-arg GITEA_VERSION="neuron-$(git rev-parse --short HEAD)" \
--build-arg TAGS="sqlite sqlite_unlock_notify" \
$TAGS \
.
- name: Push Gitea image
run: |
for t in ${{ steps.tag.outputs.tags }}; do
docker push "$t"
echo "Pushed: $t"
done
- name: Output
run: echo "::notice title=Image::${{ steps.tag.outputs.primary }}"