From 11d2b44195732a9de29c9d0f83b6cc3333e428cb Mon Sep 17 00:00:00 2001 From: Jarian Cottingham Date: Tue, 7 Jul 2026 19:36:39 +0000 Subject: [PATCH] ci: use Gitea container registry instead of release branches --- .gitea/workflows/release.yml | 66 +++++++++++++++++------------------- 1 file changed, 32 insertions(+), 34 deletions(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 04d9f30..83063dc 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -7,8 +7,9 @@ on: env: GITEA_URL: https://git.example.com - REPO_PATH: /home/user/repos/NewsArchiverV2 + REGISTRY: git.example.com DEPLOY_SCRIPT: /home/user/deploy/deploy.sh + IMAGE_NAME: newsarchiver jobs: release: @@ -23,22 +24,12 @@ jobs: - name: Read version id: version run: | - if [ ! -f version.json ]; then - echo "ERROR: version.json not found" - exit 1 - fi MAJOR=$(jq -r '.major' version.json) MINOR=$(jq -r '.minor' version.json) PATCH=$(jq -r '.patch' version.json) - VERSION="${MAJOR}.${MINOR}.${PATCH}" PATCH_PADDED=$(printf "%03d" "$PATCH") FULL_VERSION="${MAJOR}.${MINOR}.${PATCH_PADDED}" - echo "major=$MAJOR" >> $GITHUB_OUTPUT - echo "minor=$MINOR" >> $GITHUB_OUTPUT - echo "patch=$PATCH" >> $GITHUB_OUTPUT - echo "patch_padded=$PATCH_PADDED" >> $GITHUB_OUTPUT echo "version=$FULL_VERSION" >> $GITHUB_OUTPUT - echo "Current version: $FULL_VERSION" - name: Check if deploy needed id: check @@ -46,8 +37,7 @@ jobs: VERSION_FILE="/home/user/deploy/deployed/newsarchiver.version" CURRENT_VERSION="${{ steps.version.outputs.version }}" if [ -f "$VERSION_FILE" ]; then - DEPLOYED_VERSION=$(cat "$VERSION_FILE" | cut -d: -f1 | tr -d ' ') - echo "Deployed: $DEPLOYED_VERSION" + DEPLOYED_VERSION=$(cat "$VERSION_FILE" | cut -d: -f2) if [ "$CURRENT_VERSION" = "$DEPLOYED_VERSION" ]; then echo "skip=true" >> $GITHUB_OUTPUT echo "No new version to deploy" @@ -55,9 +45,8 @@ jobs: fi fi echo "skip=false" >> $GITHUB_OUTPUT - echo "New version $CURRENT_VERSION needs deployment" - - name: Increment patch and create release branch + - name: Bump patch version if: steps.check.outputs.skip != 'true' id: bump run: | @@ -67,37 +56,46 @@ jobs: NEW_PATCH=$((PATCH + 1)) PATCH_PADDED=$(printf "%03d" "$NEW_PATCH") RELEASE_VERSION="${MAJOR}.${MINOR}.${PATCH_PADDED}" - RELEASE_BRANCH="release/v${RELEASE_VERSION}" - # Update version.json jq --argjson p "$NEW_PATCH" '.patch = $p' version.json > version_new.json mv version_new.json version.json - # Commit and push release branch git config user.email "bot@example.com" git config user.name "CI Release Bot" - git checkout -b "$RELEASE_BRANCH" git add version.json git commit -m "release: bump to $RELEASE_VERSION" - git push origin "$RELEASE_BRANCH" 2>/dev/null || { - echo "Failed to push release branch" - exit 1 - } + git push origin main - # Create tag - git tag "v${RELEASE_VERSION}" - git push origin "v${RELEASE_VERSION}" 2>/dev/null || true + git tag -a "v${RELEASE_VERSION}" -m "release: $RELEASE_VERSION" + git push origin "v${RELEASE_VERSION}" echo "release_version=$RELEASE_VERSION" >> $GITHUB_OUTPUT - echo "release_branch=$RELEASE_BRANCH" >> $GITHUB_OUTPUT - echo "Created release: $RELEASE_VERSION on branch $RELEASE_BRANCH" + + - name: Login to Gitea Registry + if: steps.check.outputs.skip != 'true' + run: | + echo "${{ secrets.GITEA_REGISTRY_PASSWORD }}" | \ + docker login --username jarianc --password-stdin ${{ env.REGISTRY }} 2>&1 || \ + echo "REDACTED" | docker login --username jarianc --password-stdin ${{ env.REGISTRY }} + + - name: Build & Push to Registry + if: steps.check.outputs.skip != 'true' + id: build + run: | + TAG="${{ steps.bump.outputs.release_version }}" + REGISTRY_IMAGE="${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${TAG}" + LATEST_IMAGE="${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:latest" + + docker build -t "$REGISTRY_IMAGE" . + docker tag "$REGISTRY_IMAGE" "$LATEST_IMAGE" + + docker push "$REGISTRY_IMAGE" + docker push "$LATEST_IMAGE" + + echo "registry_image=$REGISTRY_IMAGE" >> $GITHUB_OUTPUT - name: Deploy if: steps.check.outputs.skip != 'true' run: | - IMAGE_NAME="newsarchiver" - RELEASE_VERSION="${{ steps.bump.outputs.release_version }}" - IMAGE_TAG="${IMAGE_NAME}:${RELEASE_VERSION}" - - echo "Deploying $IMAGE_TAG from $REPO_PATH" - bash "$DEPLOY_SCRIPT" newsarchiver "$REPO_PATH" "$IMAGE_TAG" "http://127.0.0.1:5000/" + REGISTRY_IMAGE="${{ steps.build.outputs.registry_image }}" + bash "$DEPLOY_SCRIPT" newsarchiver "$REGISTRY_IMAGE" "http://127.0.0.1:5000/"