Bir Geliştiricinin İş Rehberi

Bir Geliştiricinin İş Rehberi

İstanbul’un orta yerinde, Cihangir’de, haritası çıkartılmış olsa da hâlâ gözlerden uzak küçük morumsu bir ofis vardır, Artistanbul. Bu ofisin içerisinde benim beşincisi olduğum sekiz kişilik bir geliştirici ekip çalışır. Web dünyasının PHP soyundan gelen bu geliştiriciler Python’ın hâlâ web için biçilmiş kaftan olduğunu düşünürler.

Peki, bu geliştiriciler Python ile kod yazmak gibi hayaller kurmak dışında ne gibi işlerle uğraşırlar? Bu yazımda bu işlerden biri olan görev takibine değineceğim. Kulağa basit bir konu gibi gelse de iş yoğunluğu arttıkça görev takibi de aynı seviyede önem kazanıyor. Görev takibini sağlamak için post-it’ler dışında tabi ki birtakım araçlar kullanıyoruz. Görev açmak, atamak, listelemek gibi işlemler için bizim “takip” dediğimiz Redmine, kod depolama, inceleme, karşılaştırma gibi işlemler için Git (GitLab) ve gün içerisindeki iletişimimiz için Slack. Bizim için bu araçların genelde kullanım senaryosu şöyle adımlandırılabilir:

  1. Redmine’dan görev alınır ve yapılır.
  2. İncelenmesi için GitLab’da merge request açılır. İlgili görevin yorum kısmına merge request linki eklenir ve statüsü “inceleme bekliyor”a çekilir. Yani, çoğunlukla…
  3. Sabırla incelenmesi beklenir. Bazen bekleme süresi uzar ve bu noktada Slack devreye girerek ilgili iş arkadaşlarına hatırlatmamızda yardımcı olur.
  4. İnceleme bittikten sonra görev oluşturan kişiye Redmine üzerinden atanır lakin bu son işlem de zaman zaman başka işlere yoğunlaşılmasından ötürü aksayabilir. Bu noktada da Slack üzerinden gelen uyarılarla atama gerçekleştirilir.

 

Rutinin dostu GitLab CI

Çoğu işte olduğu gibi yapılan işin içerisinde bulunan küçük rutinler yapıldıkça önemlerini yitirirler. Önemsiz olarak görülen işlerin de hatırlanması gün geçtikçe zorlaşır, tabi yapması da bir o kadar keyifsiz bir hal alır. Artistanbul geliştirici ekibi için de yapılması gereken rutinler bu noktaya geldiğinde bize yardımcı olabilecek bir şeyler yapmaya karar verdik. Bunu yapma işi de benim payıma düştü.

İlk aklıma gelen şey rutin işleri bütün rutin işlerin olması gerektiği gibi otomatize etmek oldu. Bunu da GitLab üzerinde yapılan etkinlikleri bir şekilde kendi istediğim noktaya iletebilirsem yapabileceğimi düşündüm. Biraz araştırma sonucu bunu GitLab CI dosyası ile yapılabildiğini buldum. GitLab deponuza aşağıda örneğini gördüğünüz basit bir yml dosyası ekleyerek kendi dışarıdan ulaşılabilir, end-point’inize GitLab’ta yapılan etkinlikleri tanımlayan isteği iletebilirsiniz.

 

gitlab-ci.yml

    test:

        script:

            – curl -i -X POST MY_GREAT_END_POINT

 

 

Sırada etkinliğin hangi görev ile ilgili olduğunu anlamak var. Bizim için bunu anlamak uzun süredir yaptığımız commit mesajlarının sonuna görev numaralarını ekleme adetimiz sayesinde gayet kolay oldu. İlgili görev kaydı ve GitLab etkinliğinin detayları elimizde, geriye sadece Redmine üzerinde görevleri güncellemek kaldı. Bunu da Python-Redmine kütüphanesini kullanarak sağlayabiliriz. Nasıl yapılacağına dair detaylı bilgiyi kütüphane belgelendirmesinde bulabilirsiniz.

Güzel, hoş artık görev kayıtlarımız merge request’lere göre güncellenebiliyor. Lakin sırada bakılacak merge request’leri hatırlama-hatırlatma kısmı var. Aynı Redmine gibi Slack de kendi içinde bunun için seçenekler sunuyor. Dışarıdan gerçek zamanlı mesaj gönderebilmek gibi. Bunu da Slack Webhook kullanarak yapabiliriz. Kendi Slack uygulamanız için Slack Webhook URL oluşturarak uygulama içerisine istediğiniz gibi mesaj gönderebilirsiniz. Bu mesajın içeriği ve zamanı da tekrar GitLab CI özelliklerinden biri olan Scheduled Pipeline kullanarak ayarlanabilir. Scheduled Pipeline ile her gün belirlenen saatte istenilen end-point’e istek gönderilebilir. Python-Gitlab kütüphanesi ile de istenilen depolardaki merge request’lere ait bilgiler çekilebilir. Slack Webhook, GitLab CI ve Python-GitLab üçlüsü kullanarak geliştiriciyi günlük rutinlerinin birinden daha kurtarmış olduk. Hoşçakalın.

 

Açılış Görseli: 123RF

Furkan Kapukaya
Yorum Yok

Yorum Yaz

Yorum
İsim
E-Posta
Website