Dalam otomatisasi penyebaran dan pengujian, sering kali diperlukan untuk menggunakan server proxy dalam proses CI/CD. Ini bisa terkait dengan kebijakan keamanan perusahaan, pengujian fitur geolokasi, atau menghindari pembatasan laju saat mengunduh ketergantungan. Dalam panduan ini, kita akan membahas pengaturan praktis proxy untuk platform CI/CD populer dengan contoh konfigurasi yang siap pakai.
Mengapa Proxy Diperlukan dalam Proses CI/CD
Penggunaan server proxy dalam proses penyebaran otomatis menyelesaikan beberapa tugas kritis. Pertama, banyak jaringan perusahaan mengharuskan semua lalu lintas keluar melewati proxy perusahaan untuk kontrol keamanan dan pencatatan. Tanpa pengaturan yang benar, pipeline CI/CD tidak akan dapat mengunduh ketergantungan atau terhubung ke layanan eksternal.
Kedua, saat menguji aplikasi dengan logika geolokasi, perlu untuk memeriksa kinerja dari berbagai negara. Misalnya, jika Anda mengembangkan layanan dengan konten atau penetapan harga regional, pengujian otomatis harus mensimulasikan pengguna dari lokasi yang berbeda. Di sini, proxy residensial dengan alamat IP dari wilayah yang diperlukan sangat membantu.
Alasan ketiga adalah untuk menghindari pembatasan laju dan pemblokiran. Dengan seringnya menjalankan pipeline, terutama dalam tim besar, server CI/CD dapat terkena batasan API dari layanan eksternal. Misalnya, API GitHub atau repositori paket dapat sementara memblokir IP jika melebihi batas permintaan. Rotasi proxy membantu mendistribusikan beban.
Penting: Untuk proses CI/CD, stabilitas koneksi sangat penting. Gunakan proxy dengan uptime tidak kurang dari 99.5% dan respon cepat (kurang dari 200ms). Proxy yang tidak stabil akan menyebabkan kegagalan acak dalam build dan membuang waktu tim untuk penyelidikan.
Pengaturan Proxy di GitHub Actions
GitHub Actions adalah salah satu platform paling populer untuk CI/CD. Pengaturan proxy di sini dilakukan melalui variabel lingkungan, yang dapat ditetapkan pada tingkat workflow atau seluruh organisasi. Mari kita lihat beberapa cara untuk integrasi.
Pengaturan Dasar melalui Variabel Lingkungan
Cara paling sederhana adalah dengan menetapkan variabel lingkungan HTTP_PROXY dan HTTPS_PROXY di awal job. Sebagian besar alat (curl, wget, npm, pip) secara otomatis menggunakan variabel ini:
name: CI dengan Proxy
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
env:
HTTP_PROXY: http://proxy.example.com:8080
HTTPS_PROXY: http://proxy.example.com:8080
NO_PROXY: localhost,127.0.0.1,.internal.domain
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
Variabel NO_PROXY sangat penting — ia mengecualikan alamat lokal dan layanan internal dari pemrosesan proxy. Tanpa itu, mungkin akan ada masalah saat terhubung ke localhost atau kontainer Docker internal.
Penyimpanan Aman Kredensial melalui GitHub Secrets
Jika proxy memerlukan autentikasi, jangan pernah menyimpan nama pengguna dan kata sandi dalam bentuk terbuka di file workflow. Gunakan GitHub Secrets:
name: CI dengan Proxy Terautentikasi
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Konfigurasi Proxy
run: |
echo "HTTP_PROXY=http://${{ secrets.PROXY_USER }}:${{ secrets.PROXY_PASS }}@${{ secrets.PROXY_HOST }}:${{ secrets.PROXY_PORT }}" >> $GITHUB_ENV
echo "HTTPS_PROXY=http://${{ secrets.PROXY_USER }}:${{ secrets.PROXY_PASS }}@${{ secrets.PROXY_HOST }}:${{ secrets.PROXY_PORT }}" >> $GITHUB_ENV
echo "NO_PROXY=localhost,127.0.0.1" >> $GITHUB_ENV
- name: Uji koneksi proxy
run: curl -I https://api.github.com
- name: Install dependencies
run: npm ci
Buat secrets di pengaturan repositori: Settings → Secrets and variables → Actions → New repository secret. Tambahkan PROXY_USER, PROXY_PASS, PROXY_HOST, dan PROXY_PORT. Nilai-nilai ini akan dienkripsi dan tidak tersedia di log.
Pengaturan Proxy untuk Langkah Tertentu
Terkadang perlu menggunakan proxy hanya untuk operasi tertentu, misalnya, hanya untuk mengunduh ketergantungan, tetapi tidak untuk penyebaran. Tetapkan variabel pada tingkat langkah tertentu:
steps:
- name: Unduh ketergantungan melalui proxy
env:
HTTP_PROXY: http://proxy.example.com:8080
HTTPS_PROXY: http://proxy.example.com:8080
run: npm install
- name: Deploy tanpa proxy
run: ./deploy.sh
Integrasi Proxy dengan GitLab CI/CD
GitLab CI/CD menyediakan beberapa tingkat pengaturan proxy: pada tingkat runner, pada tingkat proyek, dan pada tingkat job tertentu. Pilihan tergantung pada apakah proxy diperlukan untuk semua proyek atau hanya untuk tertentu.
Pengaturan Proxy pada Tingkat GitLab Runner
Jika Anda menggunakan GitLab Runner yang di-host sendiri dan semua proyek harus berjalan melalui proxy, atur di konfigurasi runner. Edit file /etc/gitlab-runner/config.toml:
[[runners]]
name = "docker-runner"
url = "https://gitlab.com/"
token = "YOUR_TOKEN"
executor = "docker"
[runners.docker]
image = "alpine:latest"
privileged = false
[runners.docker.services_environment]
HTTP_PROXY = "http://proxy.example.com:8080"
HTTPS_PROXY = "http://proxy.example.com:8080"
NO_PROXY = "localhost,127.0.0.1,.gitlab.com"
Setelah mengubah konfigurasi, restart runner: sudo gitlab-runner restart. Sekarang semua job di runner ini akan secara otomatis menggunakan proxy.
Pengaturan melalui .gitlab-ci.yml
Untuk mengatur proxy pada tingkat proyek tertentu, gunakan variabel dalam file .gitlab-ci.yml. Ini adalah pendekatan yang lebih fleksibel, memungkinkan proyek yang berbeda menggunakan proxy yang berbeda:
variables:
HTTP_PROXY: "http://proxy.example.com:8080"
HTTPS_PROXY: "http://proxy.example.com:8080"
NO_PROXY: "localhost,127.0.0.1,.internal"
stages:
- build
- test
- deploy
build:
stage: build
script:
- echo "Proxy dikonfigurasi: $HTTP_PROXY"
- npm install
- npm run build
artifacts:
paths:
- dist/
test:
stage: test
script:
- npm test
dependencies:
- build
Menggunakan Variabel GitLab CI/CD untuk Kredensial
Untuk menyimpan data sensitif, gunakan Variabel CI/CD di pengaturan proyek: Settings → CI/CD → Variables. Buat variabel yang dilindungi dan disembunyikan:
- PROXY_URL — URL lengkap dengan kredensial (disembunyikan)
- PROXY_HOST — host server proxy
- PROXY_PORT — port
- PROXY_USER dan PROXY_PASS — untuk penyimpanan terpisah
Kemudian gunakan mereka di .gitlab-ci.yml:
build:
stage: build
before_script:
- export HTTP_PROXY="http://${PROXY_USER}:${PROXY_PASS}@${PROXY_HOST}:${PROXY_PORT}"
- export HTTPS_PROXY="http://${PROXY_USER}:${PROXY_PASS}@${PROXY_HOST}:${PROXY_PORT}"
script:
- npm install
- npm run build
Konfigurasi Proxy di Jenkins
Jenkins menawarkan beberapa cara untuk mengatur proxy tergantung pada arsitektur: pengaturan global untuk Jenkins master, pengaturan untuk agen tertentu, atau pengaturan pada tingkat pipeline individu.
Pengaturan Global Proxy untuk Jenkins
Untuk mengatur proxy yang akan digunakan Jenkins untuk pembaruan plugin dan operasi internal lainnya, pergi ke Manage Jenkins → Manage Plugins → Advanced. Di bagian Konfigurasi Proxy HTTP, masukkan:
- Server: proxy.example.com
- Port: 8080
- Nama pengguna dan Kata Sandi (jika memerlukan autentikasi)
- No Proxy Host: localhost,127.0.0.1,.internal
Pengaturan ini hanya mempengaruhi Jenkins itu sendiri, tetapi tidak pada job. Untuk job, diperlukan konfigurasi terpisah.
Pengaturan Proxy untuk Jenkins Pipeline
Dalam Jenkinsfile, Anda dapat menetapkan variabel lingkungan untuk seluruh pipeline atau untuk stage tertentu:
pipeline {
agent any
environment {
HTTP_PROXY = 'http://proxy.example.com:8080'
HTTPS_PROXY = 'http://proxy.example.com:8080'
NO_PROXY = 'localhost,127.0.0.1,.internal'
}
stages {
stage('Build') {
steps {
sh 'npm install'
sh 'npm run build'
}
}
stage('Test') {
steps {
sh 'npm test'
}
}
}
}
Menggunakan Jenkins Credentials untuk Proxy
Untuk penyimpanan aman kredensial proxy, gunakan Jenkins Credentials Store. Buat kredensial tipe "Username with password" di Manage Jenkins → Manage Credentials, lalu gunakan dalam pipeline:
pipeline {
agent any
stages {
stage('Build dengan Proxy Terautentikasi') {
steps {
withCredentials([usernamePassword(
credentialsId: 'proxy-credentials',
usernameVariable: 'PROXY_USER',
passwordVariable: 'PROXY_PASS'
)]) {
sh '''
export HTTP_PROXY="http://${PROXY_USER}:${PROXY_PASS}@proxy.example.com:8080"
export HTTPS_PROXY="http://${PROXY_USER}:${PROXY_PASS}@proxy.example.com:8080"
npm install
'''
}
}
}
}
}
Pengaturan Proxy untuk Agen Jenkins
Jika Anda menggunakan agen Jenkins terpisah (nodes), atur proxy untuk setiap agen secara terpisah. Dalam konfigurasi agen (Manage Jenkins → Manage Nodes → Configure), tambahkan di variabel Lingkungan:
HTTP_PROXY=http://proxy.example.com:8080
HTTPS_PROXY=http://proxy.example.com:8080
NO_PROXY=localhost,127.0.0.1
Proxy untuk Docker dalam CI/CD
Docker adalah bagian integral dari proses CI/CD modern. Pengaturan proxy untuk Docker memiliki keunikan tersendiri, karena perlu mengatur proxy untuk daemon Docker dan untuk kontainer.
Pengaturan Proxy untuk Daemon Docker
Agar daemon Docker dapat mengunduh gambar melalui proxy, buat file drop-in systemd. Di sistem Linux, buat direktori dan file:
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
Tambahkan konten berikut:
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080"
Environment="HTTPS_PROXY=http://proxy.example.com:8080"
Environment="NO_PROXY=localhost,127.0.0.1,.internal,docker.io"
Restart konfigurasi dan Docker:
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl show --property=Environment docker
Proxy untuk Kontainer Selama Build
Jika kontainer memerlukan akses melalui proxy selama build (misalnya, untuk menginstal paket), kirimkan variabel melalui build args di Dockerfile:
FROM node:18-alpine
ARG HTTP_PROXY
ARG HTTPS_PROXY
ARG NO_PROXY
ENV HTTP_PROXY=${HTTP_PROXY}
ENV HTTPS_PROXY=${HTTPS_PROXY}
ENV NO_PROXY=${NO_PROXY}
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
# Hapus variabel proxy untuk runtime
ENV HTTP_PROXY=
ENV HTTPS_PROXY=
CMD ["npm", "start"]
Dalam pipeline CI/CD, kirimkan build args:
# GitHub Actions
- name: Build Docker image with proxy
run: |
docker build \
--build-arg HTTP_PROXY=${{ secrets.PROXY_URL }} \
--build-arg HTTPS_PROXY=${{ secrets.PROXY_URL }} \
--build-arg NO_PROXY=localhost,127.0.0.1 \
-t myapp:latest .
# GitLab CI
docker build:
script:
- docker build
--build-arg HTTP_PROXY="${PROXY_URL}"
--build-arg HTTPS_PROXY="${PROXY_URL}"
-t myapp:latest .
Docker Compose dengan Proxy
Saat menggunakan Docker Compose dalam CI/CD, atur proxy melalui environment di docker-compose.yml:
version: '3.8'
services:
app:
build:
context: .
args:
- HTTP_PROXY=${HTTP_PROXY}
- HTTPS_PROXY=${HTTPS_PROXY}
environment:
- HTTP_PROXY=${HTTP_PROXY}
- HTTPS_PROXY=${HTTPS_PROXY}
- NO_PROXY=localhost,127.0.0.1
ports:
- "3000:3000"
Pengaturan Proxy untuk Manajer Paket
Manajer paket sering memerlukan pengaturan tambahan untuk proxy, terutama jika menggunakan file konfigurasi mereka sendiri. Mari kita lihat pengaturan untuk manajer paket populer.
NPM dan Yarn
NPM dapat menggunakan variabel lingkungan HTTP_PROXY/HTTPS_PROXY, serta konfigurasi mereka sendiri. Untuk pengaturan eksplisit dalam CI/CD:
# Di GitHub Actions atau GitLab CI
- name: Konfigurasi proxy npm
run: |
npm config set proxy http://proxy.example.com:8080
npm config set https-proxy http://proxy.example.com:8080
npm config set noproxy "localhost,127.0.0.1"
- name: Install dependencies
run: npm install
# Untuk Yarn
- name: Konfigurasi proxy yarn
run: |
yarn config set proxy http://proxy.example.com:8080
yarn config set https-proxy http://proxy.example.com:8080
Cara alternatif adalah dengan membuat file .npmrc di root proyek (tetapi jangan commit kredensial!):
# .npmrc (dihasilkan dalam CI)
proxy=http://proxy.example.com:8080
https-proxy=http://proxy.example.com:8080
noproxy=localhost,127.0.0.1
Python pip dan Poetry
Pip menggunakan variabel lingkungan, tetapi juga dapat diatur melalui konfigurasi:
# Melalui variabel lingkungan (direkomendasikan untuk CI)
export HTTP_PROXY=http://proxy.example.com:8080
export HTTPS_PROXY=http://proxy.example.com:8080
pip install -r requirements.txt
# Atau melalui parameter pip
pip install --proxy http://proxy.example.com:8080 -r requirements.txt
# Untuk Poetry
poetry config http-basic.proxy http://proxy.example.com:8080
poetry install
Maven dan Gradle
Untuk proyek Java, pengaturan proxy memerlukan pembuatan file konfigurasi. Untuk Maven, buat settings.xml dalam pipeline CI:
- name: Konfigurasi proxy Maven
run: |
mkdir -p ~/.m2
cat > ~/.m2/settings.xml << EOF
<settings>
<proxies>
<proxy>
<id>http-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>proxy.example.com</host>
<port>8080</port>
<nonProxyHosts>localhost|127.0.0.1</nonProxyHosts>
</proxy>
</proxies>
</settings>
EOF
- name: Build dengan Maven
run: mvn clean install
Untuk Gradle, tambahkan pengaturan di gradle.properties:
systemProp.http.proxyHost=proxy.example.com
systemProp.http.proxyPort=8080
systemProp.https.proxyHost=proxy.example.com
systemProp.https.proxyPort=8080
systemProp.http.nonProxyHosts=localhost|127.0.0.1
Penyimpanan Aman Kredensial Proxy
Penyimpanan kredensial proxy adalah aspek kritis dari keamanan CI/CD. Kebocoran data ini dapat menyebabkan penggunaan proxy yang tidak sah dan kerugian finansial. Mari kita lihat praktik terbaik untuk berbagai platform.
GitHub Actions Secrets
GitHub Actions menawarkan tiga tingkat rahasia: repository, environment, dan organization. Untuk kredensial proxy, gunakan:
- Repository secrets — untuk proyek di mana proxy hanya diperlukan di satu repositori
- Organization secrets — jika satu proxy digunakan di semua proyek organisasi
- Environment secrets — untuk proxy yang berbeda di lingkungan staging/production
Aturan keamanan penting:
- Jangan pernah mencetak rahasia di log: GitHub secara otomatis menyembunyikannya, tetapi lebih baik menghindari echo
- Gunakan kredensial yang berbeda untuk lingkungan yang berbeda
- Secara teratur rotasi kata sandi proxy (setidaknya setiap 90 hari)
- Batasi akses ke rahasia melalui aturan perlindungan cabang
GitLab CI/CD Variables
GitLab menawarkan opsi perlindungan tambahan untuk variabel:
- Protected — variabel hanya tersedia di cabang yang dilindungi (main, production)
- Masked — nilai secara otomatis disembunyikan di log
- Environment scope — pembatasan penggunaan pada lingkungan tertentu
Konfigurasi yang disarankan untuk kredensial proxy:
# Settings → CI/CD → Variables
PROXY_USER: myuser (Protected: Yes, Masked: Yes)
PROXY_PASS: secret123 (Protected: Yes, Masked: Yes)
PROXY_HOST: proxy.example.com (Protected: No, Masked: No)
PROXY_PORT: 8080 (Protected: No, Masked: No)
Jenkins Credentials Store
Jenkins Credentials Store mendukung beberapa jenis penyimpanan kredensial. Untuk proxy, disarankan:
- Gunakan "Username with password" untuk nama pengguna/kata sandi proxy
- Atur kredensial tingkat Folder untuk tim/proyek yang berbeda
- Aktifkan Credentials Binding Plugin untuk penggunaan aman dalam Pipeline
- Atur audit logging untuk melacak penggunaan kredensial
Sistem Manajemen Rahasia Eksternal
Untuk lingkungan perusahaan, disarankan untuk menggunakan sistem manajemen rahasia khusus: HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, atau Google Secret Manager. Contoh integrasi dengan HashiCorp Vault dalam GitHub Actions:
- name: Impor Rahasia dari Vault
uses: hashicorp/vault-action@v2
with:
url: https://vault.example.com
token: ${{ secrets.VAULT_TOKEN }}
secrets: |
secret/data/proxy proxy_user | PROXY_USER ;
secret/data/proxy proxy_pass | PROXY_PASS ;
secret/data/proxy proxy_host | PROXY_HOST
- name: Konfigurasi Proxy
run: |
export HTTP_PROXY="http://${PROXY_USER}:${PROXY_PASS}@${PROXY_HOST}:8080"
npm install
Solusi Masalah Umum
Saat mengintegrasikan proxy dalam CI/CD, sering kali muncul masalah yang sama. Mari kita lihat masalah yang paling umum dan cara mengatasinya.
Masalah: Timeout Koneksi saat Mengunduh Ketergantungan
Gejala: npm install, pip install, atau docker pull gagal dengan kesalahan timeout setelah 30-60 detik.
Penyebab:
- Server proxy tidak tersedia atau kelebihan beban
- Format URL proxy salah (lupa http:// di awal)
- Proxy memerlukan autentikasi, tetapi kredensial tidak diberikan
- Firewall memblokir koneksi dari runner CI/CD ke proxy
Solusi:
# 1. Periksa ketersediaan proxy
- name: Uji konektivitas proxy
run: |
curl -v -x http://proxy.example.com:8080 https://www.google.com
echo "Uji proxy selesai"
# 2. Tingkatkan timeout untuk npm
- name: Install dengan timeout yang ditingkatkan
run: |
npm config set fetch-timeout 300000
npm install
# 3. Periksa format URL
- name: Debug konfigurasi proxy
run: |
echo "HTTP_PROXY: $HTTP_PROXY"
echo "HTTPS_PROXY: $HTTPS_PROXY"
# Harusnya: http://user:pass@host:port
Masalah: Verifikasi Sertifikat SSL Gagal
Gejala: Kesalahan seperti "Masalah sertifikat SSL: tidak dapat mendapatkan sertifikat penerbit lokal" atau "CERT_UNTRUSTED".
Penyebab: Proxy perusahaan sering melakukan inspeksi SSL, mengganti sertifikat. Runner CI/CD tidak mempercayai CA perusahaan.
Solusi:
# Opsi 1: Tambahkan sertifikat CA perusahaan
- name: Instal sertifikat CA perusahaan
run: |
sudo cp corporate-ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
# Opsi 2: Nonaktifkan verifikasi SSL (TIDAK disarankan untuk produksi!)
- name: Instal dengan verifikasi SSL dinonaktifkan
run: |
npm config set strict-ssl false
npm install
env:
NODE_TLS_REJECT_UNAUTHORIZED: 0
# Opsi 3: Gunakan proxy hanya untuk HTTP, HTTPS langsung
- name: Penggunaan proxy selektif
run: npm install
env:
HTTP_PROXY: http://proxy.example.com:8080
# HTTPS_PROXY tidak diatur
Peringatan: Menonaktifkan verifikasi sertifikat SSL menciptakan risiko keamanan yang serius. Gunakan pendekatan ini hanya untuk jaringan perusahaan internal dan pastikan untuk menambahkan CA perusahaan ke dalam daftar yang dipercaya.
Masalah: Proxy Berfungsi untuk Beberapa Perintah, tetapi Tidak untuk yang Lain
Gejala: npm install berfungsi melalui proxy, tetapi git clone atau docker pull mengabaikan pengaturan proxy.
Penyebab: Alat yang berbeda menggunakan mekanisme pengaturan proxy yang berbeda. Git dan Docker memiliki file konfigurasi mereka sendiri.
Solusi:
# Pengaturan proxy Git
- name: Konfigurasi proxy Git
run: |
git config --global http.proxy http://proxy.example.com:8080
git config --global https.proxy http://proxy.example.com:8080
# Pengaturan proxy Docker (lihat bagian Docker di atas)
# Untuk wget/curl
- name: Konfigurasi wget/curl
run: |
echo "use_proxy = on" >> ~/.wgetrc
echo "http_proxy = http://proxy.example.com:8080" >> ~/.wgetrc
echo "https_proxy = http://proxy.example.com:8080" >> ~/.wgetrc
Masalah: Layanan Internal Tidak Tersedia Saat Proxy Diaktifkan
Gejala: Setelah mengatur proxy, koneksi ke localhost, kontainer Docker internal, atau layanan perusahaan berhenti berfungsi.
Penyebab: Variabel NO_PROXY tidak diatur dengan benar, semua permintaan melewati proxy, termasuk lokal.
Solusi:
# Pengaturan NO_PROXY yang benar
env:
HTTP_PROXY: http://proxy.example.com:8080
HTTPS_PROXY: http://proxy.example.com:8080
NO_PROXY: |
localhost,
127.0.0.1,
0.0.0.0,
.internal,
.local,
.corp.example.com,
docker.internal,
host.docker.internal
# Untuk Docker Compose, juga tambahkan
services:
app:
environment:
- NO_PROXY=localhost,127.0.0.1,db,redis
# db dan redis — nama layanan lain dalam compose
Masalah: Kredensial Proxy Muncul di Log
Gejala: Kata sandi proxy terlihat di log CI/CD dalam bentuk terbuka.
Penyebab: Mencetak variabel lingkungan melalui echo atau mode verbose dari perintah.
Solusi:
# ❌ BURUK - kredensial di log
- name: Debug proxy
run: |
echo "Proxy: $HTTP_PROXY" # Menunjukkan http://user:pass@host:port
curl -v ... # Mode verbose menunjukkan kredensial
# ✅ BAIK - output aman
- name: Debug proxy (aman)
run: |
echo "Host proxy dikonfigurasi: $(echo $HTTP_PROXY | cut -d'@' -f2)"
# Hanya menunjukkan host:port
# Gunakan secrets untuk menyembunyikan
- name: Konfigurasi proxy
env:
PROXY_URL: ${{ secrets.PROXY_URL }} # GitHub secara otomatis menyembunyikan
run: |
export HTTP_PROXY="$PROXY_URL"
Kesimpulan
Integrasi proxy dalam pipeline CI/CD adalah aspek penting dari otomatisasi yang memastikan keamanan, kepatuhan terhadap kebijakan perusahaan, dan kemampuan untuk menguji fitur geolokasi. Dalam panduan ini, kita telah membahas cara praktis untuk mengatur proxy untuk GitHub Actions, GitLab CI, Jenkins, Docker, dan manajer paket populer.
Poin kunci yang perlu diingat saat mengatur proxy dalam CI/CD: selalu gunakan penyimpanan aman untuk kredensial melalui mekanisme rahasia bawaan platform, atur NO_PROXY dengan benar untuk mengecualikan layanan lokal dan internal, uji koneksi ke proxy sebelum operasi utama, dan pantau log untuk kebocoran data sensitif. Untuk lingkungan produksi yang kritis, disarankan untuk menggunakan sistem manajemen rahasia eksternal seperti HashiCorp Vault.
Pemilihan jenis proxy tergantung pada tugas Anda: untuk jaringan perusahaan biasanya digunakan proxy HTTP/HTTPS yang ada, untuk pengujian fitur geolokasi cocok menggunakan proxy residensial dengan IP dari negara yang diperlukan, dan untuk pengunduhan ketergantungan yang cepat dapat menggunakan proxy data center. Penting untuk memastikan uptime tinggi dari server proxy, karena ketidaktersediaannya akan menyebabkan kegagalan semua build dan memblokir pekerjaan tim pengembangan.
Saat menghadapi masalah, mulai dengan memeriksa ketersediaan dasar proxy melalui curl atau wget, kemudian periksa format URL dan kredensial yang benar, dan hanya setelah itu beralih ke pengaturan spesifik dari alat tertentu. Sebagian besar masalah dapat diselesaikan dengan pengaturan yang benar dari variabel lingkungan HTTP_PROXY, HTTPS_PROXY, dan NO_PROXY.