Compartir a través de


Usar proxy de desarrollo en escenarios de CI/CD

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

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.

Si usa un ejecutor basado en Linux, puede iniciar el proxy de desarrollo en segundo plano:

# start Dev Proxy in the background
./devproxy/devproxy &`.

Confiar en el certificado raíz del proxy de desarrollo

Después de iniciar el proxy de desarrollo, debe confiar en el certificado raíz del proxy de desarrollo antes de enviar solicitudes, ya que El proxy de desarrollo usa un certificado raíz autofirmado.

Cuando se inicia el proxy de desarrollo, se crea el certificado rootCert.pfx en la carpeta ~/.config/dev-proxy/rootCert.

En función de los permisos, es posible que tenga que crear la carpeta ~/.config/dev-proxy/rootCert antes de iniciar Dev Proxy.

# ensure the rootCert folder
echo "Ensuring the Dev Proxy rootCert folder"
mkdir -p ~/.config/dev-proxy/rootCert

# start Dev Proxy
echo "Starting Dev Proxy"
./devproxy/devproxy &

Si utiliza un ejecutor basado en Linux, puede instalar el certificado raíz del proxy de desarrollo copiándolo en el almacén de certificados de CA de confianza del sistema:

# export the Dev Proxy's Root Certificate
echo "Exporting the Dev Proxy's Root Certificate"
openssl pkcs12 -in ~/.config/dev-proxy/rootCert.pfx -clcerts -nokeys -out dev-proxy-ca.crt -passin pass:""

# 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

Espere a que se inicie el proxy de desarrollo.

Al iniciar el proxy de desarrollo en segundo plano, el script se ejecuta 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 a que se inicie. Para esperar a que el proxy de desarrollo se inicie, registre su salida en un archivo y compruebe si el proxy de desarrollo está escuchando solicitudes web, por ejemplo:

# log file path
log_file=devproxy.log

# start Dev Proxy in the background
# log Dev Proxy output to the log file
# log stdout and stderr to the file
./devproxy/devproxy > $log_file 2>&1 &

# wait for init
echo "Waiting for Dev Proxy to start..."
while true; do
  if grep -q "Listening on 127.0.0.1:8000" $log_file; then
    break
  fi
  sleep 1
done

# the rest of your script

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. Para asegurarse de que la aplicación usa el proxy de desarrollo, debe establecer estas variables de entorno para que apunten a la instancia del proxy de desarrollo.

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.

Si desea analizar las solicitudes de API emitidas por la aplicación, puede enviar una POST solicitud al /record punto de conexión:

curl -X POST http://localhost:8897/proxy/record -H "Content-Type: application/json" -d '{"recording": true}'

Para detener el proxy de desarrollo, puede enviar una POST solicitud al /stop punto de conexión:

curl -X POST http://localhost:8897/proxy/stop

Después de detener el proceso del proxy de desarrollo, puede tardar un momento en cerrarse por completo. Para asegurarse de que el proxy Dev finalizó, espere a que se cierre el proceso, 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 el proxy de desarrollo en una canalización de CI/CD:

log_file=devproxy.log

echo "Ensuring Dev Proxy rootCert folder"
mkdir -p ~/.config/dev-proxy/rootCert

# start Dev Proxy in the background
# log Dev Proxy output to the log file
# log stdout and stderr to the file
echo "Starting Dev Proxy"
./devproxy/devproxy > $log_file 2>&1 &

echo "Waiting for Dev Proxy to start..."
while true; do
  if grep -q "Listening on 127.0.0.1:8000" $log_file; then
    break
  fi
  sleep 1
done

echo "Exporting the Dev Proxy's Root Certificate"
openssl pkcs12 -in ~/.config/dev-proxy/rootCert.pfx -clcerts -nokeys -out dev-proxy-ca.crt -passin pass:""

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=http://127.0.0.1:8000
export https_proxy=http://127.0.0.1:8000