GitHub Actions
GitHub Actions, developer’ların uçtan uca DevOps işlemlerini otomatikleştirmesine olanak tanıyan bir sürekli entegrasyon ve sürekli teslim (CI/CD) çözümüdür. Git repository’e her kod gönderiminde gerçekleşir. Böylece, ortak havuza her yeni kod gönderildiğinde oluşturma, test etme ve devreye alma aşamaları otomatik olarak gerçekleşir.
Developer’lar, uygulamalarının ihtiyaçlarına göre yukarıda belirtilen tüm aşamaları ve daha fazlasını içeren iş akışları oluşturmak için GitHub Actions’tan yararlanabilirler. GitHub Actions, özelleştirmeye izin verir. Github Actions, Sürekli Entegrasyon (CI) ve sürekli dağıtım (CD) gibi birçok özelliği doğrudan yazılıma eklemeye yardımcı olur.
Linux, Windows, Ubuntu ve macOS gibi tüm önemli işletim sistemleri GitHub Actions’ı destekler. Platform, Rust, .NET, Java, Ruby, PHP, Go, Node.js ve Python gibi çeşitli programlama dillerini destekler. GitHub Actions’ın yerine tercih edilen alternatiflerden bazıları Jenkins, GitLab ve CircleCI'dir.
GitHub Actions Kullanım Durumları Nelerdir?
1. GitHub Akışı İçinde Derleme, Test ve Dağıtım
Bu, GitHub Actions’ın en yaygın kullanım durumlarından biridir. GitHub Actions ile sürekli entegrasyon (CI) ve sürekli dağıtım (CD) işlemleri otomatikleştirilebilir. Kod doğrudan konteynerler veya sanal makineler içinde dağıtılabilir.
2. Tekrarlayıcı Görevleri Otomatikleştirme
GitHub Actions, yazılım geliştirme yaşam döngüsünde birçok adımı otomatikleştirmek için kullanılabilir.
3. Tercih Edilen Araçları ve Hizmetleri Projeye Ekleme
GitHub Actions, üçüncü taraf test araçlarından CI/CD platformlarına, konteyner yönetim platformlarından sorun takip platformlarına ve sohbet uygulamalarına kadar tercih edilen araçları ve hizmetleri doğrudan repository'e bağlama ve entegre etme yeteneği sunar.
4. GitHub Üzerinde Hızlı İnceleme ve Kod Testi
Üçüncü taraf test araçlarını repo içindeki iş akışına entegre etmeyi sağlar. Ayrıca çoklu konteyner testleri ve "matrix builds" gibi özellikler sunarak Linux, Windows ve macOS üzerinde aynı anda birden fazla testi çalıştırmaya olanak tanır.
GitHub Actions Bileşenleri
GitHub Actions, iş akışını, depoda bir çekme isteğinin açılması veya bir sorunun oluşturulması gibi bir olay meydana geldiğinde tetiklenecek şekilde yapılandırmayı sağlar. GitHub Actions'ın CI/CD işlem hattı beş ana bileşenden oluşur. Her birinin belirli bir işlevi vardır ve aşağıda belirtildiği gibi DevOps yaşam döngüsünün farklı aşamalarında çalışır:
İş akışı (Workflow)
İş akışı, süreç mühendislerinin belirli bir görevi gerçekleştirmek üzere otomatikleştirebilecekleri bir süreçtir. Süreç mühendislerinin bir iş akışını tasarlamasına ve bunu belirli bir olayın tetikleyip tetiklemeyeceğine, görevlerin bir zaman çizelgesine göre mi yürütüleceğine veya görevlerin manuel olarak mı gerçekleştirileceğine karar vermesine yardımcı olur.
İş akışları, .github/workflows dizinindeki bir YAML dosyası kullanılarak tanımlanır. İş akışları hakkında daha fazla bilgi edinmek için iş akışlarını kullanma rehberine bakabilirsin.
Olay (Event)
Olay, bir iş akışını tetikleyen herhangi bir etkinliği ifade eder. Bir iş akışı, kod deposuna her gönderildiğinde oluşturma ve test işlemlerini gerçekleştiriyorsa, kodun gönderilmesi bir olaydır. Developer’ların bunları nasıl tasarladığına bağlı olarak çok sayıda olay bir iş akışını tetikleyebilir.
İş (Job)
İşler, iş akışındaki bir dizi adımdır. Her iş diğerinden bağımsızdır ancak developer’lar birbirine bağlı işler de oluşturabilirler. Ancak, bunların kronolojik sıraya göre yapılandırıldığından emin olunmalıdır.
Hareketler (Actions)
Eylemler, düzenli aralıklarla tekrar tekrar yürütülmesi gereken karmaşık görevlerdir. Developer’lar GitHub Actions’daki varsayılan eylemleri kullanabilir veya ihtiyaçlarına göre farklı türde eylemler yazabilirler.
Koşucu (Runner)
Runner, iş akışlarındaki işleri çalıştıran bir sunucudur. Bir koşucu herhangi bir zamanda yalnızca bir işi yürütebilir. Ancak birden fazla koşucu aynı anda çalışabilir.
GitHub Actions’ı Kullanmanın Faydaları
GitHub Actions'ın en önemli özelliklerinden biri sağladığı esnekliktir. İşte GitHub Actions'ın sunduğu avantajlar:
- ✅ GitHub Akışının Operasyonları: GitHub Actions, genel GitHub akışının tüm operasyonlarını sağlar. Bu da DevOps mühendislerinin tek bir noktadan çözüme sahip olması nedeniyle operasyonlarını kolaylaştırır.
- ✅ Otomasyon: GitHub Actions, tüm işlem hattı operasyonlarını otomatikleştirerek mühendislerin manuel çalışmasını ve görev fazlalığını azaltır. Bu da manuel görevlerde oluşabilecek hataları ortadan kaldırmaya yardımcı olur.
- ✅Yönetim Paneli: Yöneticilerin kullanıcıları, izinlerini, belirteçlerini ve iş akışını yönetmesine olanak tanır.
- ✅ Araç ve Hizmet Eklentileri: GitHub Actions, marketplace’de uygulama iş akışlarını geliştiren ve yükselten çeşitli araçlara ve işlevlere sahiptir.
- ✅ Test Etme: GitHub Actions, kodun güvenlik açıklarına ve sorunlara karşı kontrol edilmesi sürecini otomatik hale getirir. Bu süreç, yazılım geliştirme yaşam döngüsünün erken bir aşamasında, dağıtımdan çok önce gerçekleşir.
- ✅ Proje İzleme: GitHub Actions, developer’ların çeşitli iş akışlarını ve işleri gerçek zamanlı olarak izlemesine olanak tanır. Böylece herhangi bir sorun meydana gelirse DevOps ekibi sorunu hızlıca çözebilir.
GitHub Actions’ın Sınırlamaları
Her teknolojide olduğu gibi GitHub Actions’ın da sınırlamaları vardır. GitHub Actions birçok soruna çözüm olabilse de dikkate alınması gereken bazı dezavantajları şunlardır:
- 👎 YAML'ye aşinalık gerektirir: YAML deneyimli geliştiriciler için karmaşık değildir. Ancak yeni başlayanlar için zorlayıcı olabilir.
- 👎 Deneyim gerektirir: GitHub Actions, halihazırda teknik açıdan deneyimsiz geliştiriciler için uygun değildir. Bu, onu önemli ölçüde daha az erişilebilir hale getirir.
- 👎 Eylemlerde hata ayıklamak zor: GitHub Actions hatalarını ayıklamak nispeten zor olabilir.
- 👎 Maksimum yürütme süresi sınırları: GitHub Actions'ta iş başına maksimum yürütme süresi 6 saattir. Yaygın bir sorun olmasa da, bu bazı kullanıcılar için zorlayıcıdır. Bunu çözmenin yolu, komut dosyasını parçalamak, sağlayıcıları değiştirmek veya altyapıyı barındırmaktır.
GitHub Actions’da İş Akışı Oluşturma
GitHub Actions, iş akışını tanımlamak için YAML sözdizimini kullanır. Her iş akışı, kod deposunda, .github/workflows adlı bir dizinde ayrı bir YAML dosyası olarak depolanır. GitHub Actions’da iş akışı oluşturmak için şu adımlar takip edilir:
1. Depoda .github/workflows/ iş akışı dosyalarını depolamak için bir dizin oluşturulur.
2. Dizinde .github/workflows/ adında yeni bir dosya oluşturulur. learn-github-actions.yml ve aşağıdaki kod eklenir.

