Nell'automazione del deployment e del testing, spesso sorge la necessità di utilizzare server proxy nei processi CI/CD. Questo può essere dovuto a politiche di sicurezza aziendale, test di funzionalità geolocalizzate o per aggirare il rate-limiting durante il download delle dipendenze. In questa guida esamineremo la configurazione pratica del proxy per le piattaforme CI/CD più popolari con esempi di configurazione pronti all'uso.
Perché sono necessari i proxy nei processi CI/CD
L'uso di server proxy nei processi di deployment automatizzati risolve diverse problematiche critiche. In primo luogo, molte reti aziendali richiedono che tutto il traffico in uscita passi attraverso proxy aziendali per il controllo della sicurezza e la registrazione. Senza una corretta configurazione, il pipeline CI/CD non sarà in grado di scaricare dipendenze o connettersi a servizi esterni.
In secondo luogo, durante il testing di applicazioni con logica geolocalizzata è necessario verificare il funzionamento da diversi paesi. Ad esempio, se stai sviluppando un servizio con contenuti o prezzi regionali, i test automatici devono simulare utenti provenienti da diverse località. Qui aiutano i proxy residenziali con indirizzi IP delle regioni desiderate.
La terza ragione è l'aggiramento del rate-limiting e dei blocchi. Durante frequenti esecuzioni del pipeline, specialmente in grandi team, i server CI/CD possono essere soggetti a limitazioni API da parte di servizi esterni. Ad esempio, l'API di GitHub o i registri dei pacchetti possono temporaneamente bloccare l'IP se viene superato il limite di richieste. La rotazione dei proxy aiuta a distribuire il carico.
Importante: Per i processi CI/CD è fondamentale la stabilità della connessione. Utilizza proxy con un uptime non inferiore al 99,5% e un tempo di risposta rapido (meno di 200ms). Proxy instabili porteranno a fallimenti casuali delle build e a una perdita di tempo per il team nella ricerca di problemi.
Configurazione del proxy in GitHub Actions
GitHub Actions è una delle piattaforme più popolari per CI/CD. La configurazione del proxy qui avviene tramite variabili d'ambiente, che possono essere impostate a livello di workflow o dell'intera organizzazione. Esaminiamo diversi modi di integrazione.
Configurazione di base tramite variabili d'ambiente
Il modo più semplice è impostare le variabili d'ambiente HTTP_PROXY e HTTPS_PROXY all'inizio del job. La maggior parte degli strumenti (curl, wget, npm, pip) utilizza automaticamente queste variabili:
name: CI with 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
La variabile NO_PROXY è fondamentale: esclude gli indirizzi locali e i servizi interni dal proxy. Senza di essa, potrebbero verificarsi problemi di connessione a localhost o ai contenitori Docker interni.
Archiviazione sicura delle credenziali tramite GitHub Secrets
Se il proxy richiede autenticazione, non memorizzare mai il nome utente e la password in chiaro nel file del workflow. Utilizza i GitHub Secrets:
name: CI with Authenticated Proxy
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Configure 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: Test proxy connection
run: curl -I https://api.github.com
- name: Install dependencies
run: npm ci
Crea i secrets nelle impostazioni del repository: Impostazioni → Secrets e variabili → Actions → Nuovo secret del repository. Aggiungi PROXY_USER, PROXY_PASS, PROXY_HOST e PROXY_PORT. Questi valori saranno crittografati e non visibili nei log.
Configurazione del proxy per passaggi specifici
A volte è necessario utilizzare il proxy solo per determinate operazioni, ad esempio solo per il download delle dipendenze, ma non per il deployment. Imposta le variabili a livello di step specifico:
steps:
- name: Download dependencies via proxy
env:
HTTP_PROXY: http://proxy.example.com:8080
HTTPS_PROXY: http://proxy.example.com:8080
run: npm install
- name: Deploy without proxy
run: ./deploy.sh
Integrazione del proxy con GitLab CI/CD
GitLab CI/CD offre diversi livelli di configurazione del proxy: a livello di runner, a livello di progetto e a livello di job specifico. La scelta dipende dal fatto che il proxy sia necessario per tutti i progetti o solo per alcuni specifici.
Configurazione del proxy a livello di GitLab Runner
Se utilizzi un GitLab Runner self-hosted e tutti i progetti devono funzionare tramite proxy, configurarlo nel file di configurazione del runner. Modifica il 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"
Dopo aver modificato la configurazione, riavvia il runner: sudo gitlab-runner restart. Ora tutti i job su questo runner utilizzeranno automaticamente il proxy.
Configurazione tramite .gitlab-ci.yml
Per configurare il proxy a livello di progetto specifico, utilizza le variabili nel file .gitlab-ci.yml. Questo è un approccio più flessibile, che consente a progetti diversi di utilizzare proxy diversi:
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 configurato: $HTTP_PROXY"
- npm install
- npm run build
artifacts:
paths:
- dist/
test:
stage: test
script:
- npm test
dependencies:
- build
Utilizzo delle variabili CI/CD di GitLab per le credenziali
Per memorizzare dati sensibili, utilizza le variabili CI/CD nelle impostazioni del progetto: Impostazioni → CI/CD → Variabili. Crea variabili protette e mascherate:
- PROXY_URL — URL completo con credenziali (mascherato)
- PROXY_HOST — host del server proxy
- PROXY_PORT — porta
- PROXY_USER e PROXY_PASS — per la memorizzazione separata
Poi utilizzali in .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
Configurazione del proxy in Jenkins
Jenkins offre diversi modi per configurare il proxy a seconda dell'architettura: impostazioni globali per il master di Jenkins, impostazioni per agenti specifici o impostazioni a livello di singolo pipeline.
Impostazione globale del proxy per Jenkins
Per configurare il proxy che verrà utilizzato da Jenkins per aggiornamenti dei plugin e altre operazioni interne, vai su Gestisci Jenkins → Gestisci Plugin → Avanzate. Nella sezione Configurazione HTTP Proxy, specifica:
- Server: proxy.example.com
- Porta: 8080
- Nome utente e Password (se è richiesta autenticazione)
- No Proxy Host: localhost,127.0.0.1,.internal
Questa impostazione influisce solo su Jenkins stesso, ma non sui job. Per i job è necessaria una configurazione separata.
Configurazione del proxy per Jenkins Pipeline
Nel Jenkinsfile puoi impostare variabili d'ambiente per l'intero pipeline o per fasi specifiche:
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'
}
}
}
}
Utilizzo delle credenziali di Jenkins per il proxy
Per memorizzare in modo sicuro le credenziali del proxy, utilizza il Jenkins Credentials Store. Crea credenziali di tipo "Nome utente con password" in Gestisci Jenkins → Gestisci Credenziali, quindi utilizzale nel pipeline:
pipeline {
agent any
stages {
stage('Build with Authenticated Proxy') {
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
'''
}
}
}
}
}
Configurazione del proxy per gli agenti di Jenkins
Se utilizzi agenti Jenkins separati (nodes), configura il proxy per ogni agente separatamente. Nella configurazione dell'agente (Gestisci Jenkins → Gestisci Nodes → Configura) aggiungi nelle variabili d'ambiente:
HTTP_PROXY=http://proxy.example.com:8080
HTTPS_PROXY=http://proxy.example.com:8080
NO_PROXY=localhost,127.0.0.1
Proxy per Docker in CI/CD
Docker è una parte integrante dei moderni processi CI/CD. La configurazione del proxy per Docker ha le sue peculiarità, poiché è necessario configurare il proxy sia per il daemon di Docker che per i contenitori.
Configurazione del proxy per il daemon di Docker
Affinché il daemon di Docker possa scaricare le immagini tramite il proxy, crea un file drop-in di systemd. Su un sistema Linux, crea una directory e un file:
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
Aggiungi il seguente contenuto:
[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"
Ricarica la configurazione e Docker:
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl show --property=Environment docker
Proxy per i contenitori durante la build
Se i contenitori necessitano di accesso tramite proxy durante la build (ad esempio, per installare pacchetti), passa le variabili tramite build args nel 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 . .
# Rimuoviamo le variabili del proxy per il runtime
ENV HTTP_PROXY=
ENV HTTPS_PROXY=
CMD ["npm", "start"]
Nel pipeline CI/CD, passa gli argomenti di build:
# 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 con proxy
Quando utilizzi Docker Compose in CI/CD, configura il proxy tramite environment nel 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"
Configurazione del proxy per i gestori di pacchetti
I gestori di pacchetti richiedono spesso configurazioni aggiuntive per il proxy, specialmente se utilizzano file di configurazione propri. Esaminiamo la configurazione per i gestori di pacchetti più popolari.
NPM e Yarn
NPM può utilizzare sia le variabili d'ambiente HTTP_PROXY/HTTPS_PROXY sia una propria configurazione. Per una configurazione esplicita in CI/CD:
# In GitHub Actions o GitLab CI
- name: Configure npm proxy
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
# Per Yarn
- name: Configure yarn proxy
run: |
yarn config set proxy http://proxy.example.com:8080
yarn config set https-proxy http://proxy.example.com:8080
Un modo alternativo è creare un file .npmrc nella radice del progetto (ma non committare le credenziali!):
# .npmrc (generato in CI)
proxy=http://proxy.example.com:8080
https-proxy=http://proxy.example.com:8080
noproxy=localhost,127.0.0.1
Python pip e Poetry
Pip utilizza variabili d'ambiente, ma può anche essere configurato tramite file di configurazione:
# Tramite variabili d'ambiente (raccomandato per CI)
export HTTP_PROXY=http://proxy.example.com:8080
export HTTPS_PROXY=http://proxy.example.com:8080
pip install -r requirements.txt
# Oppure tramite parametri pip
pip install --proxy http://proxy.example.com:8080 -r requirements.txt
# Per Poetry
poetry config http-basic.proxy http://proxy.example.com:8080
poetry install
Maven e Gradle
Per i progetti Java, la configurazione del proxy richiede la creazione di file di configurazione. Per Maven, crea settings.xml nel pipeline CI:
- name: Configure Maven proxy
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 with Maven
run: mvn clean install
Per Gradle, aggiungi le impostazioni in 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
Archiviazione sicura delle credenziali del proxy
L'archiviazione delle credenziali del proxy è un aspetto critico della sicurezza CI/CD. La fuga di questi dati può portare a un uso non autorizzato del proxy e a perdite finanziarie. Esaminiamo le best practices per diverse piattaforme.
GitHub Actions Secrets
GitHub Actions offre tre livelli di segreti: repository, environment e organization. Per le credenziali del proxy utilizza:
- Repository secrets — per progetti in cui il proxy è necessario solo in un repository
- Organization secrets — se un proxy è utilizzato in tutti i progetti dell'organizzazione
- Environment secrets — per diversi proxy negli ambienti di staging/production
Regole di sicurezza importanti:
- Non stampare mai i segreti nei log: GitHub li maschera automaticamente, ma è meglio evitare l'echo
- Utilizza credenziali diverse per ambienti diversi
- Ruota regolarmente le password del proxy (almeno ogni 90 giorni)
- Limita l'accesso ai segreti tramite le regole di protezione dei branch
GitLab CI/CD Variables
GitLab offre opzioni aggiuntive per proteggere le variabili:
- Protected — la variabile è disponibile solo nei branch protetti (main, production)
- Masked — il valore è automaticamente nascosto nei log
- Environment scope — limitazione dell'uso a specifici ambienti
Configurazione consigliata per le credenziali del proxy:
# Impostazioni → CI/CD → Variabili
PROXY_USER: myuser (Protetto: Sì, Mascherato: Sì)
PROXY_PASS: secret123 (Protetto: Sì, Mascherato: Sì)
PROXY_HOST: proxy.example.com (Protetto: No, Mascherato: No)
PROXY_PORT: 8080 (Protetto: No, Mascherato: No)
Jenkins Credentials Store
Il Jenkins Credentials Store supporta diversi tipi di archiviazione delle credenziali. Per il proxy si consiglia di:
- Utilizzare "Username with password" per il login/password del proxy
- Impostare credenziali a livello di cartella per diversi team/progetti
- Abilitare il Credentials Binding Plugin per un uso sicuro nel Pipeline
- Impostare audit logging per monitorare l'uso delle credenziali
Sistemi esterni di gestione dei segreti
Per ambienti enterprise, si consiglia di utilizzare sistemi specializzati per la gestione dei segreti: HashiCorp Vault, AWS Secrets Manager, Azure Key Vault o Google Secret Manager. Ecco un esempio di integrazione con HashiCorp Vault in GitHub Actions:
- name: Import Secrets from 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: Configure Proxy
run: |
export HTTP_PROXY="http://${PROXY_USER}:${PROXY_PASS}@${PROXY_HOST}:8080"
npm install
Risoluzione di problemi comuni
Durante l'integrazione del proxy in CI/CD, spesso si presentano gli stessi problemi. Esaminiamo i più comuni e come risolverli.
Problema: Connection timeout durante il download delle dipendenze
Sintomi: npm install, pip install o docker pull terminano con un errore di timeout dopo 30-60 secondi.
Cause:
- Il server proxy non è disponibile o è sovraccarico
- Formato URL del proxy errato (manca http:// all'inizio)
- Il proxy richiede autenticazione, ma le credenziali non sono state fornite
- Il firewall blocca la connessione dal runner CI/CD al proxy
Soluzione:
# 1. Controlla la disponibilità del proxy
- name: Test proxy connectivity
run: |
curl -v -x http://proxy.example.com:8080 https://www.google.com
echo "Test proxy completato"
# 2. Aumenta il timeout per npm
- name: Install with increased timeout
run: |
npm config set fetch-timeout 300000
npm install
# 3. Controlla il formato dell'URL
- name: Debug proxy configuration
run: |
echo "HTTP_PROXY: $HTTP_PROXY"
echo "HTTPS_PROXY: $HTTPS_PROXY"
# Dovrebbe essere: http://user:pass@host:port
Problema: SSL certificate verification failed
Sintomi: Errori di tipo "SSL certificate problem: unable to get local issuer certificate" o "CERT_UNTRUSTED".
Cause: I proxy aziendali spesso eseguono l'ispezione SSL, sostituendo i certificati. Il runner CI/CD non si fida del CA aziendale.
Soluzione:
# Opzione 1: Aggiungere il certificato CA aziendale
- name: Install corporate CA certificate
run: |
sudo cp corporate-ca.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
# Opzione 2: Disabilitare la verifica SSL (NON raccomandato per la produzione!)
- name: Install with SSL verification disabled
run: |
npm config set strict-ssl false
npm install
env:
NODE_TLS_REJECT_UNAUTHORIZED: 0
# Opzione 3: Utilizzare il proxy solo per HTTP, HTTPS direttamente
- name: Selective proxy usage
run: npm install
env:
HTTP_PROXY: http://proxy.example.com:8080
# Non impostiamo HTTPS_PROXY
Attenzione: Disabilitare la verifica dei certificati SSL crea un grave rischio per la sicurezza. Utilizza questo approccio solo per reti aziendali interne e assicurati di aggiungere il CA aziendale ai fidati.
Problema: Il proxy funziona per alcuni comandi, ma non per altri
Sintomi: npm install funziona tramite proxy, ma git clone o docker pull ignorano le impostazioni del proxy.
Cause: Strumenti diversi utilizzano meccanismi di configurazione del proxy diversi. Git e Docker hanno i propri file di configurazione.
Soluzione:
# Configurazione del proxy Git
- name: Configure Git proxy
run: |
git config --global http.proxy http://proxy.example.com:8080
git config --global https.proxy http://proxy.example.com:8080
# Configurazione del proxy Docker (vedi sezione Docker sopra)
# Per wget/curl
- name: Configure 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
Problema: Servizi interni non disponibili con il proxy attivato
Sintomi: Dopo aver configurato il proxy, le connessioni a localhost, ai contenitori Docker interni o ai servizi aziendali non funzionano più.
Cause: La variabile NO_PROXY è configurata in modo errato, tutte le richieste passano attraverso il proxy, comprese quelle locali.
Soluzione:
# Corretta configurazione di NO_PROXY
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
# Per Docker Compose aggiungi anche
services:
app:
environment:
- NO_PROXY=localhost,127.0.0.1,db,redis
# db e redis sono i nomi di altri servizi nel compose
Problema: Le credenziali del proxy appaiono nei log
Sintomi: Le password del proxy sono visibili in chiaro nei log CI/CD.
Cause: Stampa delle variabili d'ambiente tramite echo o modalità verbose dei comandi.
Soluzione:
# ❌ MALE - credenziali nei log
- name: Debug proxy
run: |
echo "Proxy: $HTTP_PROXY" # Mostrerà http://user:pass@host:port
curl -v ... # La modalità verbose mostra le credenziali
# ✅ BENE - output sicuro
- name: Debug proxy (safe)
run: |
echo "Proxy host configurato: $(echo $HTTP_PROXY | cut -d'@' -f2)"
# Mostrerà solo host:port
# Utilizza secrets per mascherare
- name: Configure proxy
env:
PROXY_URL: ${{ secrets.PROXY_URL }} # GitHub maschera automaticamente
run: |
export HTTP_PROXY="$PROXY_URL"
Conclusione
L'integrazione del proxy nel pipeline CI/CD è un aspetto importante dell'automazione, che garantisce sicurezza, conformità alle politiche aziendali e possibilità di testare funzionalità geolocalizzate. In questa guida abbiamo esaminato modi pratici per configurare il proxy per GitHub Actions, GitLab CI, Jenkins, Docker e gestori di pacchetti popolari.
Punti chiave da ricordare quando si configura il proxy in CI/CD: utilizza sempre un'archiviazione sicura delle credenziali tramite i meccanismi integrati di segreti delle piattaforme, configura correttamente NO_PROXY per escludere servizi locali e interni, testa la connessione al proxy prima delle operazioni principali e monitora i log per eventuali fughe di dati sensibili. Per ambienti di produzione critici, si consiglia di utilizzare sistemi esterni di gestione dei segreti come HashiCorp Vault.
La scelta del tipo di proxy dipende dalle tue esigenze: per le reti aziendali si utilizzano solitamente proxy HTTP/HTTPS esistenti, per testare funzionalità geolocalizzate sono adatti i proxy residenziali con IP provenienti dai paesi desiderati, mentre per il download ad alta velocità delle dipendenze si possono utilizzare proxy di data center. È importante garantire un alto uptime dei server proxy, poiché la loro indisponibilità porterà al fallimento di tutte le build e bloccherà il lavoro del team di sviluppo.
In caso di problemi, inizia controllando la disponibilità di base del proxy tramite curl o wget, poi verifica la correttezza del formato dell'URL e delle credenziali, e solo dopo passa alle impostazioni specifiche degli strumenti. La maggior parte dei problemi può essere risolta con la corretta configurazione delle variabili d'ambiente HTTP_PROXY, HTTPS_PROXY e NO_PROXY.