GitLab Üzerinde CI/CD Pipeline Oluşturma

Bu makalemizde gitlab üzerinde CI/CD oluşturmayı öğreneceğiz. Öncelikle tanımlara kısaca bir göz atalım.

Sürekli Entegrasyon (Continuous Integration): Repository üzerine atılan her kod parçasından sonra sistem tarafından otomatik olarak gerçekleştirilen derleme, test, restore v.s işlemlerinin bütünüdür.

Sürekli Teslimat / Dağıtım (Continuous Delivery / Deployment): Sürekli entegrasyonun devamıdır. Sorunsuz olarak derlenen uygulamanın belli bir ortama deploy edilmesi işlemidir.

Popüler CI/CD Araçları: Jenkins, GitLab, Bamboo, Travis CI, Shippable

GitLab üzerinde bir CI (Continuous Integration) örneği yapalım.

Yeni bir .net core projesi oluşturaralım.

mkdir webapi
dotnet new webapi

Aşağıdaki controller’ı ekleyelim.

Ardından CI işlemleri için proje ana dizinine .gitlab-ci.yml dosyası oluşturalım ve içini aşağıdaki şekilde düzenleyelim.

Image bölümünde kullanacağımız base image’ını belirtiyoruz. (Daha önceki dotnet core örneklerimizde bu konu üzerinde durmuştuk.)

Stages bölümüne yeni bir aşama ekliyoruz.

before_script alanında ise dotnet projemizi restore ediyoruz.

build adımında ise uygulamayı build ediyoruz.

  • Bu yml dosyası oluşturduğunuz projeye veya derleme, test, restore aşamalarına göre değişiklik gösterecektir. Örneğin bir test aşaması ekleyecek olsaydık aşağıdaki kod blogunu yazmamız gerekecekti.
test:    
stage: test
script:
-"cd $test"
-"dotnet test"

Gitlab üzerinde bir repository oluşturalım ve kodlarımızı atalım.

git init
git remote add origin <project link>
git add .
git commit -m "first commit"
git push -u origin master

Evet kodu repo’ya yükledik. Şimdi gitlab.com adresine giderek projemizin içinden CI/CD menüsüne giriyoruz.

Açılan sayfada master branch’ine push ettiğimiz .gitlab-ci.yml dosyasını çalıştırabileceğimiz bir alan görüyoruz. Run Pipepile butonuna tıklayarak ilgili job’ı tetikliyoruz.

Ve sonuç…

Tüm aşamalar başarılı şekilde çalıştı ve uygulamamız build oldu.

Not: Gitlab üzerinde yazdığımız bu job’ı bir Schedule’ a bağlayarak otomatize edebilirsiniz.

Faydalı olması dileğiyle hoşçakalın..

--

--