Fix BuildKit network for internal Nexus registry
CI/CD Pipeline to Rancher - SIDATA / build-and-deploy (push) Failing after 22s
CI/CD Pipeline to Rancher - SIDATA / build-and-deploy (push) Failing after 22s
This commit is contained in:
+117
-62
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user