Megosztás a következőn keresztül:


Dev Proxy használata CI/CD-forgatókönyvekben

A Dev Proxy használata CI/CD-forgatókönyvekben nagyszerű módszer az alkalmazások ellenőrzött környezetben való tesztelésére. Ha a Dev Proxy-t olyan tesztekkel kombinálja, amelyek API-kéréseket generálnak az alkalmazásában, számos forgatókönyvet lefedhet: attól kezdve, hogy biztosítsa, az alkalmazása nem használ árnyék- vagy nem éles API-kat, egészen addig, amíg ellenőrzi, hogy csak minimális Microsoft Graph-engedélyeket használ. Bár a pontos konfigurációs lépések a CI/CD-rendszertől függően változnak, az alábbiakban néhány általános alapelvet kell követnie.

A legtöbb esetben a futó nem rendelkezik Dev Proxyval. Ezért mielőtt használhatja a Dev Proxyt, telepítenie kell. A telepítési lépései a futó által használt operációs rendszertől függenek.

Borravaló

A folyamat felgyorsításához fontolja meg a Dev Proxy telepítési mappájának gyorsítótárazását. Így nem kell minden alkalommal letöltenie a Dev Proxyt, amikor futtatja a folyamatot. A pontos lépésekért tekintse meg a CI/CD-rendszer dokumentációját.

Ha a Dev Proxyt ci/CD-telepítőben telepíti, általában a telepített Dev Proxy verzióját szeretné rögzíteni. A verzió rögzítése biztosítja, hogy a folyamat minden futtatáskor ugyanazt a Dev Proxy-verziót használja. A verzió rögzítésének pontos lépései a futó operációs rendszerétől függenek. Íme egy példa arra, hogyan rögzítheti a Dev Proxy verzióját egy Linux-alapú futón:

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

Fejlesztői proxy indítása

A Dev Proxy telepítése után el kell indítania. CI/CD-folyamatban a Dev Proxy elindításakor fontos, hogy a háttérben fusson. Ellenkező esetben a folyamat le lesz tiltva, amíg le nem állítja a dev proxyt.

Ha Linux-alapú futót használ, a háttérben elindíthatja a Dev Proxyt:

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

A fejlesztői proxy főtanúsítványának megbízhatósága

A Dev Proxy elindítása után a kérések elküldése előtt meg kell bíznia a Dev Proxy főtanúsítványában, mivel a Dev Proxy önaláírt főtanúsítványt használ.

A Dev Proxy indításakor a rootCert.pfx tanúsítvány a mappában ~/.config/dev-proxy/rootCert jön létre.

Az engedélyektől függően előfordulhat, hogy a dev proxy elindítása előtt létre kell hoznia a ~/.config/dev-proxy/rootCert mappát:

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

Ha Linux-alapú futót használ, a dev proxy főtanúsítványát úgy telepítheti, hogy a rendszer megbízható hitelesítésszolgáltatói tanúsítványtárolójába másolja:

# 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

Várjon, amíg a Dev Proxy elindul

Amikor elindítja a Dev Proxyt a háttérben, a szkript azonnal fut. A fejlesztői proxy indításához azonban időre van szükség. Ha meg szeretné győződni arról, hogy a Dev Proxy készen áll a kérelmek kiadása előtt, várja meg, amíg elindul. Ha várni szeretné, hogy a Dev Proxy elinduljon, naplózza a kimenetét egy fájlban, majd ellenőrizze, hogy a Dev Proxy figyeli-e a webes kéréseket, például:

# 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

Proxykörnyezet változóinak konfigurálása

Számos alkalmazás és kódtár használja a http_proxy környezeti változókat a HTTP- és https_proxy HTTPS-kérelmekhez használni kívánt proxykiszolgáló meghatározásához. Annak biztosításához, hogy az alkalmazás Dev Proxyt használjon, ezeket a környezeti változókat úgy kell beállítania, hogy a Dev Proxy-példányra mutasson.

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

Dev Proxy vezérlő

Amikor a Dev Proxy-t egy CI/CD csővezetékben futtatja, nem tudja azt interaktívan vezérelni. Ehelyett úgy szabályozhatja, hogy kéréseket küld a Dev Proxy API-nak.

Ha elemezni szeretné az alkalmazás által kiadott API-kéréseket, elküldhet egy kérést POST a /record végpontnak:

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

A fejlesztői proxy leállításához elküldhet egy kérést POST a /stop végpontnak:

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

A Dev Proxy folyamat leállítása után eltarthat egy ideig, amíg teljesen bezárul. A Dev Proxy befejezésének biztosításához várja meg a folyamat bezárását, például:

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

Amikor az összes rögzítési beépülő modul fut, a Dev Proxy kinyomtatja a DONE üzenetet a kimenetre. Ha nem történt feldolgozásra irányuló kérés, a Dev Proxy kinyomtatja a No requests to process üzenetet. Ha hiba történt egy beépülő modulban, a Dev Proxy kinyomtatja a An error occurred in a plugin üzenetet. Ha bármelyik üzenetet látja, biztos lehet benne, hogy a Dev Proxy befejezte a rögzített kérések feldolgozását.

Példa indítási szkriptre

Íme egy példa egy bash-szkriptre, amellyel elindíthatja a Dev Proxyt egy CI/CD-folyamatban:

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