diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index b21580c..03f291a 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -14,11 +14,48 @@ steps: docker version + echo "" + echo "Docker executable:" + which docker + # ============================================================ - # 2. Login Nexus + # 2. Check Registry Credentials # ============================================================ - - name: Login Container Registry + - name: Check Registry Credentials shell: bash + env: + REGISTRY_USER: ${{ secrets.REGISTRY_USER }} + REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} + run: | + set -e + + echo "==========================================" + echo "CHECK REGISTRY CREDENTIALS" + echo "==========================================" + + echo "REGISTRY_USER length: ${#REGISTRY_USER}" + echo "REGISTRY_PASSWORD length: ${#REGISTRY_PASSWORD}" + + if [ -z "$REGISTRY_USER" ]; then + echo "ERROR: REGISTRY_USER kosong" + exit 1 + fi + + if [ -z "$REGISTRY_PASSWORD" ]; then + echo "ERROR: REGISTRY_PASSWORD kosong" + exit 1 + fi + + echo "Registry credentials tersedia." + + # ============================================================ + # 3. Login Nexus + # ============================================================ + - name: Login Nexus + shell: bash + env: + REGISTRY_USER: ${{ secrets.REGISTRY_USER }} + REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} run: | set -e @@ -26,14 +63,17 @@ steps: echo "LOGIN NEXUS" echo "==========================================" - echo "${{ secrets.REGISTRY_PASSWORD }}" | \ - docker login \ - registry-bpkd.drc-bpkd.data-center.id \ - --username "${{ secrets.REGISTRY_USER }}" \ + REGISTRY="registry-nexus-bpkd.drc-bpkd.data-center.id" + + printf '%s' "$REGISTRY_PASSWORD" | \ + docker login "$REGISTRY" \ + --username "$REGISTRY_USER" \ --password-stdin + echo "Login Nexus berhasil." + # ============================================================ - # 3. Pull Base Image + # 4. Pull Base Image dari Nexus # ============================================================ - name: Pull Base Image shell: bash @@ -44,11 +84,17 @@ steps: echo "PULL BASE IMAGE" echo "==========================================" - docker pull \ - registry-nexus-bpkd.drc-bpkd.data-center.id/php74-fpm-oci8-lengkap:1.0 + BASE_IMAGE="registry-nexus-bpkd.drc-bpkd.data-center.id/php74-fpm-oci8-lengkap:1.0" + + echo "Base image:" + echo "$BASE_IMAGE" + + docker pull "$BASE_IMAGE" + + echo "Base image berhasil." # ============================================================ - # 4. Build + # 5. Build Application Image # ============================================================ - name: Build Docker Image shell: bash @@ -68,30 +114,153 @@ steps: --build-arg NO_PROXY="$NO_PROXY" \ -t sidata:latest . + echo "" echo "BUILD BERHASIL" + docker images | grep sidata + # ============================================================ - # 5. Tag + # 6. Tag Image ke Nexus # ============================================================ - name: Tag Image shell: bash + env: + REGISTRY_USER: ${{ secrets.REGISTRY_USER }} run: | set -e - IMAGE="registry-bpkd.drc-bpkd.data-center.id/${{ secrets.REGISTRY_USER }}/sidata" + echo "==========================================" + echo "TAG IMAGE" + echo "==========================================" + + REGISTRY="registry-nexus-bpkd.drc-bpkd.data-center.id" + IMAGE="${REGISTRY}/${REGISTRY_USER}/sidata" docker tag sidata:latest "${IMAGE}:latest" docker tag sidata:latest "${IMAGE}:${{ gitea.sha }}" + echo "Image:" + echo "${IMAGE}:latest" + echo "${IMAGE}:${{ gitea.sha }}" + # ============================================================ - # 6. Push + # 7. Push Image ke Nexus # ============================================================ - name: Push Image + shell: bash + env: + REGISTRY_USER: ${{ secrets.REGISTRY_USER }} + run: | + set -e + + echo "==========================================" + echo "PUSH IMAGE KE NEXUS" + echo "==========================================" + + REGISTRY="registry-nexus-bpkd.drc-bpkd.data-center.id" + IMAGE="${REGISTRY}/${REGISTRY_USER}/sidata" + + docker push "${IMAGE}:latest" + docker push "${IMAGE}:${{ gitea.sha }}" + + echo "" + echo "==========================================" + echo "PUSH BERHASIL" + echo "==========================================" + + # ============================================================ + # 8. Install kubectl + # ============================================================ + - name: Install kubectl shell: bash run: | set -e - IMAGE="registry-bpkd.drc-bpkd.data-center.id/${{ secrets.REGISTRY_USER }}/sidata" + echo "==========================================" + echo "INSTALL KUBECTL" + echo "==========================================" - docker push "${IMAGE}:latest" - docker push "${IMAGE}:${{ gitea.sha }}" + KUBECTL_VERSION=$(curl -L -s https://dl.k8s.io/release/stable.txt) + + curl -fL \ + "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl" \ + -o kubectl + + chmod +x kubectl + + ./kubectl version --client + + # ============================================================ + # 9. Configure Rancher + # ============================================================ + - name: Configure Rancher + shell: bash + env: + RANCHER_URL: ${{ secrets.RANCHER_URL }} + RANCHER_CLUSTER_ID: ${{ secrets.RANCHER_CLUSTER_ID }} + RANCHER_TOKEN: ${{ secrets.RANCHER_TOKEN }} + run: | + set -e + + echo "==========================================" + echo "CONFIGURE RANCHER" + echo "==========================================" + + ./kubectl config set-cluster rancher-cluster \ + --server="${RANCHER_URL}/k8s/clusters/${RANCHER_CLUSTER_ID}" \ + --insecure-skip-tls-verify=true + + ./kubectl config set-credentials rancher-user \ + --token="${RANCHER_TOKEN}" + + ./kubectl config set-context rancher-context \ + --cluster=rancher-cluster \ + --user=rancher-user + + ./kubectl config use-context rancher-context + + # ============================================================ + # 10. Test Rancher + # ============================================================ + - name: Test Rancher Connection + shell: bash + run: | + set -e + + echo "==========================================" + echo "RANCHER CONNECTION" + echo "==========================================" + + ./kubectl cluster-info + ./kubectl get nodes + + # ============================================================ + # 11. Deploy Kubernetes + # ============================================================ + - name: Deploy to Rancher + shell: bash + run: | + set -e + + echo "==========================================" + echo "DEPLOY SIDATA" + echo "==========================================" + + if [ -d "k8s" ]; then + ./kubectl apply -f k8s/ + elif [ -f "deploy.yaml" ]; then + ./kubectl apply -f deploy.yaml + elif [ -f "deployment.yaml" ]; then + ./kubectl apply -f deployment.yaml + else + echo "ERROR: Manifest Kubernetes tidak ditemukan." + exit 1 + fi + + echo "" + echo "==========================================" + echo "STATUS DEPLOYMENT" + echo "==========================================" + + ./kubectl get deployments -A + ./kubectl get pods -A