Azure DevOps Pipeline CI/CD Süreci

Merhaba,

Azure Pipelines, kodu sürekli ve tutarlı bir şekilde test etmek ve oluşturmak ve herhangi bir hedefe göndermek için (Pipeline) sürekli entegrasyonu (CI) ve (Release )sürekli dağıtımı (CD) birleştirme amaçlı kullanıyor.

Biz de bu yazımızda bir projemizi test edeceğiz.

Daha önceki bir yazımızda pipeline ile ilgili küçük bir deneme yapmıştık,

Şimdi ise tamamen code integration ve deployment için deneme yapacağız. Daha önceden dotnet core 2.2 de hazırlanmış bir signal r projesini (ki onun demosunu da bora kaşmer hocadan yapmıştım diye hatırlıyorum) dotnet 5’te tekrar revize edeceğim.

Proje sonunda beklediğim ise şudur; Visul studio’da yaptığım değişikliği commit all ile repo’ma gönderdiğimde otomatik olarak yayında bulunan sitemim güncellenmesini sağlamak.

Sonraki yazılarda bunu bir onay mekanizmasına da bağlayacağız.

örnek bir uygulama açıyorum, ve hızlı bir şekilde Microsoft.AspNetCore.SignalR.Core paketi ile

Proje üzerinde sağ click yapıp Add > Client-Side Library diyerek aşağıdaki gibi signal r paketlerini yüklüyoruz. (js paketini sadece)

1

İlk olarak local’deki projeyi azure’a taşıyacağız. Local’deki ve remote daki yeri belirlememiz gerekiyor. (vs 2019)

2

Sonraki adımda create git repository diyoruz;

3

Bu sırada azure devops’ta bir adet proje açıyorum bu uygulamam için;

4

Oluşturulduktan sonra repo=>files taki url i kopyalıyorum;

5

Kopyalanan url i 4 nolu alandaki yerimize kopyalıyoruz. 2 numaralı alanda local pathi otomatik olarak zaten proje yolunuzu verecektir. 3 nolu alandaki existing remote seçeneğini seçip 4 nolu alanın açılmasını sağlayabilirsiniz. (Bu arada bu işlemler öncesinde git for windows ve github extention bilgisayarımda yüklüdür.)

6

Oluştur ve gönder dedikten sonra projemiz azure repos’a gönderilmiş oldu.

7

Sürekli entegrasyon için şimdi ilk olarak derleme amacıyla pipeline oluşturacağız;

8

Sonraki ekranda, repomuzun yerini seçiyoruz, burada ben demoyu azure’da yapacağım için azure repos’u seçiyorum.

9

Seçtikten sonra devam ettiğimde hali hazırdaki repomu seçili olarak getiriyor;

10

Seçip devam ediyorum.

Sonraki ekranda uygulama alt yapımızı seçmemizi istiyor, signalr uygulaması .net5 te hazırlandı o yüzden asp.net core framework ünü seçip devam ediyorum;

11

Alt yapıyı da seçtikten sonra YAML dosyasını hazırlıyor; save and run diyerek integration için ilk adımı oluşturmuş oluruz;

12

Kaydetme sonrası başlayan job pipeline’ının üzerine tıkladığımızda detayını da görmüş oluruz

13

Azure portal’da bir app servis oluşturuyoruz şimdi, bunun için aşağıdaki adımları (4,5) izleyebiliriz

Azure App Service ile Azure Cloud’ta Dağıtım Merkezi Azure DevOps Olan DotNet Core Web Uygulaması Yayınlama

