CI/CD senaryolarında Dev Proxy kullanma

Bir bakışta
Hedef: Dev Proxy'yi CI/CD ile entegre etme
Süre: 30 dakika
Eklentiler: Çeşitli
Önkoşullar:Geliştirme Ara Sunucusunu Ayarlama

CI/CD senaryolarında Geliştirme Proxy'si kullanmak, uygulamalarınızı denetimli bir ortamda test etmenin harika bir yoludur. Geliştirme Proxy'sini uygulamanızda API istekleri oluşturan testlerle birleştirdiğinizde, uygulamanızın gölge veya üretim dışı API'ler kullanmadığından emin olmak ve en düşük Microsoft Graph izinlerini kullanıp kullanmadığını denetlemek gibi çok çeşitli senaryoları ele alabilirsiniz. Tam yapılandırma adımları CI/CD sisteminize bağlı olarak farklılık gösterse de izlemeniz gereken bazı genel ilkeler aşağıdadır.

Çoğu durumda, çalıştırıcınızda Dev Proxy yüklü değildir. Bu nedenle Dev Proxy'yi kullanabilmeniz için önce yüklemeniz gerekir. yükleme adımları, çalıştırıcınızın kullandığı işletim sistemine bağlıdır.

Bahşiş

İşlem hattınızı hızlandırmak için Dev Proxy yükleme klasörünü önbelleğe almayı göz önünde bulundurun. Bu şekilde, işlem hattınızı her çalıştırdığınızda Dev Proxy'yi indirmeniz gerekmez. Tam adımlar için CI/CD sisteminizin belgelerine bakın.

Ci/CD kurulumunda Dev Proxy'yi yüklerken genellikle yüklediğiniz Dev Proxy sürümünü sabitlemek istersiniz. Sürümü sabitlemek, işlem hattınızın her çalıştırdığınızda aynı Dev Proxy sürümünü kullanmasını sağlar. Bir sürümün sabitlenmesine ilişkin tam adımlar, yürütücünüzün işletim sistemine bağlıdır. Dev Proxy sürümünü Linux tabanlı bir çalıştırıcıya nasıl sabitleyebileceğinize ilişkin bir örnek aşağıda verilmiştir.

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

Geliştirme Proxy'sini başlat

Dev Proxy'yi yükledikten sonra başlatmanız gerekir. CI/CD işlem hattında Dev Proxy'yi başlatırken, onu arka planda çalıştırmak önemlidir. Aksi takdirde, siz Dev Proxy'yi durdurana kadar işlem hattınız engellenir.

Geliştirici Proxy'sini arka planda şu seçeneği kullanarak --detach başlatabilirsiniz:

# start Dev Proxy in detached mode
./devproxy/devproxy --detach --as-system-proxy false

Dev Proxy işlem kimliği (PID), Ara Sunucu URL'si, API URL'si ve günlük dosyası yolu gibi başlangıç bilgilerini yazdırır.

Dev Proxy started in background.

  PID:       6456
  Proxy URL: http://127.0.0.1:8000
  API URL:   http://127.0.0.1:8897
  Log file:  /home/runner/.local/dev-proxy/logs/devproxy-6456-2026-03-05.log

Makine tarafından okunabilir çıktı almak için --output json kullanarak JSONL elde edin:

./devproxy/devproxy --detach --as-system-proxy false --output json
{"type":"result","data":{"pid":6456,"proxyUrl":"http://127.0.0.1:8000","apiUrl":"http://127.0.0.1:8897","logFile":"/home/runner/.local/dev-proxy/logs/devproxy-6456-2026-03-05.log"},"timestamp":"2026-03-05T14:22:42.0000000Z"}

Bahşiş

İşletim sisteminin rastgele kullanılabilir bağlantı noktaları atamasına izin vermek için --port 0 ve --api-port 0 kullanın. Ayrılmış mod çıkışı, işletim sistemi tarafından atanan gerçek bağlantı noktalarını gösterir. Bu, bağlantı noktası çakışmalarını önlemek için CI/CD senaryolarında kullanışlıdır.

Linux tabanlı bir çalıştırıcı kullanıyorsanız, alternatif olarak, kabuk iş denetimini kullanarak Dev Proxy'yi arka planda başlatabilirsiniz.

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

Geliştirme Proxy'si kök sertifikasına güvenin

Geliştirme Proxy'sini başlattıktan sonra, geliştirme proxy'si otomatik olarak imzalanan bir kök sertifika kullandığından, istek göndermeden önce Geliştirme Proxy'si kök sertifikasına güvenmeniz gerekir.

Dev Proxy başlatıldığında, rootCert.pfx sertifikası ~/.config/dev-proxy/rootCert klasöründe oluşturulur.

İzinlerinize bağlı olarak, Dev Proxy'yi başlatmadan önce klasörü oluşturmanız ~/.config/dev-proxy/rootCert gerekebilir:

# 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 tabanlı bir çalıştırıcı kullanıyorsanız, Geliştirme Proxy'si kök sertifikasını sistemin güvenilen CA sertifika deposuna kopyalayarak yükleyebilirsiniz:

# 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'nin başlamasını bekleyin

Arka planda Dev Proxy'yi başlattığınızda betiğiniz hemen yürütülür. Ancak Dev Proxy'nin başlatılması için biraz zamana ihtiyacı vardır. İstek göndermeye başlamadan önce Dev Proxy'nin hazır olduğundan emin olmak için başlamasını bekleyin. Dev Proxy'nin başlatılmasını beklemek için çıktısını bir dosyaya kaydedin ve ardından Dev Proxy'nin web isteklerini dinleyip dinlemediğini denetleyin, örneğin:

# 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

Ara sunucu ortam değişkenlerini yapılandırma

Birçok uygulama ve kitaplık, HTTP ve HTTPS istekleri için kullanılacak proxy sunucusunu belirlemek amacıyla http_proxy ve https_proxy ortam değişkenlerini kullanır. Uygulamanızın Dev Proxy kullandığından emin olmak için bu ortam değişkenlerini Dev Proxy örneğine işaret eden şekilde ayarlamanız gerekir.

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

Kontrol Dev Proxy'si

Ci/CD işlem hattında Dev Proxy'yi çalıştırdığınızda etkileşimli olarak denetleyemezsiniz. Bunun yerine, Dev Proxy API'sine istek göndererek bunu denetleyebilirsiniz.

Uygulamanız tarafından verilen API isteklerini analiz etmek istiyorsanız uç noktaya bir POST istek /record gönderebilirsiniz:

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

Geliştirme Proxy'sini durdurmak için POST uç noktaya bir /stop istek gönderebilirsiniz:

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

Geliştirme Proxy'si işlemini durdurduktan sonra tam olarak kapanması biraz zaman alabilir. Geliştirme Proxy'sinin tamamlandığından emin olmak için işlemin kapanmasını bekleyin, örneğin:

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

Tüm kayıt eklentilerinin çalışması tamamlandığında, Dev Proxy DONE iletisini çıktıya yazdırır. İşleme isteği yoksa, Geliştirme Proxy'si No requests to process iletisini yazdırır. Eklentide bir hata oluştuysa, Geliştirme Proxy'si An error occurred in a plugin iletisini yazdırır. Bu iletilerden herhangi birini gördüğünüzde, Dev Proxy'nin kaydedilen istekleri işlemeyi tamamladığından emin olabilirsiniz.

Örnek başlangıç betiği

Aşağıda, CI/CD işlem hattında Geliştirme Proxy'sini başlatmak için kullanabileceğiniz bir bash betiği örneği verilmiştir:

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

Ayrıca bakınız