ci: use Gitea container registry instead of release branches

This commit is contained in:
Jarian Cottingham 2026-07-07 19:36:39 +00:00 committed by Jarian
parent efc79a16e3
commit 11d2b44195

View File

@ -7,8 +7,9 @@ on:
env: env:
GITEA_URL: https://git.example.com GITEA_URL: https://git.example.com
REPO_PATH: /home/user/repos/NewsArchiverV2 REGISTRY: git.example.com
DEPLOY_SCRIPT: /home/user/deploy/deploy.sh DEPLOY_SCRIPT: /home/user/deploy/deploy.sh
IMAGE_NAME: newsarchiver
jobs: jobs:
release: release:
@ -23,22 +24,12 @@ jobs:
- name: Read version - name: Read version
id: version id: version
run: | run: |
if [ ! -f version.json ]; then
echo "ERROR: version.json not found"
exit 1
fi
MAJOR=$(jq -r '.major' version.json) MAJOR=$(jq -r '.major' version.json)
MINOR=$(jq -r '.minor' version.json) MINOR=$(jq -r '.minor' version.json)
PATCH=$(jq -r '.patch' version.json) PATCH=$(jq -r '.patch' version.json)
VERSION="${MAJOR}.${MINOR}.${PATCH}"
PATCH_PADDED=$(printf "%03d" "$PATCH") PATCH_PADDED=$(printf "%03d" "$PATCH")
FULL_VERSION="${MAJOR}.${MINOR}.${PATCH_PADDED}" 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 "version=$FULL_VERSION" >> $GITHUB_OUTPUT
echo "Current version: $FULL_VERSION"
- name: Check if deploy needed - name: Check if deploy needed
id: check id: check
@ -46,8 +37,7 @@ jobs:
VERSION_FILE="/home/user/deploy/deployed/newsarchiver.version" VERSION_FILE="/home/user/deploy/deployed/newsarchiver.version"
CURRENT_VERSION="${{ steps.version.outputs.version }}" CURRENT_VERSION="${{ steps.version.outputs.version }}"
if [ -f "$VERSION_FILE" ]; then if [ -f "$VERSION_FILE" ]; then
DEPLOYED_VERSION=$(cat "$VERSION_FILE" | cut -d: -f1 | tr -d ' ') DEPLOYED_VERSION=$(cat "$VERSION_FILE" | cut -d: -f2)
echo "Deployed: $DEPLOYED_VERSION"
if [ "$CURRENT_VERSION" = "$DEPLOYED_VERSION" ]; then if [ "$CURRENT_VERSION" = "$DEPLOYED_VERSION" ]; then
echo "skip=true" >> $GITHUB_OUTPUT echo "skip=true" >> $GITHUB_OUTPUT
echo "No new version to deploy" echo "No new version to deploy"
@ -55,9 +45,8 @@ jobs:
fi fi
fi fi
echo "skip=false" >> $GITHUB_OUTPUT 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' if: steps.check.outputs.skip != 'true'
id: bump id: bump
run: | run: |
@ -67,37 +56,46 @@ jobs:
NEW_PATCH=$((PATCH + 1)) NEW_PATCH=$((PATCH + 1))
PATCH_PADDED=$(printf "%03d" "$NEW_PATCH") PATCH_PADDED=$(printf "%03d" "$NEW_PATCH")
RELEASE_VERSION="${MAJOR}.${MINOR}.${PATCH_PADDED}" 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 jq --argjson p "$NEW_PATCH" '.patch = $p' version.json > version_new.json
mv version_new.json version.json mv version_new.json version.json
# Commit and push release branch
git config user.email "bot@example.com" git config user.email "bot@example.com"
git config user.name "CI Release Bot" git config user.name "CI Release Bot"
git checkout -b "$RELEASE_BRANCH"
git add version.json git add version.json
git commit -m "release: bump to $RELEASE_VERSION" git commit -m "release: bump to $RELEASE_VERSION"
git push origin "$RELEASE_BRANCH" 2>/dev/null || { git push origin main
echo "Failed to push release branch"
exit 1
}
# Create tag git tag -a "v${RELEASE_VERSION}" -m "release: $RELEASE_VERSION"
git tag "v${RELEASE_VERSION}" git push origin "v${RELEASE_VERSION}"
git push origin "v${RELEASE_VERSION}" 2>/dev/null || true
echo "release_version=$RELEASE_VERSION" >> $GITHUB_OUTPUT 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 - name: Deploy
if: steps.check.outputs.skip != 'true' if: steps.check.outputs.skip != 'true'
run: | run: |
IMAGE_NAME="newsarchiver" REGISTRY_IMAGE="${{ steps.build.outputs.registry_image }}"
RELEASE_VERSION="${{ steps.bump.outputs.release_version }}" bash "$DEPLOY_SCRIPT" newsarchiver "$REGISTRY_IMAGE" "http://127.0.0.1:5000/"
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/"