Günümüzde yazılım geliştirme süreçleri gitgide daha fazla otomasyona bağlıdır. Sürekli Entegrasyon ve Sürekli Dağıtım (CI/CD) sistemleri, yazılım kalitesini artırmak, testleri otomatikleştirmek ve hızlı geri bildirim sağlamak için önemlidir. Bu alanda GitHub Actions popüler bir platform olarak karşımıza çıkar. Ancak bazı durumlarda, CI/CD sürecinin tetiklenmemesi gerekebilir. İşte bu tür durumlar için [skip ci]
komutları devreye girer.
Bu yazıda, GitHub Actions üzerinde iş akışlarını (workflow) belirli durumlarda nasıl atlayacağınızı ve bunu yaparken nelere dikkat etmeniz gerektiğini detaylarıyla açıklıyoruz.
[skip ci]
Ne Anlama Gelir?
[skip ci]
, GitHub Actions tarafından tetiklenecek push ve pull_request iş akışlarını atlamak için commit mesajlarına eklenen bir anahtar kelimedir. Bu ifade sayesinde CI/CD süreçleri tetiklenmez, böylece kaynak ve zaman tasarrufu sağlanır.
GitHub Actions tarafından desteklenen atlama komutları şunlardır:
[skip ci]
[ci skip]
[no ci]
[skip actions]
[actions skip]
Bu ifadelerden herhangi biri, commit mesajının herhangi bir yerinde bulunabilir.
[skip ci]
Hangi Durumlarda Kullanılır?
İş akışlarını atlamak için en yaygın kullanım senaryoları şöyledir:
- Dokümantasyon güncellemeleri
- Yazım hataları (typo) gibi küçük değişiklikler
- CI testlerinin gereksiz olduğu küçük stil düzenlemeleri
- CI süreçlerinin tekrarlamasının gerekli olmadığı durumlar
GitHub Actions’ta İş Akışları Nasıl Atlanır?
1. Commit Mesajına Ekleyerek İş Akışlarını Atlamak
Commit mesajınızda aşağıdaki gibi [skip ci]
ekleyebilirsiniz:
git commit -m "Dokümantasyon güncellendi [skip ci]"
Alternatif kullanım:
git commit -m "[ci skip] Küçük typo düzeltildi"
2. Push İşlemlerinde İş Akışlarını Atlamak
Bir push işleminde bulunan herhangi bir commit mesajında [skip ci]
bulunuyorsa, push işlemi sırasında tetiklenmesi gereken GitHub Actions iş akışları otomatik olarak atlanır.
3. Pull Request (Çekme İsteği) İşlemlerinde İş Akışlarını Atlamak
Çekme isteği (PR) durumlarında, sadece PR’ın HEAD commit’inde [skip ci]
gibi bir ifade varsa, iş akışı tetiklenmez. Ancak PR’larda dikkat edilmesi gereken önemli bir nokta var:
- Eğer GitHub üzerinde bazı kontrollerin başarıyla tamamlanması zorunlu hâle getirildiyse,
[skip ci]
kullanımı PR’ın birleştirilmesini engelleyebilir çünkü iş akışı çalıştırmaları beklemede kalır. - Bu durumda, kontrolleri geçmek için PR’a ek commit gönderilmelidir.
skip-checks
Komutu Kullanımı (Alternatif Yöntem)
Commit mesajınızın sonuna özel fragmanlar ekleyerek (skip-checks:true
) de CI süreçlerini atlayabilirsiniz.
Örneğin:
Doküman güncellemesi yapıldı
skip-checks: true
Bu komut, GitHub tarafından fragman (trailer) olarak kabul edilir ve iki boş satırla ayrılarak eklenir. Bu yöntem, daha ayrıntılı kontrol isteyen geliştiriciler tarafından tercih edilir.
Önemli Not:
- Git, varsayılan olarak ardışık boş satırları otomatik olarak kaldırır. Bu nedenle commit mesajınızın tam olarak korunmasını sağlamak için aşağıdaki komutu kullanmalısınız:
git commit --cleanup=verbatim -m "Doküman güncellemesi yapıldı
skip-checks: true"
[skip ci]
Kullanımında Dikkat Edilmesi Gereken Noktalar
- Atlanmış iş akışı, beklemede (
Pending
) olarak kalabilir ve zorunlu kontrollerde sorun oluşturabilir. - Kritik testler veya entegrasyon aşamaları için bu yöntemi kullanmayın. Risk oluşturabilecek durumlarda mutlaka CI akışlarının çalıştırılması gerekir.
- Atlanan iş akışları sadece
push
vepull_request
etkinliklerini etkiler. Örneğinpull_request_target
gibi etkinlikleri etkilemez. - Bir workflow’u tamamen devre dışı bırakmak istiyorsanız, GitHub’ın workflow yönetiminden (
disable workflow
) bunu ayrıca yapmanız gerekir.
İş Akışı YAML Dosyasında Koşul Kullanımı (İleri Seviye Kullanım)
Aşağıdaki YAML örneğiyle [skip ci]
kontrolünü daha hassas biçimde yönetebilirsiniz:
name: CI Pipeline
on: [push, pull_request]
jobs:
test:
if: "!contains(github.event.head_commit.message, '[skip ci]')"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Testleri Çalıştır
run: |
./run-tests.sh
Bu YAML, commit mesajında [skip ci]
bulunduğunda, belirtilen işi (test
) çalıştırmaz.
Diğer Platformlarla Karşılaştırma (GitLab CI)
Benzer şekilde GitLab CI üzerinde de [skip ci]
kullanılabilir. GitLab CI için ek yöntem olarak git push
sırasında opsiyon olarak ci.skip
kullanılır:
git push origin <branch> --push-option=ci.skip
GitHub Actions ise henüz bu tarz push-option’ları desteklemez. Ancak gelecekte benzer özellikler eklenebilir.
Sonuç ve En İyi Uygulamalar
GitHub Actions’ta [skip ci]
özelliğini kullanmak, gereksiz iş akışı tetiklemelerini önleyerek kaynakları ve zamanı verimli kullanmanızı sağlar. Bu özellik, günlük küçük düzenlemeler ve dokümantasyon güncellemeleri için son derece faydalıdır. Ancak kritik süreçlerde dikkatle kullanılması gerekir.
Bu yöntemle, CI/CD süreçlerinizi daha temiz, hızlı ve yönetilebilir hâle getirebilirsiniz.