Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
A colpo d'occhio
Obiettivo: Integrare Dev Proxy in CI/CD
Tempo: 30 minuti
Plugin: Vari
Prerequisiti:Configurare il proxy di sviluppo
L'uso di Dev Proxy negli scenari CI/CD è un ottimo modo per testare le applicazioni in un ambiente controllato. Quando si combina Dev Proxy con test che generano richieste API nell'applicazione, è possibile coprire un'ampia gamma di scenari: dall'assicurare che l'app non usi API shadow o non di produzione per verificare che usi autorizzazioni minime di Microsoft Graph. Anche se i passaggi di configurazione esatti variano a seconda del sistema CI/CD, ecco alcuni principi generali da seguire.
Nella maggior parte dei casi, il tuo runner non ha installato Dev Proxy. Quindi, prima di poter usare Dev Proxy, è necessario installarlo. I passaggi di installazione del dipendono dal sistema operativo utilizzato dal runner.
Suggerimento
Per velocizzare la pipeline, prendere in considerazione la memorizzazione nella cache della cartella di installazione di Dev Proxy. In questo modo, non è necessario scaricare Dev Proxy ogni volta che si esegue la pipeline. Per i passaggi esatti, vedere la documentazione del sistema CI/CD.
Quando si installa Dev Proxy in un'installazione CI/CD, in genere si vuole aggiungere la versione di Dev Proxy installata. Fissare la versione garantisce che la tua pipeline utilizzi la stessa versione di Dev Proxy ogni volta che viene eseguita. I passaggi esatti per bloccare una versione dipendono dal sistema operativo del runner. Ecco un esempio di come aggiungere la versione di Dev Proxy in uno strumento di esecuzione basato su Linux:
# install Dev Proxy v1.0.0
bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)" -- v1.0.0
Flag CI consigliati
In una pipeline CI/CD avviare Dev Proxy con lo stesso set di opzioni ogni volta, in modo che venga eseguito in background, non modifichi la configurazione dello strumento di esecuzione e non attenda l'input dell'utente. È consigliabile usare le opzioni seguenti:
| Option | Perché |
|---|---|
--detach |
Esegue Dev Proxy in background, in modo che non blocchi la pipeline. |
--as-system-proxy false |
Impedisce la registrazione di Dev Proxy come proxy di sistema nel runner. L'app usa Dev Proxy solo quando la configuri per usare il proxy, ad esempio usando le variabili di ambiente http_proxy e https_proxy. |
--install-cert false |
Impedisce a Dev Proxy di provare a installare il certificato radice. In una pipeline, consideri attendibile tu stesso il certificato, come descritto in Considerare attendibile il certificato radice del proxy di sviluppo. |
--no-first-run |
Ignora la prima esperienza di esecuzione, che non è necessaria per un runner nuovo. |
--no-watch |
Disabilita il riavvio automatico di Dev Proxy quando cambia il file di configurazione. |
Inoltre, prima di avviare Dev Proxy, imposta la variabile di ambiente DEV_PROXY_API_TOKEN su un token che generi. In questo modo, si conosce il token necessario per chiamare l'API di Dev Proxy senza doverlo recuperare da Dev Proxy. Il token deve avere una lunghezza di almeno 32 caratteri. Per i requisiti completi, vedere API proxy.
# generate an API token for this run
export DEV_PROXY_API_TOKEN=$(openssl rand -hex 32)
Gli esempi in questo articolo usano queste opzioni e la DEV_PROXY_API_TOKEN variabile di ambiente.
Ottenere una configurazione per la registrazione delle chiamate API
Se si vuole registrare le API chiamate dall'app durante un'esecuzione CI, non è necessario creare una configurazione da zero. Scaricare il api-inventory set di impostazioni dalla raccolta di esempi di Dev Proxy usando il config get comando :
./devproxy/devproxy config get api-inventory
Il set di impostazioni combina UrlDiscoveryPlugin e ExecutionSummaryPlugin con i reporter e non registra Dev Proxy come proxy di sistema. Quando si avvia Dev Proxy, passare il file di configurazione del set di impostazioni, eseguire l'override degli URL da controllare con le API chiamate dall'app e usare i flag di integrazione continua consigliati:
./devproxy/devproxy --config-file "~dataFolder/configs/api-inventory/.devproxy/devproxyrc.json" --urls-to-watch "https://api.contoso.com/*" --detach --as-system-proxy false --install-cert false --no-first-run --no-watch
Per altre informazioni sui set di impostazioni, vedere Usare le configurazioni predefinite.
Avviare il proxy di sviluppo
Dopo aver installato Dev Proxy, è necessario avviarlo. Quando si avvia Dev Proxy in una pipeline CI/CD, è importante avviarlo in background. In caso contrario, la pipeline viene bloccata fino a quando non si arresta il proxy di sviluppo.
Avviare Dev Proxy in background usando i flag CI consigliati:
# start Dev Proxy in detached mode
./devproxy/devproxy --detach --as-system-proxy false --install-cert false --no-first-run --no-watch
Dev Proxy stampa le informazioni di avvio, tra cui l'ID processo (PID), l'URL proxy, l'URL dell'API e il percorso del file di log:
Dev Proxy started in background.
PID: 6456
Proxy URL: http://127.0.0.1:8000
API URL: http://127.0.0.1:8897
Log file: /home/runner/.local/dev-proxy/logs/devproxy-6456-2026-03-05.log
Per l'output leggibile dal computer, usare --output json per ottenere JSONL:
./devproxy/devproxy --detach --as-system-proxy false --install-cert false --no-first-run --no-watch --output json
{"type":"result","data":{"pid":6456,"proxyUrl":"http://127.0.0.1:8000","apiUrl":"http://127.0.0.1:8897","logFile":"/home/runner/.local/dev-proxy/logs/devproxy-6456-2026-03-05.log"},"timestamp":"2026-03-05T14:22:42.0000000Z"}
Suggerimento
Usare --port 0 e --api-port 0 per consentire al sistema operativo di assegnare porte disponibili casuali. L'output della modalità disconnessa mostra le porte effettive assegnate dal sistema operativo, utile negli scenari CI/CD per evitare conflitti di porte. Quando si usano porte casuali, leggere l'URL del proxy e l'URL dell'API dall'output anziché usare i valori predefiniti http://127.0.0.1:8000 e http://127.0.0.1:8897, come illustrato nello script di avvio di esempio.
In alternativa, se si usa uno strumento di esecuzione basato su Linux, è possibile avviare Dev Proxy in background usando il controllo processo shell:
# start Dev Proxy in the background
./devproxy/devproxy --as-system-proxy false --install-cert false --no-first-run --no-watch > devproxy.log 2>&1 &
Attendere l'avvio di Dev Proxy
Quando si avvia Dev Proxy in background, lo script continua immediatamente. Tuttavia, Dev Proxy richiede un po' di tempo per iniziare. Per assicurarsi che Dev Proxy sia pronto prima di avviare l'invio di richieste, attendere che l'API risponda a una richiesta GET /proxy:
api_url=http://127.0.0.1:8897
echo "Waiting for Dev Proxy to start..."
until curl -sf -o /dev/null "$api_url/proxy" -H "Authorization: Bearer $DEV_PROXY_API_TOKEN"; do
sleep 1
done
# the rest of your script
Il polling dell'API funziona indipendentemente dalla porta su cui è in ascolto Dev Proxy, incluso quando si usa --port 0.
Considerare attendibile il certificato radice del proxy di sviluppo
Dopo l'avvio di Dev Proxy, è necessario considerare attendibile il certificato radice di Dev Proxy prima di inviare le richieste, perché Dev Proxy usa un certificato radice autofirmato.
A seconda delle autorizzazioni, potrebbe essere necessario creare la ~/.config/dev-proxy/rootCert cartella in cui Dev Proxy archivia il certificato radice prima di avviare Dev Proxy:
# ensure the rootCert folder
echo "Ensuring the Dev Proxy rootCert folder"
mkdir -p ~/.config/dev-proxy/rootCert
Per ottenere la chiave pubblica del certificato radice, scaricarla usando Dev Proxy API. Se si usa uno strumento di esecuzione basato su Linux, è possibile installare il certificato copiandolo nell'archivio certificati CA attendibili del sistema:
# download the Dev Proxy's Root Certificate
echo "Downloading the Dev Proxy's Root Certificate"
curl -sf -o dev-proxy-ca.crt "$api_url/proxy/rootCertificate?format=crt" -H "Authorization: Bearer $DEV_PROXY_API_TOKEN"
# install root certificate
echo "Installing the Dev Proxy's Root Certificate"
sudo cp dev-proxy-ca.crt /usr/local/share/ca-certificates/
# update CA certificates
echo "Updating the CA certificates"
sudo update-ca-certificates
Configurare le variabili di ambiente proxy
Molte applicazioni e librerie usano le http_proxy variabili di ambiente e https_proxy per determinare il server proxy da usare per le richieste HTTP e HTTPS. Poiché si avvia Dev Proxy con --as-system-proxy false, è necessario impostare queste variabili di ambiente in modo che puntino all'istanza di Dev Proxy per assicurarsi che l'applicazione usi Dev Proxy.
export http_proxy=http://127.0.0.1:8000
export https_proxy=http://127.0.0.1:8000
Controllare il proxy di sviluppo
Quando si esegue Dev Proxy in una pipeline CI/CD, non è possibile controllarlo in modo interattivo. È invece possibile controllarlo inviando richieste all'API del proxy di sviluppo.
Tutte le richieste Dev Proxy API richiedono un token bearer nell'intestazione Authorization. Se si imposta la variabile di ambiente DEV_PROXY_API_TOKEN come consigliato, usare il relativo valore. In caso contrario, poiché Dev Proxy non stampa il token all'avvio quando la variabile di ambiente CI è impostata, recuperarlo usando il comando api token:
export DEV_PROXY_API_TOKEN=$(./devproxy/devproxy api token)
Per analizzare le richieste API emesse dalla tua app, è possibile inviare una richiesta POST all'endpoint /proxy per avviare la registrazione:
curl -sf -X POST "$api_url/proxy" -H "Authorization: Bearer $DEV_PROXY_API_TOKEN" -H "Content-Type: application/json" -d '{"recording": true}'
Per arrestare la registrazione, inviare una POST richiesta all'endpoint /proxy con recording impostato su false:
curl -sf -X POST "$api_url/proxy" -H "Authorization: Bearer $DEV_PROXY_API_TOKEN" -H "Content-Type: application/json" -d '{"recording": false}'
Per arrestare Dev Proxy, è possibile inviare una POST richiesta all'endpoint /proxy/stopproxy :
curl -sf -X POST "$api_url/proxy/stopproxy" -H "Authorization: Bearer $DEV_PROXY_API_TOKEN"
Dopo aver arrestato il processo dev proxy, la chiusura completa del processo può richiedere alcuni minuti. Per assicurarsi che Dev Proxy abbia completato l'avvio, attendere che il file di log, che Dev Proxy stampa quando viene avviato in modalità scollegata, contenga uno dei messaggi di completamento, ad esempio:
echo "Waiting for Dev Proxy to complete..."
while true; do
if grep -q -e "DONE" -e "No requests to process" -e "An error occurred in a plugin" "$log_file"; then
break
fi
sleep 1
done
Quando tutti i plug-in di registrazione terminano l'esecuzione, Dev Proxy stampa il messaggio DONE nell'output. Se non ci fossero richieste da elaborare, Dev Proxy stampa il messaggio No requests to process. Se si è verificato un errore in un plug-in, Dev Proxy stampa il messaggio An error occurred in a plugin. Quando viene visualizzato uno di questi messaggi, è possibile assicurarsi che Dev Proxy abbia completato l'elaborazione delle richieste registrate.
Script di avvio di esempio
Di seguito è riportato un esempio di script bash che è possibile usare per avviare Dev Proxy in una pipeline CI/CD. Lo script usa i flag CI consigliati, legge l'URL del proxy, l'URL dell'API e il percorso del file di log dall'output JSON, attende fino a quando l'API Dev Proxy non risponde e considera attendibile il certificato radice scaricato dall'API. Usa jq per analizzare l'output JSON.
echo "Generating the Dev Proxy API token"
export DEV_PROXY_API_TOKEN=$(openssl rand -hex 32)
echo "Ensuring Dev Proxy rootCert folder"
mkdir -p ~/.config/dev-proxy/rootCert
echo "Starting Dev Proxy"
result=$(./devproxy/devproxy --detach --as-system-proxy false --install-cert false --no-first-run --no-watch --output json | jq -c 'select(.type == "result")')
if [ -z "$result" ]; then
echo "Failed to start Dev Proxy"
exit 1
fi
proxy_url=$(echo "$result" | jq -r '.data.proxyUrl')
api_url=$(echo "$result" | jq -r '.data.apiUrl')
log_file=$(echo "$result" | jq -r '.data.logFile')
echo "Waiting for Dev Proxy to start..."
until curl -sf -o /dev/null "$api_url/proxy" -H "Authorization: Bearer $DEV_PROXY_API_TOKEN"; do
sleep 1
done
echo "Downloading the Dev Proxy's Root Certificate"
curl -sf -o dev-proxy-ca.crt "$api_url/proxy/rootCertificate?format=crt" -H "Authorization: Bearer $DEV_PROXY_API_TOKEN"
echo "Installing the Dev Proxy's Root Certificate"
sudo cp dev-proxy-ca.crt /usr/local/share/ca-certificates/
echo "Updating the CA certificates"
sudo update-ca-certificates
echo "Set proxy variables"
export http_proxy=$proxy_url
export https_proxy=$proxy_url
Vedere anche
- Usare Dev Proxy con GitHub Actions
- Usare Dev Proxy con Azure Pipelines
- API del proxy di sviluppo
- Registrare ed esportare le attività di proxy
- Usare le configurazioni predefinite