Çözüldü: GitLab Birleştirme İsteklerini Notion Veritabanına Senkronize Etme Rehberi
Modern yazılım geliştirme süreçlerinde, ekiplerin verimli çalışabilmesi için iş akışlarının sorunsuz ve şeffaf olması kritik öneme sahiptir. GitLab, kod yönetimi ve CI/CD süreçleri için güçlü bir platform sunarken, Notion ise esnek bir proje yönetimi ve bilgi depolama aracı olarak öne çıkar. Ancak, GitLab’deki birleştirme isteklerinin (Merge Requests – MR) durumunu ve detaylarını manuel olarak Notion’a taşımak, zaman alıcı ve hata yapmaya açık bir süreçtir. Bu makalede, GitLab birleştirme isteklerini otomatik olarak bir Notion veritabanına senkronize etmenin kapsamlı bir yolunu keşfedecek, böylece ekiplerin verimliliğini artırıp bilgi akışını merkezileştireceğiz.
Neden GitLab ve Notion Entegrasyonu Önemli?
GitLab ve Notion’ın entegrasyonu, geliştirme ve proje yönetimi ekipleri için birçok avantaj sunar. Bu entegrasyon, iş akışlarını daha düzenli, şeffaf ve verimli hale getirerek, ekiplerin daha odaklı çalışmasına olanak tanır.
Proje Yönetiminde Verimlilik Artışı
GitLab’deki birleştirme isteklerinin Notion’a senkronize edilmesi, proje yöneticilerinin ve ekip üyelerinin tüm görevleri, özellik geliştirmelerini ve hata düzeltmelerini tek bir merkezi yerden takip etmesini sağlar. Bu sayede, farklı platformlar arasında geçiş yapma ihtiyacı ortadan kalkar ve karar alma süreçleri hızlanır. Notion’ın esnek yapısı sayesinde, MR’ları projelere, sprintlere veya önceliklere göre kolayca filtreleyebilir ve organize edebilirsiniz. Bu, genel proje verimliliğini önemli ölçüde artırır.
Şeffaflık ve Takip Kolaylığı
Otomatik senkronizasyon sayesinde, birleştirme isteklerinin mevcut durumu (açık, birleştirildi, kapatıldı), atanan kişiler, ilgili projeler ve diğer önemli detaylar anında Notion veritabanına yansır. Bu durum, tüm paydaşların her an güncel bilgilere erişmesini sağlayarak proje şeffaflığını artırır. Geliştiriciler, test uzmanları ve ürün sahipleri, Notion üzerinden bir MR’ın yaşam döngüsünü kolayca takip edebilir, böylece iletişim eksiklikleri ve bilgi kopuklukları en aza indirilir.
Manuel İş Yükünü Azaltma
GitLab’den Notion’a manuel veri girişi, tekrarlayan ve hataya açık bir görevdir. Her yeni MR açıldığında veya durumu değiştiğinde bu bilgileri Notion’a elle girmek, geliştiricilerin ve proje yöneticilerinin değerli zamanını çalar. Otomatik senkronizasyon, bu manuel iş yükünü tamamen ortadan kaldırır. Ekipler, bu sayede daha stratejik görevlere odaklanabilir ve operasyonel verimliliklerini artırabilirler. Bu otomasyon, özellikle büyük ve dinamik ekipler için vazgeçilmez bir çözüm sunar.
Gerekli Araçlar ve Ön Hazırlıklar
Bu entegrasyonu başarılı bir şekilde kurmak için bazı temel araçlara ve ön bilgilere ihtiyacımız olacak. Doğru araçları seçmek ve gerekli izinleri ayarlamak, senkronizasyon sürecinin sorunsuz işlemesini sağlayacaktır.
GitLab API ve Webhook Bilgisi
GitLab, olay tabanlı bildirimler göndermek için webhook’ları kullanır. Bir birleştirme isteği açıldığında, güncellendiğinde veya kapatıldığında, GitLab belirli bir URL’ye HTTP POST isteği gönderir. Bu istek, MR ile ilgili tüm detayları içeren bir JSON yükü taşır. Entegrasyonumuzun temelini bu webhook’lar oluşturacaktır. GitLab API’si ise daha karmaşık senaryolar (örneğin, mevcut tüm MR’ları çekme) için kullanılabilir, ancak bu makalede daha çok webhook’lara odaklanacağız.
Notion API Entegrasyonları
Notion, veritabanlarına programatik olarak erişim sağlamak için güçlü bir API sunar. Bu API sayesinde, veritabanına yeni öğeler ekleyebilir, mevcut öğeleri güncelleyebilir veya silebiliriz. Entegrasyonumuz için Notion’da bir veritabanı oluşturacak ve bu veritabanına dışarıdan erişim sağlamak üzere bir “iç entegrasyon” oluşturup API anahtarı alacağız. Bu anahtar, otomasyon platformumuzun Notion veritabanımızla güvenli bir şekilde iletişim kurmasını sağlayacaktır.
Otomasyon Platformu Seçimi
GitLab webhook’larından gelen veriyi işleyip Notion API’sine göndermek için bir otomasyon platformuna ihtiyacımız var. Popüler seçenekler şunlardır:
- Make.com (eski adıyla Integromat): Görsel bir arayüze sahip, karmaşık iş akışları oluşturmak için güçlü bir platformdur.
- Zapier: Daha basit entegrasyonlar için ideal, kullanımı kolay bir platformdur.
- n8n: Açık kaynaklı ve kendi sunucunuzda barındırılabilen, daha fazla esneklik sunan bir alternatiftir.
Bu makalede, Make.com’u örnek olarak kullanarak süreci anlatacağız, ancak prensipler diğer platformlar için de benzerdir.
API Anahtarları ve İzinlerin Ayarlanması
Hem GitLab hem de Notion için gerekli API anahtarlarını ve izinleri doğru bir şekilde ayarlamak, entegrasyonun güvenliği ve işlevselliği için hayati öneme sahiptir.
- GitLab: Webhook oluştururken bir “Secret Token” belirleyebilirsiniz. Bu token, gelen isteğin gerçekten GitLab’den geldiğini doğrulamak için kullanılır.
- Notion: Oluşturduğunuz iç entegrasyon için bir “API Anahtarı” alacaksınız. Bu anahtarı kimseyle paylaşmamalı ve otomasyon platformunuzda güvenli bir şekilde saklamalısınız. Ayrıca, entegrasyonunuza Notion veritabanına erişim izni vermeniz gerekecektir.
Notion Veritabanı Yapılandırması
GitLab’den gelen birleştirme isteği verilerini depolamak için Notion’da uygun bir veritabanı yapısı oluşturmak ilk adımdır. Bu yapı, senkronize edilecek bilgileri düzenli bir şekilde tutmamızı sağlayacaktır.
Yeni Bir Veritabanı Oluşturma
Notion çalışma alanınızda yeni bir sayfa oluşturun ve bunu bir “Table” (Tablo) veritabanına dönüştürün. Bu veritabanına “GitLab Merge Requests” veya “MR Takip” gibi açıklayıcı bir isim verin. Bu veritabanı, tüm birleştirme isteklerinizin merkezi deposu olacaktır.
Gerekli Özelliklerin Tanımlanması
Veritabanınızda, GitLab’den gelecek verileri karşılayacak sütunlar (özellikler) tanımlamanız gerekir. İşte önerilen özellikler ve türleri:
| Özellik Adı | Özellik Türü | Açıklama |
|---|---|---|
| Başlık | Title | Birleştirme isteğinin başlığı. |
| MR ID | Number | GitLab’deki birleştirme isteği ID’si (benzersiz kimlik). |
| Durum | Select | MR’ın mevcut durumu (Açık, Birleştirildi, Kapatıldı). |
| URL | URL | GitLab’deki birleştirme isteğinin doğrudan bağlantısı. |
| Yazar | Text | Birleştirme isteğini oluşturan kişinin adı. |
| Atanan | People | MR’ın atandığı Notion kullanıcısı (isteğe bağlı, eşleme gerektirir). |
| Proje | Text veya Relation | İlgili GitLab projesinin adı. |
| Oluşturulma Tarihi | Date | MR’ın oluşturulduğu tarih. |
API Entegrasyonu için Bağlantı Kurulumu
Notion veritabanınıza dışarıdan erişim sağlamak için bir “iç entegrasyon” oluşturmanız gerekir:
- Notion’da sol kenar çubuğundaki “Settings & members” (Ayarlar ve Üyeler) kısmına gidin.
- “Integrations” (Entegrasyonlar) sekmesini seçin.
- “Develop your own integrations” (Kendi entegrasyonlarınızı geliştirin) seçeneğine tıklayın.
- “New integration” (Yeni entegrasyon) düğmesine tıklayın.
- Entegrasyonunuza bir isim verin (örn: “GitLab MR Sync”).
- Gerekli yetkileri ayarlayın (sayfaları okuma, güncelleme, ekleme yetkisi).
- Oluşturulan “Internal Integration Token” (İç Entegrasyon Anahtarı) değerini kopyalayın. Bu anahtar, otomasyon platformunuzda kullanılacaktır.
- Son olarak, oluşturduğunuz veritabanı sayfasının sağ üst köşesindeki “Share” (Paylaş) düğmesine tıklayın ve yeni oluşturduğunuz entegrasyonu ekleyin. Bu, entegrasyonunuzun veritabanına erişmesine izin verecektir.
GitLab Webhook Kurulumu
GitLab’deki olayları Notion’a bildirmek için bir webhook kurmamız gerekiyor. Bu webhook, bir birleştirme isteğiyle ilgili her değişiklikte otomasyon platformumuza veri gönderecektir.
Webhook Nedir ve Nasıl Çalışır?
Webhook, bir olay gerçekleştiğinde (örneğin, bir MR açıldığında) önceden tanımlanmış bir URL’ye otomatik olarak HTTP POST isteği gönderen bir mekanizmadır. Bu istek, olayın detaylarını içeren bir JSON yükü taşır. Otomasyon platformumuz (Make.com gibi) bu isteği dinleyecek ve gelen veriyi işleyecektir.
GitLab Projesinde Webhook Oluşturma Adımları
GitLab projenizde webhook oluşturmak için aşağıdaki adımları izleyin:
- GitLab projenize gidin.
- Sol kenar çubuğundan “Settings” (Ayarlar) ve ardından “Webhooks” seçeneğine tıklayın.
- “Add new webhook” (Yeni webhook ekle) düğmesine tıklayın.
- URL: Buraya otomasyon platformunuzdan alacağınız webhook URL’sini yapıştırın (Make.com’da bir “Custom Webhook” modülü oluşturduğunuzda bu URL size verilecektir).
- Secret Token (Gizli Anahtar): İsteğe bağlı ancak şiddetle tavsiye edilen bir güvenlik önlemidir. Buraya güçlü ve benzersiz bir anahtar girin. Bu anahtarı otomasyon platformunuzda da kullanacaksınız.
- Trigger (Tetikleyici): “Merge request events” (Birleştirme isteği olayları) seçeneğini işaretleyin. Diğer olayları (örneğin, push, issue) işaretlemek isterseniz, bu da mümkündür ancak makalenin kapsamı dışındadır.
- “Enable SSL verification” (SSL doğrulamayı etkinleştir) seçeneğinin işaretli olduğundan emin olun.
- “Add webhook” (Webhook ekle) düğmesine tıklayın.
Webhook’unuzu test etmek için “Test” düğmesine tıklayarak “Merge request event” gönderebilirsiniz.
Tetikleyici Olayların Seçimi
Webhook’u kurarken “Merge request events” seçeneğini işaretlemek, birleştirme istekleriyle ilgili tüm olayların (oluşturma, güncelleme, birleştirme, kapatma vb.) otomasyon platformunuza gönderilmesini sağlar. Bu, Notion veritabanınızdaki MR durumlarının her zaman güncel kalması için kritik öneme sahiptir.
Gizli Anahtar (Secret Token) Kullanımı
“Secret Token”, GitLab’den gelen webhook isteğinin gerçekten yetkili bir kaynaktan geldiğini doğrulamak için kullanılır. Otomasyon platformunuzda bu token’ı doğrulayarak, kötü niyetli veya sahte isteklerin işlenmesini engelleyebilirsiniz. Bu, entegrasyonunuzun güvenliğini artıran önemli bir adımdır.
Otomasyon Platformu ile Entegrasyon (Örnek: Make.com)
Şimdi GitLab’den gelen veriyi alıp Notion’a gönderecek otomasyon senaryosunu Make.com üzerinde nasıl kuracağımıza bakalım.
Yeni Bir Senaryo/Workflow Oluşturma
Make.com hesabınıza giriş yapın ve “Create a new scenario” (Yeni senaryo oluştur) düğmesine tıklayın. Bu, iş akışınızı tasarlayacağınız görsel bir editör açacaktır.
Webhook Tetikleyicisini Yapılandırma
- Senaryonuza ilk modül olarak “Webhooks” uygulamasını ekleyin ve “Custom webhook” (Özel webhook) modülünü seçin.
- “Create a webhook” (Webhook oluştur) düğmesine tıklayın, webhook’unuza bir isim verin ve kaydedin. Make.com size bir URL verecektir. Bu URL’yi GitLab webhook kurulumunda kullandığınızdan emin olun.
- Make.com, gelen verinin yapısını otomatik olarak algılayabilmek için bir test verisi bekleyecektir. Bu aşamada GitLab’deki webhook’unuzdan bir “Test” Merge Request event’i gönderin. Make.com, gelen JSON yükünü başarıyla algıladığında yeşil bir onay işareti gösterecektir.
- Eğer GitLab webhook’unda bir “Secret Token” belirlediyseniz, Make.com webhook modülünüzün ayarlarında “Specify IP restrictions and/or secret” (IP kısıtlamaları ve/veya gizli anahtar belirt) seçeneğini işaretleyerek bu token’ı girebilirsiniz. Bu, gelen isteğin token’ını doğrulayacaktır.
GitLab’den gelen örnek bir JSON yükü şu şekilde görünebilir (kısaltılmış):
{
"object_kind": "merge_request",
"event_type": "merge_request",
"user": {
"name": "Kullanıcı Adı",
"username": "kullanici_adi"
},
"project": {
"name": "Proje Adı",
"web_url": "https://gitlab.com/..."
},
"object_attributes": {
"id": 12345,
"iid": 67,
"title": "Yeni Özellik Geliştirme",
"state": "opened",
"url": "https://gitlab.com/proje/repo/-/merge_requests/67",
"created_at": "2023-10-27T10:00:00Z",
"updated_at": "2023-10-27T10:00:00Z",
"action": "open",
"source_branch": "feature/new-feature",
"target_branch": "main",
"last_commit": {
"author": {
"name": "Kullanıcı Adı"
}
}
},
"assignees": [
{
"name": "Atanan Kullanıcı"
}
]
}
GitLab Verilerini Ayrıştırma ve Notion'a Eşleme
Webhook modülünden sonra, bir "Notion" modülü ekleyeceğiz. Ancak öncesinde, mevcut bir MR'ın güncellenip güncellenmediğini kontrol etmemiz gerekiyor.
- Webhook modülünden sonra bir "Notion" modülü ekleyin ve "Search for objects" (Nesneleri ara) eylemini seçin.
- Bağlantı olarak Notion entegrasyonunuzu seçin.
- Veritabanı ID'si olarak GitLab MR'larınız için oluşturduğunuz Notion veritabanının ID'sini girin. (Veritabanı URL'sinde
notion.so/kısmında bulabilirsiniz.)/ ?v=... - Filtre olarak "MR ID" özelliğini, gelen webhook verisindeki
object_attributes.iid(MR'ın proje içi benzersiz ID'si) ile eşleştirin.
Bu adım, Notion'da bu MR ID'sine sahip bir kayıt olup olmadığını kontrol edecektir.
Mevcut MR'ları Güncelleme Mantığı
Arama modülünden sonra bir "Router" (Yönlendirici) ekleyin. Bu, senaryonuzu iki kola ayıracaktır:
- Kayıt Bulundu (Güncelle): Router'dan çıkan ilk kola bir "Filter" (Filtre) ekleyin. Koşul olarak, "Notion Search for objects" modülünün döndürdüğü "Total number of bundles" (Toplam paket sayısı) değerinin
> 0olmasını belirtin. Bu kolun altına bir "Notion" modülü ekleyin ve "Update a database item" (Veritabanı öğesini güncelle) eylemini seçin. Güncellenecek öğe ID'si olarak arama modülünden gelenPage ID'yi kullanın ve ilgili Notion özelliklerini GitLab webhook verileriyle eşleştirin (örneğin,object_attributes.title-> Başlık,object_attributes.state-> Durum,object_attributes.url-> URL). - Kayıt Bulunmadı (Oluştur): Router'dan çıkan ikinci kola bir