From f90c3b14244c1b6f2a0b622da813b751cddd89ca Mon Sep 17 00:00:00 2001 From: Lyncoln Date: Fri, 30 Oct 2026 23:37:45 -0400 Subject: [PATCH] Added gitea workflow build --- .gitea/workflows/build.yml | 124 +++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 .gitea/workflows/build.yml diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..6d24809 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,124 @@ + +name: Build and Publish RMManager Image + +on: + push: + branches: [main] + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + # --------------------------------------------- + # Checkout repository (no external actions) + # --------------------------------------------- + - name: Checkout repository + env: + GITEA_TOKEN: ${{ secrets.TEA_TOKEN }} + run: | + set -euo pipefail + + BASE="${GITHUB_SERVER_URL%/}" + REPO="${GITHUB_REPOSITORY}" + + git init . + git remote add origin "$BASE/$REPO.git" + + if [ -n "${GITEA_TOKEN:-}" ]; then + AUTH="$(printf 'oauth2:%s' "$GITEA_TOKEN" | base64 -w0)" + git -c "http.extraHeader=Authorization: Basic $AUTH" \ + fetch --depth 1 origin "$GITHUB_SHA" + else + git fetch --depth 1 origin "$GITHUB_SHA" + fi + + git checkout --detach FETCH_HEAD + + # --------------------------------------------- + # Determine image tags + # --------------------------------------------- + - name: Determine version + id: version + run: | + set -euo pipefail + + SHORT_SHA="$(git rev-parse --short=7 HEAD)" + + echo "sha=$SHORT_SHA" >> "$GITHUB_OUTPUT" + + if [ -f VERSION ]; then + VERSION="$(tr -d '[:space:]' < VERSION)" + echo "version=$VERSION" >> "$GITHUB_OUTPUT" + fi + + # --------------------------------------------- + # Login to Gitea container registry + # --------------------------------------------- + - name: Docker login + env: + REGISTRY: ${{ vars.REGISTRY }} + REGISTRY_USER: ${{ secrets.REGISTRY_USER }} + REGISTRY_TOKEN: ${{ secrets.TEA_TOKEN }} + run: | + set -euo pipefail + + echo "$REGISTRY_TOKEN" | docker login "$REGISTRY" \ + -u "$REGISTRY_USER" \ + --password-stdin + + # --------------------------------------------- + # Build container image + # --------------------------------------------- + - name: Build RMManager image + env: + REGISTRY: ${{ vars.REGISTRY }} + VERSION: ${{ steps.version.outputs.version }} + SHORT_SHA: ${{ steps.version.outputs.sha }} + run: | + set -euo pipefail + + FULL_IMAGE="$REGISTRY/david/rmmanager" + + docker build \ + -f Containerfile \ + -t "$FULL_IMAGE:latest" \ + -t "$FULL_IMAGE:sha-$SHORT_SHA" \ + . + + if [ -n "$VERSION" ]; then + docker tag "$FULL_IMAGE:latest" "$FULL_IMAGE:v$VERSION" + fi + + # --------------------------------------------- + # Publish image + # --------------------------------------------- + - name: Push RMManager image + env: + REGISTRY: ${{ vars.REGISTRY }} + VERSION: ${{ steps.version.outputs.version }} + SHORT_SHA: ${{ steps.version.outputs.sha }} + run: | + set -euo pipefail + + FULL_IMAGE="$REGISTRY/david/rmmanager" + + docker push "$FULL_IMAGE:latest" + docker push "$FULL_IMAGE:sha-$SHORT_SHA" + + if [ -n "$VERSION" ]; then + docker push "$FULL_IMAGE:v$VERSION" + fi + + # --------------------------------------------- + # Summary + # --------------------------------------------- + - name: Report build + env: + REGISTRY: ${{ vars.REGISTRY }} + SHORT_SHA: ${{ steps.version.outputs.sha }} + run: | + echo "RMManager build completed" + echo "Image: $REGISTRY/david/rmmanager" + echo "Commit: $SHORT_SHA"