Şimdi Azure hesabımızda yeni bir kaynak oluşturacağız. (https://portal.azure.com/#create/hub)

14

ana ekranda app service i seçiyoruz;

15

create app service ile devam ediyoruz;

16

1 => oluşturacağımız kaynağa bağlı grup ismi

2=> oluşturacağımız kaynağın ismi

3=> hangi ortama hazırlayacağımız

4=> bölge

Sonraki aşama olan deployment a geçiyoruz;

Burada repo’muz azure repos’ta, github’ta olmadığı için bu servis planına dahil etmiyorum;

17

 uygulama performans yönetim hizmetini şuan için istemediğim için bunu da hayır deyip devam ediyorum;

18

sonraki aşama tag lerde, gruplamak amacıyla tek bir etiket girip son sekmeye geçiyorum;

19

Son aşamayı gözden geçirip kaydet diyorum;

20

App service ismine teacherloper ismini vermiştim, detayına girip baktığımda yayın yapacağım site ile dahil tüm bilgileri görüyorum;

21

Site çalışır durumda;

22

azure devops sayfasına geri dönüyoruz;

CD süreci için bir release pipeline oluşturacağız bu sefer de;

New pipeline diyoruz;

23

Release süreci ile ilgili detaylı bilgiye de aşağıdaki link ile erişebiliriz;

https://docs.microsoft.com/tr-tr/azure/devops/pipelines/release/?view=azure-devops

Bir artifact paketi ekliyoruz, versiyon seçimi için

24

Artifact paketini ekledikten sonra stage alanına gelip bir template seçiyoruz, burada ben yayını azure app service üzerinden yapacağım için ilk satırda gelen service deployment ı seçiyorum;

25

Oluşan stage e bir isim verip devam ediyorum, burada tek bir işlem yapılacağı için direkt olarak yayına alacağım. production stage i olarak tanımlayıp devam ediyorum;

26

şimdi otomatik tetikleme işlemi yapacağız;

Bunun için oluşturduğumuz artifact paketinin sağ üst köşesinde yıldırım ikonuna (Continious Deployment trigger) tıklıyoruz ve otomatik tetiklenme sürecini enabled yapıyoruz;

27

Bu adımdan sonra Task sekmesine gidip azure service imizi tanımlamamız gerekiyor, Azure subscription olarak ücretsiz olarak oluşturduğum hesabı seçiyorum, kaynak gurubu olarak da azure portal da tanımladığım firstsourcegroup u seçip ok diyorum, yetkiyi vermiş oldum.

27

azure subscription altında, yetkiyide verdikten sonra app service lerden (ki sadece 1 tane var zaten) teacherloper simini verdiğim için ben onu seçiyorum. Son olarak da kaydet diyorum değişiklikleri.

28

kaydet denildiğinde , kaydedeceği dizini istiyor, ana dizine kaydetsin diye bırakıyoruz bu şekilde.

29

CI sürecini de otomatize etmek için; build pipeline a geri dönüyoruz, edit diyerek düzenleme ekranına geçiyoruz;

30

yönlendirildiğimiz sayfada üst üste 3 noktaya tıklayıp, trigger sayfasına geçiyoruz;

31

sürekli entegrasyon için izinleri veriyoruz;

32

ve save & queue butonu ile buradaki işlemimizi de tamamlıyoruz; işleri kuyruğa aldı onun çalışmasını bekliyoruz;

33

https://teacherloper.azurewebsites.net/ linkimde henüz bir uygulama yoktu, azure devops ta bu ci/cd sürecini tasarladık ve visual studio üzerinden herhangi bir değişiklik yapacağım, çünkü süreci başlatmam için değişiklikleri göndermem gerekiyor git üzerinden. Bu işlem gerçekleşince de doğal olarak azure portal da açtığım siteye bu değişikliğin yansımasını bekleyeceğim.

js dosyamda küçük bir değişiklik yapıp git üzerinden commit liyorum.

34

süreç başladı…

35

çalışma detayına bakıyorum;

36

Boommm 😀 Bir şeyleri yaparken atladık sanırım 🙂

“[error]Error: No package found with specified pattern: D:\a\r1\a\**\*.zip<br/>Check if the package mentioned in the  task is published as an artifact in the build or a previous stage and downloaded in the current job.”

37

detay görüntüsü;

38

sorun ile ilgili küçük bir araştırma yaptığımda

https://developercommunity.visualstudio.com/t/error-no-package-found-with-specified-pattern-dar1/349729

bu şekilde bir çözüm çıkıyor, elimdeki yml dosyasında derleme görevi ile ilgili yapılandırmayı da tamamlıyorum;

39

yml dosyasını güncelledikten sonra save & run ile işlemi tamamladığımızda derleme ve release i tamamlanmış olarak,

40

app service web linkimizi kontrol ettiğimde değişikliklerin yansıdığını görüyorum;

41

Şimdi aynı işlemi ekranda bir kaç değişiklik yaparak deneyeceğim çünkü az önceki işlemi manuel tetiklemiş gibi oldum;

42

index sayfasında küçük bir değişiklik yapıp tekrar commit liyorum, tekrar derlemeye başladı otomatik olarak;

43

başarılı bir şekilde sonlandı

44

release sürecimde de production succeded uyarısını görüyorum;

45

ve web sitemize de değişiklik yansımış oluyor;

46

demo bu kadardı, umarım faydalı olmuştur …………….

https://docs.microsoft.com/tr-tr/azure/devops/pipelines/release/?view=azure-devops

https://docs.microsoft.com/en-us/azure/devops/pipelines/release/deploy-pull-request-builds?view=azure-devops

https://docs.microsoft.com/tr-tr/azure/devops-project/azure-devops-project-aspnet-core

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s