GitHub Actions
- Okunuşu
- githab ekşıns
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
Ö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
# .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 testSı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
- CI/CDDevOps ve Bulut, s. 9CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
- GitHubSürüm Kontrolü, s. 25GitHub, Git depolarını barındırıp birlikte kod yazmaya yarayan; pull request, kod incelemesi, issue ve en büyük açık kaynak topluluğunu sunan platformdur.
- DevOpsDevOps ve Bulut, s. 13DevOps, yazılım geliştirme ile BT operasyonlarını birleştirerek yazılımın daha hızlı ve güvenilir sunulmasını sağlayan bir kültür ve pratikler bütünüdür.
- YAMLDevOps ve Bulut, s. 52YAML, parantez yerine girinti kullanan, insanın okuyabileceği bir veri biçimidir; DevOps araçlarında ve CI/CD pipeline'larında yapılandırma için yaygındır.
- GitSürüm Kontrolü, s. 10Git, dosyalardaki değişiklikleri zamanla izleyen ücretsiz, açık kaynaklı dağıtık sürüm kontrol sistemidir; iş birliğini ve hataları geri almayı kolaylaştırır.
- Secrets ManagementGüvenlik, s. 34Secrets management, parola, API anahtarı ve token gibi hassas kimlik bilgilerini güvenle saklama, dağıtma, döndürme ve denetleme pratiğidir.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin