diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index 733afad..b21580c 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -1,312 +1,97 @@ -name: CI/CD SIDATA - Rancher +steps: -on: - push: - branches: - - main + # ============================================================ + # 1. Cek Docker / Podman API + # ============================================================ + - name: Check Container Engine + shell: bash + run: | + set -e -jobs: - build-and-deploy: - runs-on: ubuntu-latest + echo "==========================================" + echo "CONTAINER ENGINE" + echo "==========================================" - env: - # ========================================================== - # Proxy - # ========================================================== - HTTP_PROXY: http://10.15.3.20:80 - HTTPS_PROXY: http://10.15.3.20:80 - http_proxy: http://10.15.3.20:80 - https_proxy: http://10.15.3.20:80 + docker version - # ========================================================== - # Internal network bypass proxy - # ========================================================== - NO_PROXY: >- - localhost, - 127.0.0.1, - 10.81.2.10, - 10.15.39.186, - registry-nexus-bpkd.drc-bpkd.data-center.id, - registry-bpkd.drc-bpkd.data-center.id, - .drc-bpkd.data-center.id, - .bpkd.jakarta.go.id + # ============================================================ + # 2. Login Nexus + # ============================================================ + - name: Login Container Registry + shell: bash + run: | + set -e - no_proxy: >- - localhost, - 127.0.0.1, - 10.81.2.10, - 10.15.39.186, - registry-nexus-bpkd.drc-bpkd.data-center.id, - registry-bpkd.drc-bpkd.data-center.id, - .drc-bpkd.data-center.id, - .bpkd.jakarta.go.id + echo "==========================================" + echo "LOGIN NEXUS" + echo "==========================================" - steps: + echo "${{ secrets.REGISTRY_PASSWORD }}" | \ + docker login \ + registry-bpkd.drc-bpkd.data-center.id \ + --username "${{ secrets.REGISTRY_USER }}" \ + --password-stdin - # ========================================================== - # 1. Informasi Runner - # ========================================================== - - name: Check Runner - shell: bash - run: | - set -e + # ============================================================ + # 3. Pull Base Image + # ============================================================ + - name: Pull Base Image + shell: bash + run: | + set -e - echo "==========================================" - echo "RUNNER" - echo "==========================================" + echo "==========================================" + echo "PULL BASE IMAGE" + echo "==========================================" - hostname - uname -a + docker pull \ + registry-nexus-bpkd.drc-bpkd.data-center.id/php74-fpm-oci8-lengkap:1.0 - echo "" - echo "Docker:" - docker --version || true + # ============================================================ + # 4. Build + # ============================================================ + - name: Build Docker Image + shell: bash + run: | + set -e - echo "" - echo "Podman:" - podman --version || true + echo "==========================================" + echo "BUILD SIDATA" + echo "==========================================" - echo "" - echo "Buildah:" - buildah --version || true + docker build \ + --build-arg http_proxy="$HTTP_PROXY" \ + --build-arg https_proxy="$HTTPS_PROXY" \ + --build-arg HTTP_PROXY="$HTTP_PROXY" \ + --build-arg HTTPS_PROXY="$HTTPS_PROXY" \ + --build-arg no_proxy="$NO_PROXY" \ + --build-arg NO_PROXY="$NO_PROXY" \ + -t sidata:latest . - echo "" - echo "Curl:" - curl --version || true + echo "BUILD BERHASIL" - # ========================================================== - # 2. Check Nexus - # ========================================================== - - name: Check Nexus - shell: bash - run: | - set -e + # ============================================================ + # 5. Tag + # ============================================================ + - name: Tag Image + shell: bash + run: | + set -e - echo "==========================================" - echo "CHECK NEXUS" - echo "==========================================" + IMAGE="registry-bpkd.drc-bpkd.data-center.id/${{ secrets.REGISTRY_USER }}/sidata" - getent hosts registry-nexus-bpkd.drc-bpkd.data-center.id + docker tag sidata:latest "${IMAGE}:latest" + docker tag sidata:latest "${IMAGE}:${{ gitea.sha }}" - echo "" - echo "Testing Nexus Registry..." + # ============================================================ + # 6. Push + # ============================================================ + - name: Push Image + shell: bash + run: | + set -e - curl -k -I \ - --connect-timeout 10 \ - https://registry-nexus-bpkd.drc-bpkd.data-center.id/v2/ \ - || true + IMAGE="registry-bpkd.drc-bpkd.data-center.id/${{ secrets.REGISTRY_USER }}/sidata" - # ========================================================== - # 3. Login Nexus - # ========================================================== - - name: Login Nexus - shell: bash - run: | - set -e - - echo "==========================================" - echo "LOGIN NEXUS" - echo "==========================================" - - echo "${{ secrets.NEXUS_PASSWORD }}" | \ - docker login \ - registry-nexus-bpkd.drc-bpkd.data-center.id \ - --username "${{ secrets.NEXUS_USER }}" \ - --password-stdin - - # ========================================================== - # 4. Login Registry BPKD - # ========================================================== - - name: Login BPKD Registry - shell: bash - run: | - set -e - - echo "==========================================" - echo "LOGIN BPKD REGISTRY" - echo "==========================================" - - echo "${{ secrets.REGISTRY_PASSWORD }}" | \ - docker login \ - registry-bpkd.drc-bpkd.data-center.id \ - --username "${{ secrets.REGISTRY_USER }}" \ - --password-stdin - - # ========================================================== - # 5. Build Image - # ========================================================== - - name: Build SIDATA - shell: bash - run: | - set -e - - echo "==========================================" - echo "BUILD SIDATA" - echo "==========================================" - - IMAGE="registry-bpkd.drc-bpkd.data-center.id/${{ secrets.REGISTRY_USER }}/sidata" - - docker build \ - --build-arg http_proxy="$HTTP_PROXY" \ - --build-arg https_proxy="$HTTPS_PROXY" \ - --build-arg HTTP_PROXY="$HTTP_PROXY" \ - --build-arg HTTPS_PROXY="$HTTPS_PROXY" \ - --build-arg no_proxy="$NO_PROXY" \ - --build-arg NO_PROXY="$NO_PROXY" \ - -t "${IMAGE}:latest" \ - -t "${IMAGE}:${GITHUB_SHA:-latest}" \ - . - - echo "" - echo "IMAGE:" - docker images | grep sidata - - # ========================================================== - # 6. Push Image - # ========================================================== - - name: Push SIDATA - shell: bash - run: | - set -e - - IMAGE="registry-bpkd.drc-bpkd.data-center.id/${{ secrets.REGISTRY_USER }}/sidata" - - echo "==========================================" - echo "PUSH SIDATA" - echo "==========================================" - - docker push "${IMAGE}:latest" - docker push "${IMAGE}:${GITHUB_SHA:-latest}" - - # ========================================================== - # 7. Install kubectl - # ========================================================== - - name: Setup kubectl - shell: bash - run: | - set -e - - echo "==========================================" - echo "KUBECTL" - echo "==========================================" - - if command -v kubectl >/dev/null 2>&1; then - echo "kubectl already available" - kubectl version --client - exit 0 - fi - - echo "kubectl tidak ditemukan." - - if [ -x /usr/local/bin/kubectl ]; then - export PATH="/usr/local/bin:$PATH" - kubectl version --client - exit 0 - fi - - echo "ERROR: kubectl belum tersedia di runner." - echo "Install kubectl di image/host runner terlebih dahulu." - exit 1 - - # ========================================================== - # 8. Configure Rancher - # ========================================================== - - name: Configure Rancher - shell: bash - run: | - set -e - - echo "==========================================" - echo "CONFIGURE RANCHER" - echo "==========================================" - - kubectl config set-cluster rancher-cluster \ - --server="${{ secrets.RANCHER_URL }}/k8s/clusters/${{ secrets.RANCHER_CLUSTER_ID }}" \ - --insecure-skip-tls-verify=true - - kubectl config set-credentials rancher-user \ - --token="${{ secrets.RANCHER_TOKEN }}" - - kubectl config set-context rancher-context \ - --cluster=rancher-cluster \ - --user=rancher-user - - kubectl config use-context rancher-context - - # ========================================================== - # 9. Test Rancher - # ========================================================== - - name: Test Rancher - shell: bash - run: | - set -e - - echo "==========================================" - echo "RANCHER" - echo "==========================================" - - kubectl cluster-info - kubectl get nodes - - # ========================================================== - # 10. Deploy Kubernetes - # ========================================================== - - name: Deploy SIDATA - shell: bash - run: | - set -e - - echo "==========================================" - echo "DEPLOY SIDATA" - echo "==========================================" - - if [ -f "k8s/deploy.yaml" ]; then - kubectl apply -f k8s/deploy.yaml - elif [ -f "deploy.yaml" ]; then - kubectl apply -f deploy.yaml - else - echo "ERROR: deploy.yaml tidak ditemukan." - exit 1 - fi - - # ========================================================== - # 11. Update Image - # ========================================================== - - name: Update Image - shell: bash - run: | - set -e - - IMAGE="registry-bpkd.drc-bpkd.data-center.id/${{ secrets.REGISTRY_USER }}/sidata:latest" - - kubectl set image \ - deployment/sidata \ - sidata="${IMAGE}" \ - --record=false - - # ========================================================== - # 12. Wait Rollout - # ========================================================== - - name: Wait Rollout - shell: bash - run: | - set -e - - kubectl rollout status \ - deployment/sidata \ - --timeout=300s - - # ========================================================== - # 13. Status - # ========================================================== - - name: Deployment Status - shell: bash - run: | - echo "==========================================" - echo "DEPLOYMENT STATUS" - echo "==========================================" - - kubectl get deployment sidata -o wide - kubectl get pods -l app=sidata -o wide - kubectl get service sidata - kubectl get ingress + docker push "${IMAGE}:latest" + docker push "${IMAGE}:${{ gitea.sha }}"