CI/CD シナリオで開発プロキシを使用することは、制御された環境でアプリケーションをテストするための優れた方法です。 アプリケーションで API 要求を生成するテストと開発プロキシを組み合わせると、アプリでシャドウ API または非運用 API が使用されていないことの確認から、最小限の Microsoft Graph アクセス許可が使用されていることを確認するなど、さまざまなシナリオに対応できます。 正確な構成手順は CI/CD システムによって異なりますが、以下に従う必要がある一般的な原則をいくつか示します。
ほとんどの場合、ランナーには Dev Proxy がインストールされていません。 そのため、開発プロキシを使用する前に、インストールする必要があります。 インストール手順は、ランナーが使用するオペレーティング システムによって異なります。
ヒント
パイプラインを高速化するには、Dev Proxy インストール フォルダーのキャッシュを検討してください。 これにより、パイプラインを実行するたびに開発プロキシをダウンロードする必要はありません。 正確な手順については、CI/CD システムのドキュメントを参照してください。
CI/CD セットアップで開発プロキシをインストールする場合は、通常、インストールする開発プロキシのバージョンをピン留めする必要があります。 バージョンをピン留めすることで、実行するたびにパイプラインで同じバージョンの開発プロキシが使用されるようになります。 バージョンをピン留めする正確な手順は、ランナーのオペレーティング システムによって異なります。 Linux ベースのランナーに開発プロキシのバージョンをピン留めする方法の例を次に示します。
# install Dev Proxy v1.0.0
bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)" -- v1.0.0
開発プロキシを起動する
開発プロキシをインストールしたら、起動する必要があります。 CI/CD パイプラインで開発プロキシを起動する場合は、バックグラウンドで起動することが重要です。 それ以外の場合、開発プロキシを停止するまでパイプラインはブロックされます。
Linux ベースのランナーを使用している場合は、バックグラウンドで開発プロキシを起動できます。
# start Dev Proxy in the background
./devproxy/devproxy &`.
開発プロキシのルート証明書を信頼する
開発プロキシを起動した後、Dev Proxy は自己署名ルート証明書を使用するため、要求を送信する前に Dev Proxy ルート証明書を信頼する必要があります。
開発プロキシが起動すると、~/.config/dev-proxy/rootCert
フォルダーにrootCert.pfx
証明書が作成されます。
アクセス許可によっては、開発プロキシを開始する前に ~/.config/dev-proxy/rootCert
フォルダーの作成が必要になる場合があります。
# 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 &
Linux ベースのランナーを使用している場合は、Dev Proxy ルート証明書をシステムの信頼された 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
開発プロキシが起動するのを待つ
バックグラウンドで開発プロキシを起動すると、スクリプトはすぐに実行されます。 ただし、開発プロキシを開始するには時間が必要です。 要求の発行を開始する前に、開発プロキシの準備ができていることを確認するには、起動するまで待ちます。 開発プロキシが起動するのを待つには、その出力をファイルに記録し、Dev Proxy が Web 要求をリッスンしているかどうかを確認します。次に例を示します。
# 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
プロキシ環境変数を構成する
多くのアプリケーションとライブラリは、 http_proxy
環境変数と https_proxy
環境変数を使用して、HTTP 要求と HTTPS 要求に使用するプロキシ サーバーを決定します。 アプリケーションで開発プロキシが使用されるようにするには、これらの環境変数を Dev Proxy インスタンスを指すよう設定する必要があります。
export http_proxy=http://127.0.0.1:8000
export https_proxy=http://127.0.0.1:8000
開発プロキシの制御
CI/CD パイプラインで開発プロキシを実行する場合、対話形式で制御することはできません。 代わりに、 Dev Proxy API に要求を送信して制御できます。
アプリによって発行された API 要求を分析する場合は、 POST
要求を /record
エンドポイントに送信できます。
curl -X POST http://localhost:8897/proxy/record -H "Content-Type: application/json" -d '{"recording": true}'
開発プロキシを停止するには、/stop
エンドポイントにPOST
要求を送信します。
curl -X POST http://localhost:8897/proxy/stop
開発プロキシ プロセスを停止した後、完全に終了するまでに少し時間がかかる場合があります。 開発プロキシが完了したことを確認するには、プロセスが閉じるのを待ちます。次に例を示します。
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
すべての記録プラグインの実行が完了すると、Dev Proxy によって DONE
メッセージが出力に出力されます。 処理する要求がない場合、開発プロキシは No requests to process
メッセージを出力します。 プラグインでエラーが発生した場合、開発プロキシは An error occurred in a plugin
メッセージを出力します。 これらのメッセージのいずれかが表示されたら、Dev Proxy が記録された要求の処理を完了したことを確認できます。
開始スクリプトの例
CI/CD パイプラインで開発プロキシを開始するために使用できる bash スクリプトの例を次に示します。
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
Dev Proxy