- Teknik bloga içerikleri otomatik olarak dağıtan bir Slack botunun geliştirilme süreci ve yöntemi
- Geliştirme süreci
-
- Otomasyon planı oluşturma
- İlk olarak, teknik bloga içerik dağıtırken daha önce kullanılan araçların (Notion, GitLab) yeni bir araçta (Slack botu) birleştirilmesine karar verildi. Amaç, ekip üyelerinin yeni dağıtım sistemine kolay ve hızlı biçimde uyum sağlamasını teşvik etmekti
- İkinci olarak, TypeScript framework'ünün kullanılmasına karar verildi. TypeScript yaygın olarak kullanılıyor ve statik tipli bir dil olduğu için daha kararlı geliştirme yapılmasını sağlıyor. Bu da yeni dağıtım sisteminin kolay ve rahat bakımını destekliyor
- Üçüncü olarak, kullanıcı dostu etkileşimi desteklemek
- Slack botunun seçilme nedeni
- Slack botu bu ilkelerin tümünü karşılıyor
- Slack botu
Bolt adlı bir framework sunuyor. Bu framework yalnızca JavaScript, Java ve Python'u değil, dokümantasyonu da iyi biçimde destekliyor. Bundan yararlanarak teknik blog dağıtım otomasyon aracını geliştirmek kolaylaşıyor. Araç yerel ortamda çalıştırılsa bile Slack uygulamasında test edilebiliyor
- Slack, kullanıcıya görünen ekranların
Block Kit özelliğiyle tasarlanmasını destekliyor. Ekran akışı JSON ile tasarlanıp veriler fonksiyonlarla işlendiğinde sezgisel bir etkileşim kurulabiliyor
-
- Ekranları tasarlama
- Slack, kullanıcılarla etkileşim kurmak için mesaj ve modal desteği sunuyor
- Teknik bloga içerik dağıtma iş akışı modal ile uygulandı
- Slack botu kullanılarak teknik blog dağıtım süreci
- Blog gönderisi yayımlama: Hangi içeriğin nereye dağıtılacağını seçme
- Blog doğrulama: Meta veriler ve kapak görseli gibi frontend için gerekli öğelerin, dağıtılacak içerikte eksiksiz olup olmadığını kontrol etme
- GitLab issue/MR kontrolü: GitLab'da issue ve MR oluşturma aşaması. Eğer issue ve MR zaten varsa ilgili MR'a commit atılıyor
- Tamamlama mesajı: Dağıtım bittiğinde, Notion'daki içerik kaynak bağlantısını ve GitLab MR bağlantısını içeren bir mesaj bırakılıyor
-
- Botu tasarlama ve geliştirme
- Tek bir botla Notion, GitLab gibi farklı servislerin tümüyle etkileşim kurulması hedeflendi
- GitLab'da CI/CD pipeline oluşturup uygulamayı dağıtırken veya botta değişiklik yaparken bu yöntemin daha avantajlı olacağı değerlendirildi
- Bot geliştirmede TypeScript dili ve Slack'in desteklediği
Bolt framework'ü kullanıldı
- Klasör yapısı NestJS'ten ilham alınarak benimsendi
workflow.ts : ekranı ve veri akışını tanımlar; tüm iş akışlarının başlangıç noktasıdır
service.ts : iş mantığını tanımlar
model.ts : Slack veya üçüncü taraf API'lerle kullanılan veri tiplerini tanımlar
modal.ts : kullanıcıyla etkileşim kuran ekranları tanımlar
-
- Botun çalışma şekli
- Slack'te herhangi bir kanala komut girildiğinde bot çağrılır
- Bu sırada Notion'daki içerik başlığı ve içeriğin yayımlanacağı kanal seçilir, ardından
Submit düğmesine basıldığında gerekli meta verilerin girilip girilmediği otomatik olarak kontrol edilir
- Girilmesi gereken meta veriler arasında GitLab ID, yazar adı, md dosya adı, kapak görseli,
<!--truncate--> vb. bulunur; bunlardan biri bile eksikse içerik yayımlanamaz
- Gerekli meta verilerin tümü girilmişse
Continue düğmesine basılarak sonraki adıma geçilebilir
- Bu aşamada ilgili içeriğe ait issue ve MR GitLab'da otomatik olarak oluşturulur
- MR'a etiketler de otomatik olarak eklenir ve içeriği dağıtan pipeline da otomatik olarak çalıştırılır
- Pipeline çalışması tamamlandığında, içeriğin dağıtım durumu GitLab Review App üzerinden önceden kontrol edilebilir
- Kullanıma alma sonuçları
- Teknik yazarlar ve mühendislerin teknik bloga içerik dağıtmak için MR oluşturma sıklığı yaklaşık %30 arttı
- Tek tıklamayla 1 dakika içinde içerik dağıtımı mümkün oldu
- Pipeline başarısızlık oranı %5'in altına düştü
Henüz yorum yok.