Freigeben über


Verwenden von Dev Proxy in CI/CD-Szenarien

Die Verwendung von Dev Proxy in CI/CD-Szenarien ist eine hervorragende Möglichkeit, Ihre Anwendungen in einer kontrollierten Umgebung zu testen. Wenn Sie Dev-Proxy mit Tests kombinieren, die API-Anforderungen in Ihrer Anwendung generieren, können Sie eine Vielzahl von Szenarien abdecken: Sie können sicherstellen, dass Ihre App keine Schatten- oder Nichtproduktions-APIs verwendet, um zu überprüfen, ob sie minimale Microsoft Graph-Berechtigungen verwendet. Während die genauen Konfigurationsschritte je nach CI/CD-System variieren, sind hier einige allgemeine Prinzipien aufgeführt, die Sie befolgen sollten.

In den meisten Fällen ist der Dev-Proxy von Ihrem Runner nicht installiert. Bevor Sie also Dev Proxy verwenden können, müssen Sie ihn installieren. Die Installationsschritte hängen vom Betriebssystem ab, das Ihr Läufer verwendet.

Tipp

Um Ihre Pipeline zu beschleunigen, erwägen Sie das Zwischenspeichern des Dev Proxy-Installationsordners. Auf diese Weise müssen Sie Dev Proxy nicht jedes Mal herunterladen, wenn Sie Ihre Pipeline ausführen. Die genauen Schritte finden Sie in der Dokumentation Ihres CI/CD-Systems.

Wenn Sie Dev Proxy in einem CI/CD-Setup installieren, möchten Sie in der Regel die Version von Dev Proxy, die Sie installieren, festschreiben. Durch das Festlegen der Version wird sichergestellt, dass Ihre Pipeline bei jeder Ausführung dieselbe Version von Dev Proxy verwendet. Die genauen Schritte zum Festlegen einer Version hängen vom Betriebssystem Ihres Läufers ab. Hier ist ein Beispiel, wie man die Version von Dev Proxy auf einem Linux-basierten Runner fixieren kann:

# install Dev Proxy v1.0.0
bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)" -- v1.0.0

Dev Proxy starten

Nach der Installation von Dev Proxy müssen Sie ihn starten. Beim Starten von Dev Proxy in einer CI/CD-Pipeline ist es wichtig, dass Sie ihn im Hintergrund starten. Andernfalls wird Ihre Pipeline blockiert, bis Sie Dev Proxy beenden.

Wenn Sie einen Linux-basierten Runner verwenden, können Sie Dev Proxy im Hintergrund starten:

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

Vertrauen Sie dem Dev Proxy-Stammzertifikat

Nachdem Sie Dev Proxy gestartet haben, müssen Sie dem Dev Proxy-Stammzertifikat vertrauen, bevor Sie Anforderungen senden, da Dev Proxy ein selbstsigniertes Stammzertifikat verwendet.

Wenn Dev Proxy gestartet wird, wird das rootCert.pfx Zertifikat im ~/.config/dev-proxy/rootCert Ordner erstellt.

Je nach Ihren Berechtigungen müssen Sie möglicherweise den ~/.config/dev-proxy/rootCert Ordner erstellen, bevor Sie Dev Proxy starten:

# 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 &

Wenn Sie einen Linux-basierten Runner verwenden, können Sie das Dev Proxy-Stammzertifikat installieren, indem Sie es in den Zertifikatspeicher der vertrauenswürdigen Zertifizierungsstelle des Systems kopieren:

# 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

Warten, bis dev Proxy gestartet wird

Wenn Sie Dev Proxy im Hintergrund starten, wird Ihr Skript sofort ausgeführt. Dev Proxy benötigt jedoch einige Zeit, um zu beginnen. Um sicherzustellen, dass Der Dev-Proxy bereit ist, bevor Sie mit der Ausgabe von Anforderungen beginnen, warten Sie, bis er gestartet wird. Um zu warten, bis Dev Proxy gestartet wird, protokollieren Sie die Ausgabe in einer Datei, und überprüfen Sie dann, ob Dev Proxy auf Webanforderungen lauscht, z. B.:

# 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

Konfigurieren von Proxyumgebungsvariablen

Viele Anwendungen und Bibliotheken verwenden die http_proxy Variablen und https_proxy Umgebungsvariablen, um den Proxyserver zu bestimmen, der für HTTP- und HTTPS-Anforderungen verwendet werden soll. Um sicherzustellen, dass Ihre Anwendung Dev Proxy verwendet, müssen Sie diese Umgebungsvariablen so festlegen, dass sie auf die Dev Proxy-Instanz verweisen.

export http_proxy=http://127.0.0.1:8000
export https_proxy=http://127.0.0.1:8000

Steuern des Dev-Proxys

Wenn Sie Dev Proxy in einer CI/CD-Pipeline ausführen, können Sie ihn nicht interaktiv steuern. Stattdessen können Sie sie steuern, indem Sie Anforderungen an die Dev-Proxy-API senden.

Wenn Sie API-Anforderungen analysieren möchten, die von Ihrer App ausgestellt wurden, können Sie eine POST Anforderung an den /record Endpunkt senden:

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

Um dev Proxy zu beenden, können Sie eine POST Anforderung an den /stop Endpunkt senden:

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

Nachdem Sie den Dev Proxy-Prozess beendet haben, kann es einen Moment dauern, bis er vollständig geschlossen wird. Um sicherzustellen, dass der Dev-Proxy abgeschlossen ist, warten Sie, bis der Prozess geschlossen wird, z. B.:

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

Wenn die Ausführung aller Aufzeichnungs-Plug-Ins abgeschlossen ist, gibt der Dev Proxy die DONE-Meldung in der Ausgabe aus. Wenn keine Verarbeitungsanforderungen aufgetreten sind, druckt Dev Proxy die No requests to process Nachricht. Wenn in einem Plug-In ein Fehler aufgetreten ist, druckt Dev Proxy die An error occurred in a plugin Nachricht. Wenn eine dieser Nachrichten angezeigt wird, können Sie sicher sein, dass der Dev-Proxy die Verarbeitung der aufgezeichneten Anforderungen abgeschlossen hat.

Beispiel für ein Startskript

Hier ist ein Beispiel für ein Bash-Skript, mit dem Sie Dev Proxy in einer CI/CD-Pipeline starten können:

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