Azure DevOps Gate Kullanımı
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.