diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index 561e1bd..a5d8f0c 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -1,17 +1,23 @@ name: Harita Build ve Deploy -run-name: ${{ gitea.actor }} Harita Yayınlanıyor 🟢 +run-name: ${{ gitea.actor }} Harita Build ve Deploy 🚀 on: [push] jobs: build-and-deploy: runs-on: ubuntu-latest - # DOCKER_HOST tanımı KALDIRILDI! + # KUBERNETES ÜZERİNDEKİ DOCKER BAĞLANTISI İÇİN GEREKLİ ORTAM DEĞİŞKENLERİ + env: + DOCKER_HOST: unix:///var/run/dind-socket-dir/docker.sock + DOCKER_TLS_CERTDIR: "" + steps: - name: Kodu Çek (Checkout) uses: actions/checkout@v3 - # Sadece Docker'ı başlatmak kalıyor + # ----------------------------------------------------------------- + # CI KISMI + # ----------------------------------------------------------------- - name: Docker Buildx Kurulumu uses: docker/setup-buildx-action@v3 @@ -22,11 +28,34 @@ jobs: username: gitea_admin password: ${{ secrets.REGISTRY_TOKEN }} + # PUSH ADIMI: Yeni imajın kimliğini (digest) çıktı olarak alıyoruz - name: Docker Build ve Push + id: docker_build # <-- Çıktı almak için bu ID gerekli uses: docker/build-push-action@v5 with: context: . push: true tags: git.konstantiniyye.studio/gitea_admin/dogu:latest cache-from: type=gha - cache-to: type=gha,mode=max \ No newline at end of file + cache-to: type=gha,mode=max + + # ----------------------------------------------------------------- + # CD KISMI (Continuous Deployment) + # ----------------------------------------------------------------- + - name: Kubernetes'e Deploy Et + uses: appleboy/kubectl-action@master # Popüler kubectl action'ı + with: + # Gitea'da tanımlanan Kubeconfig Secret'ı kullanır + kubeconfig_content: ${{ secrets.KUBE_CONFIG }} + # Tek bir shell komutunda imajı güncelleyip Deployment'ı yeniden başlatır + script: | + # Yeni imajın Digest'i (sha256:...) otomatik olarak alınır + NEW_IMAGE_DIGEST="git.konstantiniyye.studio/gitea_admin/dogu@${{ steps.docker_build.outputs.digest }}" + + echo "Yeni imaj: $NEW_IMAGE_DIGEST" + + # 1. Deployment'taki imajı yeni Digest ile günceller + kubectl set image deployment/dogu-haritasi web=${NEW_IMAGE_DIGEST} -n default + + # 2. Güncellemenin hemen başlaması için Deployment'ı yeniden başlatır + kubectl rollout restart deployment/dogu-haritasi -n default \ No newline at end of file diff --git a/deployment.yaml b/deployment.yaml index b4c59bb..e9ab7cf 100644 --- a/deployment.yaml +++ b/deployment.yaml @@ -13,9 +13,12 @@ spec: labels: app: dogu-haritasi spec: + # KUBERNETES BURADAN İZİN BELGELERİNİ ALIR + imagePullSecrets: + - name: gitea-reg-cred containers: - name: web - # Kendi kullanıcı adınla güncelle + # İmajınız image: git.konstantiniyye.studio/gitea_admin/dogu:latest imagePullPolicy: Always ports: @@ -27,6 +30,7 @@ metadata: name: dogu-haritasi-service namespace: default spec: + # Service objesine secrets eklenmez, sadece Pod'u seçer selector: app: dogu-haritasi type: ClusterIP