Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
De un vistazo
Objetivo: Integración del Proxy de Desarrollo en CI/CD
Tiempo: 30 minutos
Complementos: Varios
Requisitos previos:Configuración del proxy de desarrollo
El uso del proxy de desarrollo en escenarios de CI/CD es una excelente manera de probar las aplicaciones en un entorno controlado. Al combinar Dev Proxy con pruebas que generan solicitudes de API en su aplicación, puede cubrir una amplia gama de escenarios: desde asegurar que su aplicación no utiliza APIs de sombra ni de preproducción, hasta comprobar que utiliza los permisos mínimos de Microsoft Graph. Aunque los pasos de configuración exactos varían en función del sistema de CI/CD, estos son algunos principios generales que debe seguir.
En la mayoría de los casos, tu runner no tiene instalado el Dev Proxy. Por lo tanto, antes de poder usar el proxy de desarrollo, debe instalarlo. Los pasos de instalación dependen del sistema operativo que usa el ejecutor.
Sugerencia
Para acelerar la canalización, considere almacenar en caché la carpeta de instalación del Dev Proxy. De este modo, no es necesario descargar Dev Proxy cada vez que ejecute el pipeline. Para conocer los pasos exactos, consulte la documentación del sistema de CI/CD.
Al instalar un proxy de desarrollo en una configuración de CI/CD, normalmente se recomienda anclar la versión del proxy de desarrollo que instale. Anclar la versión garantiza que la canalización use la misma versión del proxy de desarrollo cada vez que la ejecute. Los pasos exactos para anclar una versión dependen del sistema operativo del ejecutor. Este es un ejemplo de cómo puedes fijar la versión de Dev Proxy en un ejecutor basado en Linux:
# install Dev Proxy v1.0.0
bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)" -- v1.0.0
Marcas de CI recomendadas
En una canalización de CI/CD, inicie proxy de desarrollo con el mismo conjunto de opciones cada vez, para que se ejecute en segundo plano, no cambie la configuración del ejecutor y no espere a que el usuario escriba. Se recomiendan las siguientes opciones:
| Option | Por qué |
|---|---|
--detach |
Ejecuta dev Proxy en segundo plano para que no bloquee la canalización. |
--as-system-proxy false |
Impide que Dev Proxy se registre como proxy del sistema en el ejecutor. La aplicación usa Dev Proxy solo cuando la diriges al proxy, por ejemplo, mediante las variables de entorno http_proxy y https_proxy. |
--install-cert false |
Impide que el proxy de desarrollo intente instalar su certificado raíz. En una canalización, debe confiar manualmente en el certificado, como se describe en Confiar en el certificado raíz de Dev Proxy. |
--no-first-run |
Omite la primera experiencia de ejecución, que no es necesaria en un runner nuevo. |
--no-watch |
Deshabilita el reinicio automático de Dev Proxy cuando cambia su archivo de configuración. |
Además, antes de iniciar proxy de desarrollo, establezca la variable de entorno DEV_PROXY_API_TOKEN en un token que genere. De este modo, conoce el token que necesita para llamar a la Dev Proxy API sin tener que recuperarlo de Dev Proxy. El token debe tener al menos 32 caracteres. Para obtener los requisitos completos, consulte API de proxy.
# generate an API token for this run
export DEV_PROXY_API_TOKEN=$(openssl rand -hex 32)
Los ejemplos de este artículo usan estas opciones y la variable de entorno DEV_PROXY_API_TOKEN.
Obtener una configuración para registrar llamadas a la API
Si quiere registrar las API a las que llama la aplicación durante una ejecución de CI, no es necesario compilar una configuración desde cero. Descargue el api-inventory preajuste de la galería de ejemplos de Dev Proxy mediante el comando config get:
./devproxy/devproxy config get api-inventory
El valor preestablecido combina UrlDiscoveryPlugin y ExecutionSummaryPlugin con generadores de informes y no registra Dev Proxy como proxy del sistema. Al iniciar proxy de desarrollo, pase el archivo de configuración del ajuste preestablecido, reemplace las URL para inspeccionar con las API a las que llama la aplicación y use las marcas de CI recomendadas:
./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
Para obtener más información sobre los valores preestablecidos, consulte Uso de configuraciones preestablecidas.
Iniciar proxy de desarrollo
Después de instalar dev Proxy, debe iniciarlo. Al iniciar el proxy de desarrollo en una canalización de CI/CD, es importante que lo inicie en segundo plano. De lo contrario, la canalización se bloquea hasta que detenga Dev Proxy.
Inicie el proxy de desarrollo en segundo plano mediante las marcas de CI recomendadas:
# start Dev Proxy in detached mode
./devproxy/devproxy --detach --as-system-proxy false --install-cert false --no-first-run --no-watch
Dev Proxy imprime información de inicio, incluyendo el identificador de proceso (PID), la URL del proxy, la URL del API y la ruta de acceso al archivo de registro.
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
Para la salida legible por máquina, use --output json para obtener 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"}
Sugerencia
Use --port 0 y --api-port 0 para permitir que el sistema operativo asigne puertos disponibles aleatorios. La salida del modo desasociado muestra los puertos reales asignados por el sistema operativo, lo que resulta útil en escenarios de CI/CD para evitar conflictos de puertos. Al usar puertos aleatorios, lea la dirección URL del proxy y la URL de la API de la salida en lugar de usar el valor predeterminado http://127.0.0.1:8000 y http://127.0.0.1:8897, como se muestra en el script de inicio de ejemplo.
Como alternativa, si usa un ejecutor basado en Linux, puede iniciar Dev Proxy en segundo plano mediante el control de trabajos de 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 &
Espere a que se inicie el proxy de desarrollo.
Al iniciar Dev Proxy en segundo plano, el script continúa inmediatamente. Sin embargo, Dev Proxy necesita un poco de tiempo para iniciarse. Para asegurarse de que el proxy de desarrollo está listo antes de empezar a emitir solicitudes, espere hasta que su API responda a una solicitud 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
Sondear la API funciona independientemente del puerto en el que escucha el proxy de desarrollo, incluido cuando se usa --port 0.
Confiar en el certificado raíz del proxy de desarrollo
Una vez iniciado Dev Proxy, debe confiar en el certificado raíz de Dev Proxy antes de enviar solicitudes, ya que Dev Proxy usa un certificado raíz autofirmado.
En función de los permisos, es posible que tenga que crear la carpeta ~/.config/dev-proxy/rootCert, en la que Dev Proxy almacena su certificado raíz, antes de iniciar Dev Proxy:
# ensure the rootCert folder
echo "Ensuring the Dev Proxy rootCert folder"
mkdir -p ~/.config/dev-proxy/rootCert
Para obtener la clave pública del certificado raíz, descárguelo mediante la Dev Proxy API. Si usa un runner basado en Linux, puede instalar el certificado copiándolo en el almacén de certificados de CA de confianza 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
Configuración de variables de entorno de proxy
Muchas aplicaciones y bibliotecas usan las variables de http_proxy entorno y https_proxy para determinar el servidor proxy que se va a usar para las solicitudes HTTP y HTTPS. Dado que inicia Dev Proxy con --as-system-proxy false, debe establecer estas variables de entorno para que apunten a la instancia de Dev Proxy para asegurarse de que la aplicación usa Dev Proxy.
export http_proxy=http://127.0.0.1:8000
export https_proxy=http://127.0.0.1:8000
Controlar proxy de desarrollo
Al ejecutar el proxy de desarrollo en una canalización de CI/CD, no se puede controlar de forma interactiva. En su lugar, puede controlarlo mediante el envío de solicitudes a la API de proxy de desarrollo.
Todas las solicitudes de API de proxy de desarrollo requieren un token de portador en el encabezado Authorization. Si establece la DEV_PROXY_API_TOKEN variable de entorno como se recomienda, use su valor. De lo contrario, dado que Dev Proxy no imprime el token al iniciarse cuando se establece la variable de entorno CI, recupérelo mediante el comando api token:
export DEV_PROXY_API_TOKEN=$(./devproxy/devproxy api token)
Si quiere analizar las solicitudes de API emitidas por la aplicación, puede enviar una POST solicitud al /proxy punto de conexión para iniciar la grabación:
curl -sf -X POST "$api_url/proxy" -H "Authorization: Bearer $DEV_PROXY_API_TOKEN" -H "Content-Type: application/json" -d '{"recording": true}'
Para detener la grabación, envíe una POST solicitud al /proxy punto de conexión con recording establecido en false:
curl -sf -X POST "$api_url/proxy" -H "Authorization: Bearer $DEV_PROXY_API_TOKEN" -H "Content-Type: application/json" -d '{"recording": false}'
Para detener el proxy de desarrollo, puede enviar una POST solicitud al /proxy/stopproxy punto de conexión:
curl -sf -X POST "$api_url/proxy/stopproxy" -H "Authorization: Bearer $DEV_PROXY_API_TOKEN"
Después de detener el proceso del proxy de desarrollo, puede tardar un momento en cerrarse por completo. Para asegurarse de que Dev Proxy finalizó, espere a que su archivo de registro, que Dev Proxy imprime cuando se inicia en modo desasociado, contenga uno de los mensajes de finalización, por ejemplo:
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
Cuando todos los complementos de grabación terminen de ejecutarse, Dev Proxy imprime el DONE mensaje en la salida. Si no hay solicitudes para procesar, Dev Proxy imprime el No requests to process mensaje. Si se produjo un error en un complemento, Dev Proxy imprime el An error occurred in a plugin mensaje. Cuando vea cualquiera de estos mensajes, puede asegurarse de que el proxy de desarrollo ha terminado de procesar las solicitudes grabadas.
Script de inicio de ejemplo
Este es un ejemplo de un script de Bash que puede usar para iniciar Dev Proxy en una canalización de CI/CD. El script usa los indicadores de CI recomendados, lee la dirección URL del proxy, la dirección URL de API y la ruta de acceso del archivo de registro de la salida JSON, espera hasta que responda la API de proxy de desarrollo y confía en el certificado raíz descargado de la API. Usa jq para analizar la salida 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