CI/CD 시나리오에서 개발 프록시를 사용하는 것은 제어된 환경에서 애플리케이션을 테스트하는 좋은 방법입니다. 애플리케이션에서 API 요청을 생성하는 테스트와 개발 프록시를 결합하면 앱이 섀도 또는 비프로덕션 API를 사용하지 않도록 하는 것부터 최소한의 Microsoft Graph 권한을 사용하는지 확인하는 것까지 다양한 시나리오를 다룰 수 있습니다. 정확한 구성 단계는 CI/CD 시스템에 따라 다르지만, 다음은 따라야 하는 몇 가지 일반적인 원칙입니다.
대부분의 경우, 귀하의 실행기는 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 프록시가 시작되면 rootCert.pfx 인증서가 ~/.config/dev-proxy/rootCert 폴더에 생성됩니다.
사용 권한에 따라 개발자 프록시를 시작하기 전에 폴더를 ~/.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 기반 실행기를 사용하는 경우 개발자 프록시 루트 인증서를 시스템의 신뢰할 수 있는 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
개발자 프록시 시작을 기다리세요.
백그라운드에서 개발 프록시를 시작하면 스크립트가 즉시 실행됩니다. 그러나 개발자 프록시를 시작하려면 약간의 시간이 필요합니다. 요청 발급을 시작하기 전에 개발자 프록시가 준비되었는지 확인하려면 개발자 프록시가 시작될 때까지 기다립니다. 개발자 프록시가 시작될 때까지 기다리려면 해당 출력을 파일에 기록한 다음, 개발자 프록시가 웹 요청을 수신 대기하는지 확인합니다. 예를 들면 다음과 같습니다.
# 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
프록시 환경 변수 구성
많은 애플리케이션 및 라이브러리는 및 https_proxy 환경 변수를 사용하여 http_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 파이프라인에서 개발 프록시를 실행하는 경우 대화형으로 제어할 수 없습니다. 대신 개발자 프록시 API에 요청을 전송하여 제어할 수 있습니다.
앱에서 발급한 API 요청을 분석하려는 경우 엔드포인트에 POST 요청을 /record 보낼 수 있습니다.
curl -X POST http://localhost:8897/proxy/record -H "Content-Type: application/json" -d '{"recording": true}'
개발 프록시를 중지하려면 엔드포인트에 POST 요청을 /stop 보낼 수 있습니다.
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
모든 녹음 플러그 인 실행이 완료되면 개발자 프록시가 출력에 DONE 메시지를 출력합니다. 처리 요청이 없으면 개발자 프록시가 No requests to process 메시지를 출력합니다. 플러그 인에서 오류가 발생하면 개발자 프록시가 An error occurred in a plugin 메시지를 출력합니다. 이러한 메시지가 표시되면 개발자 프록시가 기록된 요청 처리를 완료했는지 확인할 수 있습니다.
예제 시작 스크립트
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