- After building gateway/users images, update GitOps with new SHA tag - Update apps/nxtgauge-backend-rust/overlays/prod/kustomization.yaml - Requires secrets: GITOPS_REPO_URL, GITOPS_BRANCH, GITOPS_TOKEN
134 lines
3.5 KiB
YAML
134 lines
3.5 KiB
YAML
# Woodpecker CI - Build all services + update GitOps with image digests
|
|
#
|
|
# Secrets required in Woodpecker:
|
|
# - REGISTRY_HOSTPORT, REGISTRY_USERNAME, REGISTRY_PASSWORD (existing)
|
|
# - GITOPS_REPO_URL, GITOPS_BRANCH, GITOPS_TOKEN, GITOPS_USERNAME, GITOPS_EMAIL
|
|
|
|
when:
|
|
branch: [main, high-performance]
|
|
event: push
|
|
|
|
concurrency:
|
|
limit: 4
|
|
|
|
matrix:
|
|
SERVICE:
|
|
- gateway
|
|
- users
|
|
- companies
|
|
- jobs
|
|
- leads
|
|
- job-seekers
|
|
- customers
|
|
- payments
|
|
- employees
|
|
- photographers
|
|
- makeup-artists
|
|
- tutors
|
|
- developers
|
|
- video-editors
|
|
- graphic-designers
|
|
- social-media-managers
|
|
- fitness-trainers
|
|
- catering-services
|
|
- ugc-content-creators
|
|
- cron
|
|
|
|
steps:
|
|
- name: build-and-push
|
|
image: woodpeckerci/plugin-kaniko:2.1.1
|
|
settings:
|
|
registry:
|
|
from_secret: REGISTRY_HOSTPORT
|
|
repo: nxtgauge-rust-${SERVICE}
|
|
dockerfile: Dockerfile.simple
|
|
build_args:
|
|
- SERVICE_NAME=${SERVICE}
|
|
tags:
|
|
- ${CI_COMMIT_SHA}
|
|
- latest
|
|
- high-performance-latest
|
|
username:
|
|
from_secret: REGISTRY_USERNAME
|
|
password:
|
|
from_secret: REGISTRY_PASSWORD
|
|
insecure: true
|
|
insecure_pull: true
|
|
skip_tls_verify: true
|
|
platforms: linux/amd64
|
|
cache: false
|
|
|
|
- name: update-gitops
|
|
image: alpine:latest
|
|
environment:
|
|
GITOPS_REPO_URL:
|
|
from_secret: GITOPS_REPO_URL
|
|
GITOPS_BRANCH:
|
|
from_secret: GITOPS_BRANCH
|
|
GITOPS_TOKEN:
|
|
from_secret: GITOPS_TOKEN
|
|
commands:
|
|
- |
|
|
set -e
|
|
apk add --no-cache git bash sed
|
|
|
|
SERVICE_IMAGE="registry.nxtgauge.com:5000/nxtgauge-rust-${SERVICE}:${CI_COMMIT_SHA}"
|
|
echo "Service: ${SERVICE}, Image: ${SERVICE_IMAGE}"
|
|
|
|
# Clone gitops repo
|
|
GIT_REPO=$(echo "${GITOPS_REPO_URL}" | sed 's|https://||')
|
|
git clone "https://x-access-token:${GITOPS_TOKEN}@${GIT_REPO}" /tmp/gitops
|
|
cd /tmp/gitops
|
|
git checkout ${GITOPS_BRANCH:-main}
|
|
|
|
# Find and update the image in backend overlay
|
|
BACKEND_OVERLAY="apps/nxtgauge-backend-rust/overlays/prod"
|
|
if [ -f "${BACKEND_OVERLAY}/kustomization.yaml" ]; then
|
|
# Update to use SHA tag
|
|
sed -i "s|image: registry.nxtgauge.com:5000/nxtgauge-rust-${SERVICE}:.*|image: registry.nxtgauge.com:5000/nxtgauge-rust-${SERVICE}:${CI_COMMIT_SHA}|" \
|
|
${BACKEND_OVERLAY}/kustomization.yaml
|
|
echo "Updated ${SERVICE} in ${BACKEND_OVERLAY}/kustomization.yaml"
|
|
fi
|
|
|
|
# Commit if changed
|
|
if ! git diff --quiet; then
|
|
git add -A
|
|
git commit -m "ci: update ${SERVICE} to ${CI_COMMIT_SHA:0:8}"
|
|
git push origin ${GITOPS_BRANCH:-main}
|
|
echo "Pushed GitOps update"
|
|
else
|
|
echo "No changes to push"
|
|
fi
|
|
when:
|
|
status: success
|
|
matrix:
|
|
SERVICE: [gateway, users]
|
|
|
|
---
|
|
# Database migrations pipeline
|
|
when:
|
|
branch: [main, high-performance]
|
|
event: push
|
|
|
|
steps:
|
|
- name: build-and-push-migrate
|
|
image: woodpeckerci/plugin-kaniko:2.1.1
|
|
settings:
|
|
registry:
|
|
from_secret: REGISTRY_HOSTPORT
|
|
repo: nxtgauge-db-migrate
|
|
dockerfile: Dockerfile.migrate
|
|
context: .
|
|
tags:
|
|
- ${CI_COMMIT_SHA}
|
|
- latest
|
|
- high-performance-latest
|
|
username:
|
|
from_secret: REGISTRY_USERNAME
|
|
password:
|
|
from_secret: REGISTRY_PASSWORD
|
|
insecure: true
|
|
insecure_pull: true
|
|
skip_tls_verify: true
|
|
platforms: linux/amd64
|
|
cache: false
|