Nedir bu Github Actions?
Merhabalar,
Bu yazımızda Github’ın bize sağlamış olduğu kolaylıklardan biri olan Github Actions’ı inceleyeceğiz.
Bildiğiniz üzere, yazdığımız kodun uzak (remote) serverlarda çalışabilmesi için bir çok aşama vardır. Eskiden bu aşamalar manuel olarak yapılırken günümüzde artık CI/CD uygulamaları sayensinde otomatik olarak yapılmaktadır.
Github’da buna bağlı olarak kendi uygulaması olan Github Actions’ı oluşturmuştur. Böylelikle Github da bulunan bir repositoryiniz için ekstradan başka uygulamalar indirmenize gerek kalmamıştır.
Github Actions sayesinde uygulamalarınız için workflow oluşturabilir, bu workflowlar da istediğiniz taskları istediğiniz sıralamada çalıştırabilirsiniz. Basit bir örnek olarak; Github daki projenize bir pull request açtığınız zaman Github Actions sayesinde testlerinizi otomatik olarak çalıştırıp, build alıp, deployment yapabilirsiniz.
Workflow
Workflow yani GitHub Actions süreçlerinin tamamını kapsayan oluşum.Projemizin bağlı olduğu repository katmanında .github/workflows
klasörü içerisinde bulunmalıdır. Sebebi ise github otomatik olarak .github
klasörü altında bulunan workflows
klasöründaki workflowlarını algılayarak çalıştırmaktadır. Örnek .github/workflows/first-workflow-to-play.yml
‘ı projeden inceleyebilirsiniz.
Workflow yapısı
- Jobs
- Runners
Jobs
Bir job workflow dosyası içerisinde tanımlanmış ve kendisine ait stepleri olan bir yapıdır. Her bir step tanımlanmış olduğu job içerisinde temelde paralel olarak çalıştırılır. Yani bir jobu tetiklediğinizde altında tanımlı steplerin hepsi çalışmaktadır.Fakat bunun sıralı olarak çalışmasını istiyorsanız onu bir sonraki yazıda inceleyeceğiz.
Steplerin detayına indiğimiz zaman, stepler aksiyonlardan oluşmaktadır. Örnek olarak bir stepde X işlemini yaparken diğer stepde X’e bağlı bir işlemide yapabilir yada Y işleminide yapabilirsiniz.
Runners
Runnerlar GitHub Actions serveri içerisinde bulundan bir grup operasyona verilen isimdir. Kısaca yaptıkları işlem ilgili aksiyonu istenildiği gibi ilgili serverda çalıştırmak ve onun çalışma sürecini log olarak kendisine ait bir yerde tutmaktır.
Örnek Proje
Gelin yazdıklarımızı somut örneklerle birleştirelim. Ben aşağıda bazı ekran görüntüleri paylaşarak sizlere nasıl workflow oluşturabilceğinizi göstereceğim.
Örnek olarak gelin bir proje yapalım.Projemizin adı PlayWithGithubActions
olsun.
Proje ve git dosyalarının oluşturulması
Proje ve git dosyalarının oluşturulması
Projede .github
klasörünün oluşturulması
YML dosyasının oluşturulması. Windows bilgisayarlarınızla direk sağ tuşa tıklayarak yeni dosyayı seçip, uzantısına YML eklemeniz gerekmektedir.
Aşağıdaki basit örneği YML dosyası içerisine kopyaladığınız zaman ilk GitHub Actions workflowumuzu oluşturmuş olacağız.
name: play-with-github-actions
on: [push]
jobs:
first-job:
runs-on: ubuntu-latest
steps:
- run: pwd
- run: echo "Merhaba Github actions"
Ardından aşağıdaki ekran görüntülerinde bulunan git komutları ile oluşturduğumuz yeni projemizi GitHub hesabımıza yükleyeceğiz.
Github hesabımızda öncelikle PlayWithGithubActions
adından yeni bir repository oluşturuyoruz. Repository oluşturduktan sonra lokalde bulunan repositorymiz için bazı konfigürasyonlar yapmamız gerekiyor.
Konfigürasyon diyince hemen çekinmeyin 😄 sadece 1 komut ekleyeceğiz. O da remote bilgisi. Aşağıdaki komut örneği ile ben kendi projem için remote bilgisini ekledim. Bu bilgi Github da yeni oluşturduğunuz proje içerisinde belirtilmektedir.
git remote add origin git@github.com:mrpehlivan/PlayWithGithubActions.git
Remote’u ayarladıktan sonra git push
komutu ile kodumuzu gönderiyoruz. Ardından oluşturduğumuz GitHub repositorimize gidip actions kısmından workflowumuzu ve süreçlerini görebilirsiniz.
Kolay Gelsin.. 🤞