GitHub Actions İş Akışlarını SSH ile Canlı Olarak İnceleme ve Hata Ayıklama

CI/CD Hata Ayıklamanın En Sinir Bozucu Yanı

Bunu yaşamayan kalmamıştır: GitHub Actions iş akışın patlar, sen de nedenini anlamak için onlarca satır log okumaya çalışırsın. Komutu biraz değiştirip commit atarsın, push’larsın, beklersin… Yine hata. Tekrar commit, tekrar push, tekrar bekleme. Bu döngü bazen saatler alır.

İşte bu tam olarak Alex Ellis’in Actuated projesi üzerinde çalışırken karşılaştığı sorun. Actuated, GitHub Actions için mikro-VM tabanlı bir runner çözümü. Proje kapsamında VM görüntülerini test edip hata ayıklamak gerekiyordu ve klasik log okuma yöntemi yeterli gelmiyordu. Çözüm ise oldukça zarif: runner’a doğrudan SSH ile bağlanmak.

SSH ile Runner’a Bağlanmak Ne Demek?

Normalde GitHub Actions iş akışları tamamen izole bir ortamda çalışır. Sen sadece YAML dosyana komutlar yazarsın, o da onları çalıştırır. Peki ya o ortamın içine girip bizzat bakabilseydin? Tam olarak hangi dosyaların var olduğunu, environment variable’ların ne değer taşıdığını, ağ bağlantısının nasıl yapılandırıldığını gerçek zamanlı olarak görebilseydin?

SSH erişimi tam da bunu sağlıyor. İş akışın belirli bir adımında duraksıyor, sana bir bağlantı adresi veriyor ve sen terminalden oraya bağlanıyorsun. Sanki kendi sunucuna SSH atıyormuşsun gibi. Ortamı inceleyebilir, komutları tek tek deneyebilir, neyin neden çalışmadığını anında görebilirsin.

Bu Yöntemi Kim, Nasıl Kullanabilir?

Alex Ellis bu özelliği başlangıçta Actuated kullanıcıları için geliştirdi. Ancak daha sonra bunu GitHub Sponsorlarına ücretsiz olarak sunmaya karar verdi. Yani projeyi destekleyen kişiler, bu SSH hata ayıklama özelliğine erişim kazanıyor.

Türkiye’deki geliştirici topluluğu için şunu not düşeyim: GitHub Sponsors sistemi, açık kaynak geliştiricileri desteklemenin doğrudan bir yolu. Tıpkı bir gazeteci ya da içerik üreticiye abone olur gibi, bir yazılımcıya da aylık katkı sağlayabiliyorsun. Bu örnekte ise katkının karşılığı somut bir araç oluyor.

Peki Teknik Olarak Nasıl Çalışıyor?

Yöntemin temel mantığı şu şekilde işliyor:

  • İş akışına özel bir adım ekliyorsun. Bu adım, bir SSH tüneli oluşturuyor.
  • Runner, dışarıya güvenli bir bağlantı noktası açıyor. Bunu genellikle ngrok ya da benzeri bir tünel servisi üzerinden yapıyor.
  • Terminale yapıştırabileceğin bir SSH komutu üretiliyor.
  • Sen bu komutu çalıştırıyorsun ve doğrudan runner’ın içindesin.
  • İnceleme bittikten sonra bağlantıyı kapatıyorsun ve iş akışı kaldığı yerden devam ediyor ya da sonlanıyor.

Bu süreçte runner tamamen interaktif hale geliyor. Dosya sistemine bakabilir, process listesini inceleyebilir, ağ ayarlarını kontrol edebilir, hatta eksik bir paketi yükleyip komutun çalışıp çalışmadığını anında test edebilirsin.

Neden Bu Kadar Değerli?

Geleneksel CI/CD hata ayıklama süreci şöyle işler: Bir şeyi değiştir, commit yap, push’la, sonucu bekle, log oku, tekrar değiştir. Bu döngünün her turu dakikalar alabilir. Karmaşık bir sorunla karşılaştığında bu turu onlarca kez tekrarlamak zorunda kalabilirsin.

SSH erişimiyle bu döngü büyük ölçüde kısalıyor. Sorunu canlı ortamda, gerçek bağlamda inceleyebiliyorsun. Bu, özellikle şu durumlarda kritik önem taşıyor:

  • Sadece CI ortamında ortaya çıkan ve yerel makinende tekrar edemediğin hatalar
  • Belirli bir işletim sistemi sürümüne ya da mimarisine özgü sorunlar
  • Docker image’ları veya VM görüntüleri oluşturulurken yaşanan build hataları
  • Gizli değişkenlerin (secret) doğru aktarılıp aktarılmadığını kontrol etme ihtiyacı
  • Ağ bağlantısı veya servis erişilebilirliği sorunları

Actuated Projesi Hakkında

Actuated, GitHub’ın standart runner’larına bir alternatif sunuyor. Özellikle ARM mimarisi desteği ve güvenli izolasyon konusunda öne çıkıyor. Micro-VM teknolojisini kullanarak her iş akışını tamamen temiz ve izole bir ortamda çalıştırıyor. Bu, özellikle güvenlik açısından hassas projelerde ya da farklı donanım mimarileri hedefleyen build süreçlerinde büyük avantaj sağlıyor.

Ben de kendi projelerimde zaman zaman ARM tabanlı build süreçleriyle uğraşıyorum. Raspberry Pi ve benzeri donanımlar için cross-compilation yapmak ya da doğrudan ARM runner üzerinde test etmek, bu tür araçları çok daha anlamlı kılıyor.

Benim İçin Ne İfade Ediyor?

21 yıldır yazılım geliştiriyorum ve bu süreçte en çok zaman harcadığım şeylerden biri hata ayıklama oldu. Özellikle CI/CD ortamları, yerel geliştirme ortamından farklı davrandığı için bu süreç çoğu zaman gereksiz yere uzuyor.

SSH ile runner’a bağlanabilmek, benim için o siyah kutuyu şeffaf hale getirmek anlamına geliyor. Artık log satırlarından anlam çıkarmaya çalışmak yerine doğrudan içine girip bakabiliyorsun. Bu, deneyimli bir geliştirici için bile büyük fark yaratıyor.

Eğer GitHub Actions kullanan ve zaman zaman anlaşılmaz hatalarla boğuşan biri isen, bu yöntemi kesinlikle araştırmanı öneririm. Actuated’ın GitHub Sponsors üzerinden sunduğu erişim, bu özelliği denemek için iyi bir başlangıç noktası.

Sonuç

CI/CD hata ayıklaması, commit-push-bekle döngüsünden çıkıp interaktif bir sürece dönüştüğünde hem çok daha verimli hem de çok daha az sinir bozucu hale geliyor. SSH üzerinden runner erişimi, bu dönüşümün somut bir örneği.

Detayları ve kurulum adımlarını orijinal yazıdan inceleyebilirsiniz. Teknik açıdan oldukça iyi belgelenmiş ve uygulamalı örneklerle desteklenmiş bir kaynak.

Son güncelleme 7 Eylül 2026