Ana içeriğe geç

GitHub Actions

Okunuşu
githab ekşıns
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/github-actions

Kısaca

GitHub Actions, GitHub'ın yerleşik otomasyon platformudur; depodaki YAML iş akışları push ya da pull request olduğunda test, derleme ve dağıtım çalıştırır.

GitHub Actions nedir?

GitHub Actions 2019'da herkesin kullanımına açıldı ve GitHub'ı bir CI/CD platformuna dönüştürdü. İş akışları (workflow), depoda .github/workflows altında saklanan YAML dosyalarıdır. Her iş akışı ne zaman çalışacağını, örneğin her push'ta, pull request'lerde, bir takvime göre ya da elle, ve ne yapacağını söyler.

Bir iş akışı işlerden (job) oluşur; her iş, runner adı verilen bir makinede çalışır: GitHub'ın sağladığı, Linux, Windows ya da macOS içeren temiz bir sanal makine ya da kendi barındırdığınız bir makine. Bir iş, adımların (step) bir listesidir: npm test gibi kabuk komutları ya da kodu getirmek için actions/checkout gibi yeniden kullanılabilir action'lar. Biri diğerine bağlı değilse işler paralel çalışır; bir matris de aynı işi birkaç sürümde ya da işletim sisteminde çalıştırabilir.

GitHub Marketplace'teki binlerce hazır action yaygın işleri halleder: bir dil ortamını kurmak, bağımlılıkları önbelleğe almak, paket yayımlamak, bulut sağlayıcılarına dağıtmak ya da pull request'lere yorum yazmak. API anahtarları gibi gizli bilgiler (secret) depo ayarlarında şifreli saklanır ve yalnızca ihtiyaç duyan adımlara verilir.

Sık yapılan bir yanlış, GitHub Actions'ın yalnızca CI için olduğu düşüncesidir. Depo olaylarıyla tetiklenen neredeyse her şeyi otomatikleştirebilir: issue'ları etiketlemek, sürüm yayımlamak, bağımlılıkları güncellemek ya da belgeleri yayımlamak. Üçüncü taraf action'lar kodunuza ve gizli bilgilerinize erişerek çalıştığı için onları belirli bir sürüme sabitlemek önemli bir güvenlik pratiğidir.

Bir bakışta

Bir GitHub Actions iş akışı. Bir push ya da pull request, .github/workflows/ci.yml iş akışı dosyasını tetikler. Bu dosya temiz runner'larda iki işi paralel çalıştırır: checkout, setup-node, npm ci ve npm run lint adımlarından oluşan lint; checkout, setup-node, npm ci ve npm test adımlarından oluşan test. İkisi de geçince pull request'te yeşil bir onay işareti görünür ve birleştirilebilir.pushya da pull request.github/workflows/ci.ymljob: lintubuntu-latest üzerindecheckoutsetup-nodenpm cinpm run lintjob: testubuntu-latest üzerindecheckoutsetup-nodenpm cinpm testişler paralel çalışırDenetimler geçtiPR birleştirilebilir
Bir olay iş akışını başlatır; işleri ayrı makinelerde paralel çalışır, her biri adımlarından sırayla geçer, sonuç da pull request'te görünür.

Önemli noktalar

  • GitHub Actions, otomatik iş akışlarını GitHub'ın içinde çalıştırır.
  • İş akışları .github/workflows altındaki YAML dosyalarıdır ve olaylarla tetiklenir.
  • İşler GitHub'ın ya da sizin barındırdığınız runner'larda adım adım çalışır.
  • Marketplace action'ları checkout, önbellekleme ve dağıtım gibi yaygın işleri halleder.
  • Kodunuzu ve gizli bilgilerinizi görebildikleri için üçüncü taraf action'ları sürümlere sabitleyin.

Örnek

Her push'ta ve pull request'te testleri çalıştırmakyaml
# .github/workflows/ci.yml
name: CI
on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
          cache: npm
      - run: npm ci
      - run: npm test

Sık sorulan sorular

GitHub Actions ücretsiz mi?

GitHub'ın barındırdığı runner'larda herkese açık depolar için ücretsizdir. Özel depolar her ay belirli bir ücretsiz dakika hakkı alır; bunun ötesindeki kullanım ücretlendirilir.

GitHub Actions runner'ı nedir?

Bir işi çalıştıran makinedir. GitHub, Linux, Windows ya da macOS içeren barındırılan runner'lar sağlar; kendi makinelerinizi de kendi barındırdığınız runner olarak kaydedebilirsiniz.

İş akışı, iş ve adım arasındaki fark nedir?

İş akışı, tek bir YAML dosyasındaki otomasyonun bütünüdür. Ayrı runner'larda çalışan işleri içerir; her iş de komut ya da action çalıştıran adımlardan oluşan bir sıradır.

İlgili sayfalar

Kaynaklar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar