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ı

  1. Jobs
  2. 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.. 🤞