150b5011d5
Klustret följer git — ingen CI-process har kubectl-åtkomst: - Nytt publiceringsflöde (.github/workflows/publicera.yml): varje main-push bygger de tre bilderna, publicerar till GHCR taggade med git-SHA (endast GITHUB_TOKEN, inga externa hemligheter), uppdaterar produktions-overlayens taggar med kustomize edit set image och committar tillbaka — overlayen ombyggs som verifiering före commit, och paths-ignore + [skip ci] förhindrar triggerloopar. - Produktions-overlay (infra/overlays/produktion): GitOps-sanningen för vad som kör; bas = infra/k8s. Rollback = git revert. - Argo CD-applikation (infra/gitops/argocd-application.yaml): automatisk synk med prune + selfHeal; hemligheten ligger medvetet utanför både git och synken. Bootstrap = ett kubectl apply. - DRIFT.md: CI/CD-avsnitt med flödesdiagram, bootstrap, rollback och repo-variabeln PLATTFORM_URL. Verifierat med riktig kustomize v5.4.3: overlayen bygger 17 objekt, bildbytet slår igenom på alla tre tjänsterna, postgres-init genereras, och workflowens exakta edit set image-kommandon fungerar. Alla workflow-/manifest-YAML validerade; 29 vitest-tester gröna. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt
62 lines
2.5 KiB
YAML
62 lines
2.5 KiB
YAML
# CD-halvan av GitOps-flödet: varje push till main bygger och publicerar
|
|
# de tre bilderna till GHCR taggade med git-SHA:t, och uppdaterar sedan
|
|
# produktions-overlayens taggar i git. Argo CD ser ändringen och synkar
|
|
# klustret — ingen kubectl-åtkomst från CI, klustret drar själv.
|
|
name: Publicera
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
paths-ignore:
|
|
- "infra/overlays/**" # gitops-commiten ska inte trigga en ny publicering
|
|
|
|
permissions:
|
|
contents: write
|
|
packages: write
|
|
|
|
env:
|
|
REGISTER: ghcr.io/${{ github.repository_owner }}
|
|
|
|
jobs:
|
|
publicera:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Bygg och publicera web
|
|
run: |
|
|
docker build -t "$REGISTER/guidad-felsokning-web:${{ github.sha }}" \
|
|
--build-arg VITE_PLATTFORM_URL="${{ vars.PLATTFORM_URL }}" \
|
|
--build-arg VITE_AI_ORKESTER_URL="${{ vars.PLATTFORM_URL }}" .
|
|
docker push "$REGISTER/guidad-felsokning-web:${{ github.sha }}"
|
|
- name: Bygg och publicera ai-orkester
|
|
run: |
|
|
docker build -t "$REGISTER/guidad-felsokning-ai-orkester:${{ github.sha }}" services/ai-orkester
|
|
docker push "$REGISTER/guidad-felsokning-ai-orkester:${{ github.sha }}"
|
|
- name: Bygg och publicera plattform
|
|
run: |
|
|
docker build -t "$REGISTER/guidad-felsokning-plattform:${{ github.sha }}" services/plattform
|
|
docker push "$REGISTER/guidad-felsokning-plattform:${{ github.sha }}"
|
|
|
|
- name: Uppdatera produktions-overlayen (GitOps)
|
|
run: |
|
|
curl -sL "https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv5.4.3/kustomize_v5.4.3_linux_amd64.tar.gz" | tar xz
|
|
cd infra/overlays/produktion
|
|
for tjanst in web ai-orkester plattform; do
|
|
../../../kustomize edit set image \
|
|
"ghcr.io/ORGANISATION/guidad-felsokning-$tjanst=$REGISTER/guidad-felsokning-$tjanst:${{ github.sha }}"
|
|
done
|
|
../../../kustomize build . > /dev/null # verifiera att overlayen fortfarande bygger
|
|
- name: Committa overlay-uppdateringen
|
|
run: |
|
|
git config user.name "gitops-bot"
|
|
git config user.email "gitops@users.noreply.github.com"
|
|
git add infra/overlays/produktion/kustomization.yaml
|
|
git diff --cached --quiet || git commit -m "gitops: driftsätt ${{ github.sha }} [skip ci]"
|
|
git push
|