Udostępnij przez


Korzystanie z serwera proxy deweloperskiego w scenariuszach ciągłej integracji/ciągłego wdrażania

Korzystanie z Dev Proxy w scenariuszach CI/CD to doskonały sposób na testowanie aplikacji w środowisku kontrolowanym. Po połączeniu Dev Proxy z testami generującymi żądania interfejsu API w aplikacji można uwzględnić szeroką gamę scenariuszy: począwszy od zapewnienia, że aplikacja nie używa interfejsów API w tle ani nieprodukcyjnych, aż po sprawdzenie, czy używa minimalnych uprawnień w Microsoft Graph. Chociaż dokładne kroki konfiguracji różnią się w zależności od systemu ciągłej integracji/ciągłego wdrażania, poniżej przedstawiono pewne ogólne zasady, które należy przestrzegać.

W większości przypadków agent nie ma zainstalowanego Dev Proxy. Dlatego przed rozpoczęciem korzystania z serwera proxy deweloperskiego należy go zainstalować. Kroki instalacji zależą od systemu operacyjnego używanego przez runnera.

Napiwek

Aby przyspieszyć przepływ pracy, rozważ buforowanie folderu instalacyjnego oprogramowania proxy dla deweloperów. W ten sposób nie trzeba pobierać Dev Proxy za każdym razem, gdy uruchamiasz pipeline. Aby dokładnie poznać kroki, zajrzyj do dokumentacji swojego systemu CI/CD.

Podczas instalowania serwera proxy deweloperskiego w konfiguracji ciągłej integracji/ciągłego wdrażania zazwyczaj należy przypiąć zainstalowaną wersję serwera proxy deweloperskiego. Ustalanie wersji gwarantuje, że potok wykorzystuje tę samą wersję Dev Proxy za każdym razem, gdy go uruchomisz. Dokładne kroki przypinania wersji oprogramowania zależą od systemu operacyjnego uruchamiacza. Oto przykład sposobu przypinania wersji serwera proxy deweloperskiego w module uruchamiającym system Linux:

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

Uruchamianie serwera proxy deweloperskiego

Po zainstalowaniu serwera proxy deweloperów należy go uruchomić. Podczas uruchamiania Dev Proxy w potoku CI/CD, ważne jest, aby uruchomić go w tle. W przeciwnym razie Twoja ścieżka zostanie zablokowana do momentu zatrzymania Dev Proxy.

Jeśli używasz agenta działającego na Linuxie, możesz uruchomić Proxy deweloperski w tle.

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

Zaufaj certyfikatowi głównemu proxy dewelopera

Po uruchomieniu serwera proxy deweloperskiego należy ufać certyfikatowi głównemu serwera proxy deweloperów przed wysłaniem żądań, ponieważ serwer proxy deweloperów używa certyfikatu głównego z podpisem własnym.

Po uruchomieniu serwera proxy deweloperskiego rootCert.pfx certyfikat zostanie utworzony w folderze ~/.config/dev-proxy/rootCert .

W zależności od uprawnień może być konieczne utworzenie folderu przed uruchomieniem ~/.config/dev-proxy/rootCert serwera proxy deweloperskiego:

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

Jeśli używasz agenta wykonawczego opartego na systemie Linux, możesz zainstalować certyfikat główny serwera proxy dla deweloperów, kopiując go do systemowego zasobu zaufanych certyfikatów CA.

# 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

Poczekaj na uruchomienie serwera proxy deweloperskiego

Po uruchomieniu serwera proxy deweloperskiego w tle skrypt jest wykonywany natychmiast. Jednak serwer proxy deweloperów potrzebuje trochę czasu na uruchomienie. Aby upewnić się, że serwer proxy deweloperów jest gotowy przed rozpoczęciem wydawania żądań, poczekaj na jego uruchomienie. Aby poczekać na uruchomienie serwera proxy dla deweloperów, zapisz jego dane wyjściowe do pliku, a następnie sprawdź, czy serwer proxy dla deweloperów nasłuchuje żądań internetowych, na przykład:

# 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

Konfigurowanie zmiennych środowiskowych serwera proxy

Wiele aplikacji i bibliotek używa http_proxy zmiennych środowiskowych i https_proxy , aby określić serwer proxy do użycia dla żądań HTTP i HTTPS. Aby upewnić się, że aplikacja używa Dev Proxy, należy ustawić te zmienne środowiskowe, aby wskazywały instancję Dev Proxy.

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

Kontrolowanie serwera proxy deweloperskiego

Przy uruchamianiu Dev Proxy w potoku CI/CD, nie można go kontrolować interaktywnie. Zamiast tego możesz ją kontrolować, wysyłając żądania do interfejsu API serwera proxy deweloperów.

Jeśli chcesz analizować żądania interfejsu API wystawione przez aplikację POST , możesz wysłać żądanie do punktu końcowego /record :

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

Aby zatrzymać Dev Proxy, możesz wysłać żądanie POST do punktu końcowego /stop:

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

Po zatrzymaniu procesu Dev Proxy może minąć chwila, zanim całkowicie się zamknie. Aby upewnić się, że Dev Proxy zakończył działanie, poczekaj na zamknięcie procesu, na przykład:

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

Po zakończeniu działania wszystkich wtyczek nagrywania serwer Proxy dewelopera wyświetla komunikat DONE na wyjściu. Jeśli nie było żadnych żądań do przetworzenia, Dev Proxy wyświetla komunikat No requests to process. Jeśli wystąpił błąd w wtyczce, serwer proxy dewelopera wyświetla komunikat An error occurred in a plugin. Po wyświetleniu dowolnego z tych komunikatów możesz mieć pewność, że serwer proxy dewelopera zakończył przetwarzanie zarejestrowanych żądań.

Przykładowy skrypt uruchamiania

Oto przykład skryptu bash, którego można użyć do uruchomienia Dev Proxy w potoku 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