name: ArgoCD Sync on Main on: push: branches: - main paths: - 'k8s/**' jobs: argocd-sync: runs-on: docker steps: - name: Checkout run: | REPO_URL="${{ gitea.server_url }}/${{ gitea.repository }}.git" CLONE_URL="https://${{ secrets.CI_RUNNER }}:${{ secrets.CI_RUNNER_SECRET }}@${REPO_URL#https://}" git clone --depth 1 "$CLONE_URL" . cd ${GITHUB_WORKSPACE} git fetch origin main git checkout main - name: Install ArgoCD CLI run: | curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64 chmod +x /usr/local/bin/argocd - name: Configure ArgoCD Access env: ARGOCD_SERVER: ${{ secrets.ARGOCD_SERVER }} ARGOCD_AUTH_TOKEN: ${{ secrets.ARGOCD_AUTH_TOKEN }} run: | echo "Configured ArgoCD credentials" - name: Sync Root Application env: ARGOCD_SERVER: ${{ secrets.ARGOCD_SERVER }} ARGOCD_AUTH_TOKEN: ${{ secrets.ARGOCD_AUTH_TOKEN }} run: | echo "=== Syncing homelab-root ===" argocd app sync homelab-root --force argocd app wait homelab-root --timeout 5m - name: Check Sync Status env: ARGOCD_SERVER: ${{ secrets.ARGOCD_SERVER }} ARGOCD_AUTH_TOKEN: ${{ secrets.ARGOCD_AUTH_TOKEN }} run: | echo "=== ArgoCD Applications Status ===" argocd app list -o table # Verify root app is synced STATUS=$(argocd app get homelab-root -o jsonpath='{.status.syncStatus}') if [ "$STATUS" != "Synced" ]; then echo "❌ Root app sync failed: $STATUS" exit 1 fi echo "✓ Root app synced successfully" - name: Health Check env: ARGOCD_SERVER: ${{ secrets.ARGOCD_SERVER }} ARGOCD_AUTH_TOKEN: ${{ secrets.ARGOCD_AUTH_TOKEN }} run: | echo "=== Checking Application Health ===" argocd app get homelab-root -o wide