3. Bu değişiklikler kaydedilir ve GitHub deposuna aktarılır.
GitHub Actions’ı Diğer Platformlarla Entegre Etme
GitHub nispeten açık kaynaklı bir platform olduğundan ve GitHub Actions iş akışları bildirimsel YAML'de tanımlandığından, GitHub Actions kodunu diğer platformlarla entegre etmenin birkaç yolu vardır:
- Azure: Microsoft, Azure App Service barındırma platformuna kod dağıtan bir GitHub Actions iş akışı oluşturmayı mümkün kılar .
- Visual Studio: Visual Studio IDE, editörden ayrılmadan GitHub Actions iş akışlarını oluşturmaya ve yönetmeye olanak tanıyan bir uzantıya sahiptir.
- Google Cloud: Google, GitHub deposunda depolanan kodu Google Cloud hizmetiyle entegre etmeye yardımcı olur.
GitHub Actions ve Alternatif CI/CD Çözümleri Karşılaştırması
Piyasada CI/CD sürecini otomatikleştiren ve bu nedenle GitHub Actions’a rakip olan başka araçlar da vardır. İşte GitHub Actions ve rakipleri:
GitHub Actions ve Jenkins Karşılaştırması
GitHub Actions ve Jenkins, her ikisi de yüksek performanslı ve popüler CI/CD çözümleridir. Her birinin de avantajları ve dezavantajları vardır.
GitHub Actions, Jenkins’e göre çok daha kullanıcı dostudur. Github Actions developer’lar için daha düz bir öğrenme eğrisine sahipken Jenkins'in öğrenme eğrisi daha yüksektir. Bununla birlikte GitHub Actions daha yenidir ve topluluk desteği açısından sınırlamalara sahiptir. Jenkins ise daha uzun süredir piyasada olduğundan çok daha sağlam çözümler sunar.
GitHub Eylemleri ve GitLab Karşılaştırması
GitHub Actions ve GitLab'ın ikisi de son derece popülerdir. Eğer işletme DevOps operasyonlarının ötesinde bir araç arıyorsa Github Actions daha iyi bir alternatiftir.
GitHub Actions ve CircleCI Karşılaştırması
GitHub Actions'ın ücretsiz sürümü, sunduğu hesaplama süresi açısından CircleCI'den biraz daha kısıtlayıcıdır. Ayrıca, GitHub Actions harici depolarla değil, yalnızca GitHub'dakilerle uyumludur. Buna karşı CircleCI daha uyumludur ve aralarında GitHub ve Bitbucket'in da bulunduğu birçok depoyu destekler. Ancak GitHub Actions, CircleCI'ye göre GitHub depolarıyla daha sıkı bir şekilde entegre olduğundan nispeten daha güvenlidir.
GitHub Actions Ücretli mi?
🚫 İşleriniz genel depolardaki standart GitHub tarafından barındırılan çalıştırıcılarda yürütülüyorsa veya çalıştırıcılarını kendin barındırıyorsan GitHub Actions ücretsizdir.
💰 Özel bir depo kullanıyorsan, belirli bir miktarda depolama ve işlem süresine ücretsiz olarak sahip olursun. Ancak bu sınırları aştığında ödeme yapman gerekir.