-
GitHub Actions'ın sorunları
- Son dönemde CI betiklerini GitHub Actions ile yeniden yazmaya çok zaman harcadım. Daha önce Earthly kullanıyordum, ancak artık sürdürülmediği için yeniden GitHub Actions'a döndüm.
- CI karmaşıktır; merge queue, birden fazla runner, Rust derlemeleri, Docker imajları ve entegrasyon testleri gibi unsurları içerir. Her PR birleştirmesinde ciddi miktarda CI süresi harcanır.
- İyi yazılım pratiği gereği tüm testlerin geçmesi, küçük hataların otomatik olarak düzeltilmesi ve test edilen artifact'lerin yayınlanan sürümle aynı olması gerekir. GitHub Actions bunu mümkün kılıyor, ancak yapılandırması karmaşık ve tutarsız.
-
Durum kontrolleri ve merge queue
- GitHub'ın merge queue özelliği, PR'ı ana dala rebase ettikten sonra CI çalıştırır. Ancak CI'nin hem kuyruğa alınmadan önce hem de alındıktan sonra çalışması gerekir ve bunu yapılandırmak zordur.
- Çözüm, iki aşamada da iş adını aynı ayarlamaktır. Böylece her iki aşamanın da geçmesi gerekir.
-
Güvenlik sorunları
- Yakın zamanda popüler bir GitHub Action tehlikeye atıldı. Buna karşılık bağımlılıkların hash ile sabitlenmesi önerildi, ancak çoğu kullanıcı bunu yapmıyor.
- GitHub'ın güvenlik modeli karmaşık ve anlaşılması zor.
GITHUB_TOKEN için varsayılan izinler ayarlanabiliyor, ancak izinleri kaldırmanın nasıl yapılacağı net değil.
- Workflow izinleri action'ın kendisine bağlı değildir ve kod içinden izin yükseltmek tuhaf bir yaklaşımdır.
-
Docker ve GitHub Actions kombinasyonu
- GitHub Actions içinde işleri bir container içinde çalıştırabilirsiniz, ancak dosya izinleri sorunları ve
$HOME dizininin konumunun değişmesi gibi problemler ortaya çıkar.
container alanında çok sayıda kısıtlama vardır; entrypoint'i override etmek ya da yalnızca bazı adımları container içinde çalıştırmak mümkün değildir.
-
YAML ile workflow geliştirmek
- Mantığı YAML ile yazmak, iş akışları büyüdükçe karmaşık hale gelebilir ve hata yapmaya açıktır. Bazı kontroller için RustRover IDE kullandım, ancak daha iyi statik denetimlere ihtiyaç var.
- Yerelde test etmek zordur; bu yüzden aynı repository üzerinde CI çalışana kadar tekrar tekrar commit ve push yapmak gerekir.
- Workflow'ları küçük tutup artifact'leri yükleyerek başka workflow'larda yeniden kullanılmalarını sağlıyorum. Ancak artifact indirirken token gerekiyor.
-
Sonuç
- Yeni CI betikleriyle birleştirme süresi ciddi ölçüde kısaldı, ancak yapılandırma süreci karmaşık ve hata ayıklamak zor. Yeniliğe ihtiyaç var.
1 yorum
Hacker News görüşleri
GitLab’ın daha iyi olduğuna dair görüşler var, ancak GitLab’ın da farklı açılardan sorunları bulunuyor
GitHub Actions ve DevOps’un yaygın biçimde eleştirilmesi ilginç
GitLab kullanırken GitHub’a geçildi ama hayal kırıklığı yarattı
30-60 saniyelik geri bildirim döngüsü en kötüsü
CI’ın kodu otomatik olarak düzeltmesi istenmiyor
GitHub Actions’ın gelişiminin durmuş gibi görünmesi hayal kırıklığı yaratıyor
GitHub Actions, container’ların kurulum script’i gibi kötüye kullanılmasına yol açıyor
Uygun aracı seçmek önemli
GitHub Action’ın güvenlik sorunları nedeniyle bağımlılıkları hash kullanarak sabitlemek gerekiyor
GitHub Actions’ın pek çok sorunu var