Azure DevOps Gate Kullanımı

Fatih KÜÇÜK
KoçSistem
Published in
3 min readDec 15, 2021

Yeni bir hikaye ile karşınızdayım. Bu yazımda release içerisinde kullanılan gate lerden bahsedeceğim. Node.js ve express kullanarak basit bir uygulama yazacağız ve Azure DevOps içerisinde nasıl kullanacağımızı göstermeye çalışacağım.

Gateler, release öncesi ve sonrası yapmak istediğiniz kontrolleri veya doğrulamaları sağlamaktadır. Genellikle kullanım amaçları deployment öncesi ve sonrasında uygulamalarınızın izlenmesi,sağlık durumunu kontrol etmek veya olay, problem, değişiklik yönetimi gibi ITSM toolları ile entegrasyonu için kullanılmaktadır.

Gereksinimler

  • Visual Studio Code
  • Node.js
  • Ngrok

Express’i kullanarak temel bir web sunucusu oluşturulması

Komut satırından web sunucumuz için yeni bir proje klasörü oluşturuyoruz.

mkdir gate-sample
cd gate-sample

Projemiz için yeni bir package.json dosyası oluşturmak için npm init komutunu kullanıyoruz.

npm init

Entry point dışındaki tüm seçeneklerin varsayılanlarını kabul etmek için Enter tuşuna basın.Entry point için app.js yazarak değiştiriyoruz.

Aşağıdaki komutları kullanarak express ve mssql modüllerini gate-sample dizini içerisine yüklüyoruz.

npm install express
npm install mssql

Gate-sample klasöründen aşağıdaki komutu çalıştırarak proje klasörünü VS Code içerisinde açıyoruz.

code .

Azure DevOps içerisinde release tetiklendiğinde, yazmış olduğumuz web uygulamamıza istekte bulunacak ve header içerisinde changeRequestId bilgisini göndericektir. Yazmış olduğumuz web uygulaması ile bu değeri veri tabanında sorgulayacağız. Kayıt mevcut ise response status: ‘successful’ dönecek değil ise status: ‘fail’ döndüreceğiz.

Uygulamamızı ayağa kaldırma vakti

Uygulamamızın bulunduğu gate-sample dizininde node app.js komutunu çalıştırıyoruz.

3000 portu üzerinden ayağa kalmış durumda. ChangeRequestId bilgisi olmadığı için fail dönmesi normal.

Ngrok ile dışarıya yelken açıyoruz

Geliştirme ortamlarında kullanabileceğiniz oldukça fayda bir program. Bu program vasıtası ile uygulamamızı internete açacağız.Windows için uygun ngrok sürümünü indiriyoruz ve açıyoruz.

Azure DevOps Servis Bağlantısı

Ngrok un bizlere vermiş olduğu https adresi Azure DevOps içerisinde service connection olarak giriyoruz.

Pipeline içerisinde değişkenimizi tanımlıyoruz

Daha sonra request header içerisinde bu değişkeni uygulamamıza göndereceğiz.

Settable at release time işaretlenmesi önemli. Böylece her release öncesi değişken için değer girebileceksiniz.

Pipeline için Gate tanımlıyoruz

Yukarıda tanımlamış olduğumuz servis bağlantısını kullanarak pipeline içerisinde gate tanımını gerçekleştiriyoruz.

Aksiyon zamanı

Yeni bir release başlatıyoruz ve deployment öncesi kontrollerimizi gerçekleştiriyoruz.

Burada dikkat edilmesi gereken bazı püf noktalar mevcut. Gate stratejinizi belirlemeniz ve buna uygun şekilde konfigürasyon gerçekleştirmeniz gerekmektedir. Bunuda aşağıdaki Evaluation options alanından gerçekleştirebilirsiniz.

Belirlenen time-out süresi içerisinde ve re-evaluation süresi içerisinde tekrar tekrar istek göndermektedir.

Her şey yolunda giderse aşağıdaki gibi success alacak ve deployment devam edecektir.

Hata alması durumununda aşağıdaki gibi deployment ilerlemeyecektir.

--

--

Fatih KÜÇÜK
KoçSistem

Fatih is a technology lover with interest in DevOps, Agile, Container and Container Orchestration.