Files
dashboard-backend/.gitea/workflows/build-deploy.yml
CloudForge Dev 9e1b1fd807
Some checks failed
Build and Deploy Backend (Kaniko) / build-and-deploy (push) Failing after 2m13s
Trigger build
2025-12-09 11:45:18 +08:00

80 lines
2.7 KiB
YAML

name: Build and Deploy Backend (Kaniko)
on:
push:
branches:
- main
jobs:
build-and-deploy:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Restore kubeconfig
run: |
mkdir -p ~/.kube
echo "$KUBECONFIG_DATA" | base64 -d > ~/.kube/config
chmod 600 ~/.kube/config
env:
KUBECONFIG_DATA: ${{ secrets.KUBECONFIG }}
- name: Install kubectl
run: |
curl -LO "https://dl.k8s.io/release/v1.28.0/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/kubectl
- name: Build with Kaniko
run: |
/usr/local/bin/kubectl apply -f - <<EOJOB
apiVersion: batch/v1
kind: Job
metadata:
name: kaniko-build-${GITHUB_SHA:0:8}
namespace: cloudforge
spec:
ttlSecondsAfterFinished: 3600
template:
spec:
serviceAccountName: kaniko-builder
containers:
- name: kaniko
image: gcr.io/kaniko-project/executor:v1.20.0
args:
- "--dockerfile=Dockerfile"
- "--context=git://gitea-http.gitea.svc.cluster.local:3000/cloudforge-dev/dashboard-backend.git#main"
- "--destination=registry.kube-system.svc.cluster.local:5000/cloudforge-dashboard-backend:${GITHUB_SHA:0:8}"
- "--destination=registry.kube-system.svc.cluster.local:5000/cloudforge-dashboard-backend:latest"
- "--insecure"
- "--skip-tls-verify"
restartPolicy: Never
EOJOB
/usr/local/bin/kubectl wait --for=condition=complete --timeout=120s \
job/kaniko-build-${GITHUB_SHA:0:8} -n cloudforge
- name: Deploy
run: |
/usr/local/bin/kubectl set image deployment/dashboard-backend \
backend=registry.kube-system.svc.cluster.local:5000/cloudforge-dashboard-backend:${GITHUB_SHA:0:8} \
-n cloudforge || \
/usr/local/bin/kubectl create deployment dashboard-backend \
--image=registry.kube-system.svc.cluster.local:5000/cloudforge-dashboard-backend:${GITHUB_SHA:0:8} \
-n cloudforge
/usr/local/bin/kubectl rollout restart deployment/dashboard-backend -n cloudforge
- name: Wait for deployment
run: |
/usr/local/bin/kubectl rollout status deployment/dashboard-backend \
-n cloudforge --timeout=300s
- name: Verify
run: |
/usr/local/bin/kubectl get pods -n cloudforge
/usr/local/bin/kubectl logs deployment/dashboard-backend -n cloudforge --tail=20