次の方法で共有


CI/CD シナリオで開発プロキシを使用する

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