ci: use Gitea container registry instead of release branches
This commit is contained in:
parent
efc79a16e3
commit
11d2b44195
@ -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/"
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user