From c8be35b1deb3c32fb2d3250b48e58c8cc1679b04 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 7 Sep 2026 13:28:55 +0700 Subject: [PATCH] Fix BuildKit network for internal Nexus registry --- .gitea/workflows/deploy.yaml | 179 +++++++++++++++++++++++------------ 1 file changed, 117 insertions(+), 62 deletions(-) diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index bb34c72..9c67e6d 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -18,35 +18,23 @@ jobs: http_proxy: http://10.15.3.20:80 https_proxy: http://10.15.3.20:80 - # Registry dan repository internal 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, - .bpkd.jakarta.go.id + # ============================================================ + # 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" - 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, - .bpkd.jakarta.go.id + 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" steps: # ============================================================ - # Checkout + # 1. Checkout # ============================================================ - name: Checkout Code uses: actions/checkout@v3 # ============================================================ - # Diagnostic - Network & Proxy + # 2. Diagnostic # ============================================================ - name: Test Registry Connectivity shell: bash @@ -54,23 +42,46 @@ jobs: set -e echo "==========================================" - echo " Proxy Environment" + echo "SYSTEM" echo "==========================================" + + hostname + uname -a + + echo "" + echo "==========================================" + echo "PROXY" + echo "==========================================" + env | grep -i proxy || true echo "" echo "==========================================" - echo " DNS Resolution" + echo "DNS" echo "==========================================" - getent hosts registry-nexus-bpkd.drc-bpkd.data-center.id - getent hosts registry-bpkd.drc-bpkd.data-center.id + echo "Nexus:" + getent hosts registry-nexus-bpkd.drc-bpkd.data-center.id || true + + echo "BPKD Registry:" + getent hosts registry-bpkd.drc-bpkd.data-center.id || true echo "" echo "==========================================" - echo " Test Nexus Registry" + echo "HOSTS" echo "==========================================" + cat /etc/hosts + + echo "" + echo "==========================================" + echo "NEXUS /v2/" + echo "==========================================" + + HTTPS_PROXY= \ + HTTP_PROXY= \ + https_proxy= \ + http_proxy= \ curl -vk \ --connect-timeout 10 \ https://registry-nexus-bpkd.drc-bpkd.data-center.id/v2/ \ @@ -78,7 +89,7 @@ jobs: echo "" echo "==========================================" - echo " Test BPKD Registry" + echo "BPKD REGISTRY /v2/" echo "==========================================" curl -vk \ @@ -87,7 +98,7 @@ jobs: || true # ============================================================ - # Login Registry + # 3. Login Registry # ============================================================ - name: Log in to Gitea Container Registry uses: docker/login-action@v2 @@ -97,58 +108,86 @@ jobs: password: ${{ secrets.REGISTRY_PASSWORD }} # ============================================================ - # Build & Push + # 4. Setup Buildx + # + # PENTING: + # network=host diletakkan DI SINI. + # Jangan diletakkan di build-push-action. # ============================================================ - - name: Prepare Base Image + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + driver: docker-container + driver-opts: | + network=host + + # ============================================================ + # 5. Diagnostic BuildKit + # ============================================================ + - name: Check BuildKit shell: bash run: | set -e - BASE_IMAGE="registry-nexus-bpkd.drc-bpkd.data-center.id/php74-fpm-oci8-lengkap:1.0" + echo "==========================================" + echo "Docker Version" + echo "==========================================" - echo "Checking local base image..." + docker version - if podman image exists "$BASE_IMAGE"; then - echo "Base image already exists locally." - else - echo "Base image not found. Pulling from Nexus..." + echo "" + echo "==========================================" + echo "Buildx Version" + echo "==========================================" - HTTPS_PROXY= \ - HTTP_PROXY= \ - https_proxy= \ - http_proxy= \ - NO_PROXY="registry-nexus-bpkd.drc-bpkd.data-center.id,10.81.2.10" \ - no_proxy="registry-nexus-bpkd.drc-bpkd.data-center.id,10.81.2.10" \ - podman pull "$BASE_IMAGE" - fi + docker buildx version - echo "Creating local build tag..." + echo "" + echo "==========================================" + echo "Buildx Inspect" + echo "==========================================" - podman tag \ - "$BASE_IMAGE" \ - php74-fpm-oci8-lengkap:1.0 + docker buildx inspect --bootstrap - echo "Base image ready:" - podman image inspect php74-fpm-oci8-lengkap:1.0 \ - --format '{{.Id}}' + echo "" + echo "==========================================" + echo "DNS From Build Environment" + echo "==========================================" + getent hosts registry-nexus-bpkd.drc-bpkd.data-center.id || true + + # ============================================================ + # 6. Build & Push + # ============================================================ + - name: Build and Push Docker Image + uses: docker/build-push-action@v6 with: context: . push: true - # Proxy hanya diberikan kepada proses build. - # NO_PROXY memastikan registry internal tidak lewat proxy. + # ======================================================== + # Build arguments + # ======================================================== build-args: | http_proxy=${{ env.http_proxy }} https_proxy=${{ env.https_proxy }} no_proxy=${{ env.no_proxy }} + # ======================================================== + # Image Tags + # ======================================================== tags: | registry-bpkd.drc-bpkd.data-center.id/${{ secrets.REGISTRY_USER }}/sidata:latest registry-bpkd.drc-bpkd.data-center.id/${{ secrets.REGISTRY_USER }}/sidata:${{ gitea.sha }} + # ======================================================== + # Build Cache + # ======================================================== + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max + # ============================================================ - # Deploy ke Rancher + # 7. Deploy ke Rancher # ============================================================ - name: Deploy to Rancher Cluster shell: bash @@ -156,7 +195,7 @@ jobs: set -e echo "==========================================" - echo " Download kubectl" + echo "Download kubectl" echo "==========================================" KUBECTL_VERSION=$(curl -L -s https://dl.k8s.io/release/stable.txt) @@ -169,12 +208,15 @@ jobs: chmod +x kubectl echo "" - echo "kubectl client version:" + echo "==========================================" + echo "kubectl Client" + echo "==========================================" + ./kubectl version --client echo "" echo "==========================================" - echo " Configure Rancher Kubeconfig" + echo "Configure Rancher" echo "==========================================" ./kubectl config set-cluster rancher-cluster \ @@ -192,30 +234,43 @@ jobs: echo "" echo "==========================================" - echo " Test Rancher Connection" + echo "Test Rancher Connection" echo "==========================================" ./kubectl cluster-info echo "" echo "==========================================" - echo " Kubernetes Nodes" + echo "Kubernetes Nodes" echo "==========================================" ./kubectl get nodes echo "" echo "==========================================" - echo " Deploy" + echo "Deploy Application" echo "==========================================" - # Sesuaikan file manifest dengan repository Anda. - # Jika file deployment.yaml berada di folder k8s: - ./kubectl apply -f k8s/ + if [ -d "k8s" ]; then + echo "Applying manifests from k8s/" + ./kubectl apply -f k8s/ + + elif [ -f "deploy.yaml" ]; then + echo "Applying deploy.yaml" + ./kubectl apply -f deploy.yaml + + elif [ -f "deployment.yaml" ]; then + echo "Applying deployment.yaml" + ./kubectl apply -f deployment.yaml + + else + echo "ERROR: Kubernetes manifest tidak ditemukan." + exit 1 + fi echo "" echo "==========================================" - echo " Deployment Status" + echo "Deployment Status" echo "==========================================" ./kubectl get deployments -A