Merhaba , bu makalemizde önceki makalemizin devamı niteliğindedir.
Bu makalede Azure DevOps üzerinde Pipeline kullanımına değineceğiz ve basit bir örnek gerçekleştireceğiz. Azure pipeline CI/CD (Continues Integration ve Continues Deployment) süreçlerimizi oluşturmamızı sağlayan Azure DevOps öğesidir. Hem agile hem de scrum metedolojilerini destekler. Alternatifleri Jenkins, Gitlab CI, Github Actions vb. uygulamaladır.
Azure Pipeline CI/CD süreçlerini yapabilmek için agentlara ihtiyaç duyar. Jenkins'te slave, gitlab CI ' da ise runner mantığında çalışır. Bu agentlar hem microsoft tarafından sağlanabilirken istersek kendi sunucularımızda bu agentları kurabiliriz.
Azure pipeline azure araçlarına entegre olduğu için oldukça kullanışlı ve işlerimizi kolaylaştırmaktadır. Bununla birkaç dakika da uygulamalarımızı Azure üzerinde deploy edebilmemiz mümkündür. Aşağıdaki pipeline ile yapılabilecek bir örnek görebiliriz.
Bir pipeline oluşturduğumuzda , repository branch içerisinde "azure-pipelines.yml" isminde bir dosya oluşturulur ve pipeline içeriği bu dosyaya yazılır. Gitlab CI da bu mantıkla çalışmaktadır.
Azure DevOps pipeline içerisinde kullanabileceğimiz hiyerarşi aşağıdaki gibidir.
Stages > Stage > Jobs > Job > Steps
Stepslerin içerisinde de scriptler, tasklar kullanılır. Aşağıda bununla ilgili bir örneği görebiliriz.
trigger:
- main
pool:
name: Self-Hosted Agent Pool
stages:
- stage: BirinciStage
jobs:
- job: BirinciStageBirinciJob
steps:
- script: echo "BirinciStageBirinciJob Steps Script"
displayName: BirinciStageBirinciJob
- job: BirinciStageIkinciJob
steps:
- script: echo "BirinciStageIkınciJob Steps Script"
displayName: BirinciStageBirinciJob
- stage: IkinciStage
jobs:
- job: IkinciStageBirinciJob
steps:
- script: echo "IkinciStageBirinciJob Steps Script"
displayName: IkinciStageBirinciJob
- job: IkinciStageIkinciJob
steps:
- script: echo "IkinciStageIkinciJob Steps Script"
displayName: IkinciStageIkinciJob
Bu pipeline çalıştırdığımızda aşağıdaki şekilde bir sonuç alacağız.
Tabiki bu hiyerarşiyi kullanmadan da oluşturulan pipeline çalışır. Örneğin; sadece steps adımını kullanılarakta pipeline yazılabilir. Bu kullanım tamamen yapınıza göre değişkenlik göstermektedir. Büyük yapılarda hiyerarşiye uymak pipeline nin okumasını kolaylaştıracaktır.
Ya da hiyerarşiyi jobs kısmından da başlatarak yazabiliriz.
jobs:
- job: BirinciJob
steps:
- script: echo "BirincJob Steps Script"
displayName: BirincJob
- job: IkinciJob
steps:
- script: echo "IkinciJob Steps Script"
displayName: IkinciJob
Şimdi bir Dockerfile üzerinden image oluşturup bunu DockerHub'a push eden bir pipeline yazalım ve bunu Azure Web Apps üzerinde deploy eden pipeline yazacağız.
Öncelikle agent'ı kendi sunucuma kuracağım.
Bu işlemlerden önce bir personel access token oluşturalım çünkü agentı konfigure ederken isteyecektir.
Sağ üst köşede bulunan User Settings > Personel Access Token > New Token ile oluşturuyoz ve bir isim veriyoruz. Yetki olarakta Agents Pool > Read and Manage seçmemiz yeterlidir.
Vereceği tokenı bir yere not alınız.
Agent kurulumuna geçebiliriz.
Project Settings > Agent Pools > New Pool diyerek bir pool oluşturuyorum. Bu pool birden fazla agentı barındırabilir. Ayarları aşağıdaki şekilde yaptıktan sonra oluşturuyoruz.
Ardından oluşturduğumuz poola tıklayıp agent sekmesine geliyoruz ve "New Agent"'a tıklıyoruz. Burada microsoft bize agentın indirme linkini ve hangi işletim sisteminde nasıl kurulacağını açıklamış. Ben linux seçtim ve microsoftunda belirttiği aşağıdaki komutları çalıştırdım.
wget https://download.agent.dev.azure.com/agent/4.264.2/vsts-agent-linux-x64-4.264.2.tar.gz
tar xvfz vsts-agent-linux-x64-4.264.2.tar.gz
./config.sh
config.sh scriptini çalıştırdıktan sonra bizim hangi organizasyona ve oluşturduğumuz agent pool'un ismini ve bu agent için bir isim girmemiz gerekmektedir.
Server URL: https://dev.azure.com/organizasyon_ismi
Enter (Y/N) Accept the Team Explorer Everywhere license agreement now? (press enter for N) > Y
>> Connect:
Enter server URL > https://dev.azure.com/akturkbilisim
Enter authentication type (press enter for PAT) > PAT
Enter personal access token > ************************************************************************************
Connecting to server ...
>> Register Agent:
Enter agent pool (press enter for default) > MySelfHostedAgent
Enter agent name (press enter for ceph-node) > pipeline-agent
Scanning for tool capabilities.
Connecting to the server.
Successfully added the agent
Testing agent connection.
Enter work folder (press enter for _work) >
2025-11-08 18:08:18Z: Settings Saved.
Bu işlemlerden sonra AzureDevOps üzerinde "Agent Pools > Agent" sekmesinden kontrol ettiğimizde durumun offline olduğunu görebiliriz. Bunun için
./run.sh scriptini çalıştırıyoruz ama bu bize script ön planda çalışmaktadır yani terminal session kapandığında agent servisi duracaktır. İstersek bu agent servisini bir systemd servisine dönüştürebiliriz. Microsoft bunun içinde svc.sh isminde bir script oluşturmuş.
./svc.sh install, ile systemd servisi haline gelecektir ve aşağıdaki komutla servisi başlatıyoruz. Bu işlemden sonra agent online durumua gelecektir.
systemctl restart vsts.agent.akturkbilisim.MySelfHostedAgent.pipeline\x2dagent.service
Benim kodlarım Github üzerinde olduğu için Github hesabımı da entegre edeceğim. "Project Settings > Github Connection > New Connection" sekmesinden hesabımı bağlayacağım. Ben github hesabımıda "Personel Access Token" ile bağlayacağım için github üzerinde de oluşturmam ve yetkilendirmem gerekiyor. Bunu burada anlatmayacağım.
Artık pipeline yazma aşamasına gelebiliriz.
Pipeline sekmesinden New Pipeline diyerek oluşturuyoruz bize bu pipelinenin neresi ile entegre olacağını söylüyor ben Github ile ilerleyip repository'imi seçiyorum .
Ardından bize hazır olarak kullanabileceğimiz şablonlar sunuyor , ilk kez olacağı için "Stater Pipeline" seçebiliriz eğer pipeline dosyamız repositoryimizde var ise "Select an existing YAML file" seçeneğini seçebiliriz. Zaten bu templateleri daha sonradan da seçebiliriz.








Top comments (0)