GitLab entegrasyonu

OAuth ile GitLab’a bağlan; farklı gruplardan projeleri tek panoya ekle, dal, commit, MR ve issue’ları görevlere bağla.

Bir panoyu GitLab’a bağladığında dal, commit, birleştirme isteği (MR) ve issue olayları webhook ile panoya gelir ve ilgili görevlerde görünür. Eşleşme görev anahtarıyla kurulur (ör. CJ-244). Pano tek bir projeye bağlı kalmaz: farklı GitLab gruplarından istediğin projeleri aynı panoya ekleyebilirsin; mobil istemci, arka uç ve altyapı reposu ayrı gruplarda dursa da iş tek panoda izlenir.

Şu an desteklenen tek sağlayıcı GitLab’dır (gitlab.com ve self-managed GitLab kurulumları). GitHub ve Bitbucket yol haritasındadır.

Önce: çalışma alanı ayarı

Bağlantı tek bir GitLab OAuth uygulamasına dayanır ve onu yalnız çalışma alanı yöneticisi kurar: Ayarlar > Entegrasyonlar. GitLab’da bir uygulama açılır; Redirect URI ekranda yazan adrestir ve bütün panolar için ortaktır, kapsam olarak yalnız api işaretlenir, uygulama "Confidential" olur. Application ID ve Secret bu ekrana girilir. Kendi GitLab sunucunu kullanıyorsan GitLab URL alanına onun adresini yaz. Bu yapılandırmayı silmek bütün panoların GitLab bağlantısını etkiler.

Panoyu bağlamak ve proje eklemek

  1. 1Pano Ayarları > Entegrasyonlar’da "GitLab’a Bağlan" ile OAuth yetkilendirmesini tamamla. Bu adım ve bu ekrandaki GitLab ayarları panoda "Üye ve rol yönetimi" yetkisi ister.
  2. 2"Proje ekle" ile üyesi olduğun bütün projelerde ad ya da yolla ara, birden çoğunu işaretle ve "Seçilenleri ekle" ile tek seferde ekle. Projenin hangi grupta olduğu fark etmez.
  3. 3"Grubun tümünü ekle" bir grubun alt gruplar dahil bütün projelerini ekler. Zaten ekli olanlar tekrarlanmaz; başka gruplardan eklemeye devam edebilirsin.
  4. 4Bağlı projeler listesinde her satırda "Webhook ayarları" ve "Kaldır" vardır; varsayılan olmayan satırda "Varsayılan yap", varsayılan projede "Varsayılan" rozeti ve "Varsayılanı kaldır" durur. Satır, o projeden son webhook olayının ne zaman geldiğini ("Son webhook: 2 saat önce") ya da hiç gelmediğini ("Webhook olayı gelmedi") gösterir. Kaldırmak GitLab’da hiçbir şeyi silmez, yalnız o projeden gelen olaylar bu panoya ulaşmaz olur. "Yenile" proje adlarını tazeler ve en son eklenen gruba sonradan katılan projeleri de listeye alır.
  5. 5Her proje için webhook’u GitLab’da tanımla (bir sonraki bölüm).

Tek bir repoya bağlı eski panolar olduğu gibi çalışır; ikinci bir proje eklediğin an o repo da listenin ilk elemanı olur. Kimsenin yeniden bağlanması gerekmez.

app.themyway.app/boards/platform/settings/integrations
Üç ayrı gruptan projeye bağlı bir pano: proje listesi ve webhook bilgileriÜç ayrı gruptan projeye bağlı bir pano: proje listesi ve webhook bilgileri
Üç ayrı gruptan projeye bağlı bir pano: proje listesi ve webhook bilgileri

Webhook

MyWay GitLab’da webhook oluşturmaz; GitLab’ın ücretsiz sürümünde grup düzeyinde webhook olmadığı için her proje için ayrı tanımlanır. "Webhook Yapılandırması" bölümü webhook URL’sini ve panoya özel secret token’ı gösterir; bu bölümü yalnız çalışma alanı yöneticisi görür. Proje satırındaki "Webhook ayarları" bağlantısı seni o projenin GitLab webhook sayfasına götürür.

  • URL’yi ve secret’ı GitLab’daki ilgili alanlara yapıştır
  • "Trigger" altında Push events, Issues events, Merge request events ve Comments (Note events) işaretli olsun: işaretlenmeyen olayın karşılığı o projeden MyWay’e hiç ulaşmaz
  • Bir proje birden çok panoya bağlıysa o proje için GitLab’da TEK webhook yeter; her olay görevin bulunduğu panonun kendi ayarıyla işlenir. Görev, projeyi bağlamamış bir panodaysa olay uygulanmaz ve sebebi Denetim Kaydı’na yazılır. Commit ya da dal adında hiçbir panoda olmayan bir görev anahtarı geçerse (yazım hatası, silinmiş görev) olay görevsiz kaydedilir, webhook hata vermez
  • Webhook tanımlı olmayan projede listeler yalnız MyWay’den yaptığın işlemleri gösterir; commit ve MR panelleri, otomatik statü geçişi ve GitLab yorumları gelmez. Ayarlarda o projenin satırında "Webhook olayı gelmedi" yazar, dal açarken de commit ve MR’ların MyWay’e yansımayacağı söylenir (dal yine açılır). Dal panelindeki yenile düğmesi GitLab’a sorup silinmiş dalları eler

Kendi GitLab hesabın

MyWay’den açılan dal, MR, issue ve yorumlar GitLab’da senin adınla görünür. Bunun için her kullanıcı Ayarlar > Bağlı hesaplar’dan kendi GitLab hesabını bir kez bağlar; ek kurulum gerekmez.

  • Dal ve MR açmak kendi hesabını ister; hesabın bağlı değilse işlem başlamaz ve ekranda bağlantı yolu gösterilir, ortak hesaba sessizce düşülmez. Hesabının o projeye erişimi yoksa GitLab’ın ham hatası yerine nedeni kendi dilinde gösterilir: proje üyeliğini kontrol et ya da doğru hesabı bağla
  • Görev açınca issue oluşturma, alan senkronu ve yorum aktarımı hesabın bağlıysa senin adına, değilse panonun ortak bağlantısıyla yapılır; görev açmak GitLab hesabı yüzünden engellenmez
  • Hesabını bağlamamış biri GitLab issue’suna bağlı bir göreve yorum yazınca, gönderilmeden önce "Yorum GitLab’da başka bir adla görünecek" uyarısı çıkar: yorum GitLab’da entegrasyonu kuran kullanıcının adıyla görünür. "Yine de gönder" denirse GitLab’daki yorumun başına yazanın adı eklenir (örneğin "Ayşe Yılmaz (MyWay üzerinden):")
  • Webhook ve gelen senkron panonun bağlantısında kalır
  • "Bağlantıyı kaldır" erişim anahtarını GitLab’da iptal edip siler; GitLab yetkisi düşerse "yeniden bağlan" uyarısı çıkar

Görev nasıl eşleşir

  • Dal: adında görev anahtarı geçmelidir. Dal listesi ve dal ile commit olaylarının statü otomasyonu yalnız dal adına bakar
  • Commit: dal adında ya da commit mesajında anahtar geçen push, Commit’ler panelinde görünür
  • Merge request: kaynak dal adında ya da MR başlığında anahtar geçmelidir
  • Issue: MyWay’den açılan ya da içe aktarılan issue göreve kalıcı bağlanır; GitLab’da açılan bir issue’nun başlığında ya da açıklamasında aynı panonun görev anahtarı geçiyorsa o göreve bağlanır

Görev içinde ne görürsün

GitLab kutusu görev ekranında diğer bölümler gibi açılıp kapanır ve sıralanır (Pano Ayarları > Görev Ekranı). Pano birden çok projeye bağlıyken her satır hangi projeden geldiğini rozetle söyler; aynı adlı dallar farklı projelerde ayrı satırdır.

  • Branch’ler: göreve bağlı dallar. "Checkout" düğmesi git fetch ve git checkout komutunu panoya kopyalar ve "Checkout" olayının otomasyonunu çalıştırır (bunun için "Görev taşıma" yetkisi gerekir)
  • Commit’ler: kısa SHA, mesaj, yazar, dal ve proje; aynı commit birden çok kez gelse de tek satır görünür
  • Merge Request’ler: durum (Açık, Birleşti, Kapatıldı, Kilitli; taslaksa "Taslak"), !numara, proje, kaynak → hedef dal, yazar, son güncelleme ve açılıp kapanan GitLab yorumları
  • Pipeline: son 10 çalışmanın genel durumu, numarası, dalı, SHA’sı ve zamanı. Yalnız tek projeye bağlı panolarda ve görevin dalı biliniyorsa dolar
  • Bağlı Issue: göreve bağlı her issue, hangi projede olduğuyla
app.themyway.app/browse/CJ-244
Görev ekranında GitLab: dal, commit’ler ve MRGörev ekranında GitLab: dal, commit’ler ve MR
Görev ekranında GitLab: dal, commit’ler ve MR

Dal ve MR açmak

Görev ekranında "Branch oluştur" dalı açar. Ad varsayılan olarak issue/{görev anahtarı} gelir ve sonuna açıklama eklenebilir; toplam 50 karakterle sınırlıdır, sayaç ve uyarı ekranda durur. Ad görev anahtarını içermek zorundadır, yoksa dal göreve bağlanmaz. Türkçe harfler ve desteklenmeyen karakterler yazıldığı anda geçerli karşılığına çevrilir. Base branch alanı görevin projesindeki dalları listeler ve projenin varsayılan dalı hazır gelir; listeden seçebilir ya da dal adını elle yazabilirsin. Boş bırakılırsa projenin varsayılan dalı kullanılır. MR dal satırındaki "MR oluştur" ile açılır ve dalın açıldığı projeye kilitlidir; dal açılınca MR penceresi kendiliğinden açılmaz, çünkü dalda henüz commit yoktur.

  • MR başlığı en fazla 255 karakterdir
  • MyWay’den açılan dal ve MR webhook beklemeden listede görünür ve statü otomasyonunu hemen çalıştırır; hedef durumun WIP limiti doluysa görev taşınmaz ve bu söylenir

Görevin GitLab projesi

Pano birden çok projeye bağlıyken görevin hangi projeye ait olduğu görev ekranındaki GitLab Projesi alanında yazar. Alan, bağlantı kurulunca Özel Alanlar listesinde sıradan bir alan gibi belirir: alan grubuna atanır, göster/zorunlu ayarlanır, filtrede ve liste kolonunda çıkar. Dolu olduğunda dal ya da MR penceresi projeyi bir daha sormaz. Tek projeli panoda o proje yeni görevlerde seçili gelir. Birden çok projeli panoda varsayılan proje seçili gelir; varsayılan kaldırıldıysa alan boş gelir ve dal açan kişi projeyi kendisi seçer. "Alana göre GitLab projesi" eşlemesi varsa proje seçilen alan değerinden dolar (aşağıda). Bağlantısı olmayan panoda alan hiç görünmez.

  • Alan silinemez, çünkü seçenekleri entegrasyondan gelir; elle düzenlenmez, projeler Pano Ayarları > Entegrasyonlar’dan yönetilir. Kullanmayan pano alanı kapatabilir
  • Görevde değiştirmek için olağan görev düzenleme yetkisi yeter; "Sabit alanları düzenleme" yetkisi aranmaz
  • Görevde seçili proje panodan çıkarılmışsa dal ya da MR işlemi başlamaz ve sebebi söylenir; sessizce başka bir projede dal açmaktansa sormak doğrudur
  • İçe aktarmada GitLab Projesi sütunu atlanır (değer bir proje kimliğidir, ada göre eşlenemez) ve bu raporda bildirilir; eşleme varsa proje eşlenen alanın değerinden dolar
  • Bağlantı kesilince alan kapanır, girilmiş değerler yerinde kalır; proje yeniden eklendiğinde alan kendiliğinden açılmaz, ayarlardan açılır

Alana göre GitLab projesi

Proje çoğu zaman görevin başka bir alanından bellidir: Platform = Mobil ise iş mobil reposundadır. Pano Ayarları > Entegrasyonlar’daki "Alana göre GitLab projesi" bölümünde bir Seçim alanı seçer, her seçeneğin karşısında bir GitLab projesi seçersin. Görev açılırken ve alan değiştirildiğinde görevin GitLab Projesi buna göre dolar; otomatik açılan issue da görevin projesinde açılır. Bölüm, panoya en az bir proje bağlıyken görünür. Uçtan uca kurulum için: Çok repolu ekip.

  • Panoda tek bir alan eşlenir; tekli Seçim tipinde ve açık olmalıdır, GitLab Projesi alanının kendisi seçilemez. Birden çok seçenek aynı projeye gidebilir
  • Karşısında "Dokunma" duran seçenek, boş alan ya da panodan çıkarılmış proje görevin projesini değiştirmez
  • Aynı düzenlemede projeyi elle seçen kişinin seçimi kazanır. Alan sonradan değiştirilirse proje yeniden eşlemeden gelir; daha önce elle seçilmiş proje de değişir
  • Eşleme toplu düzenlemede ve Excel içe aktarmada da işler; var olan görevlere geriye dönük uygulanmaz, açılmış issue yerinde kalır
  • Bölümü kaydetmek "Üye ve rol yönetimi" yetkisi ister; "Eşlemeyi kaldır" eşlemeyi siler

Yeni görevde GitLab issue

"Yeni görevleri otomatik GitLab issue olarak oluştur" açıksa panoda açılan her görev GitLab’da bir issue açar ve ona bağlanır. Yeni bağlantıda bu anahtar açık gelir. Birden çok proje bağlıyken issue’nun nerede açılacağını "Yeni görevde issue" seçeneği belirler:

  • "Sor": yeni görev ekranında "GitLab issue açılacak projeler" listesi çıkar; varsayılan proje varsa işaretli gelir, eşlenmiş alanda bir seçenek seçilince işaret o projeye geçer. İstediğin projeleri işaretlersin ("Hepsini seç", "Temizle"); hiçbirini işaretlemezsen bu görev için issue açılmaz
  • "Sorma, varsayılan projede aç": liste çıkmaz; issue görevin GitLab projesinde (eşlemeden ya da elle seçilmiş), görevde proje yoksa varsayılan projede açılır. Bu mod varsayılan proje ister
  • "Sorma, tüm projelerde aç": liste çıkmaz, issue bağlı her projede açılır
  • Varsayılan proje listedeki "Varsayılan yap" ile seçilir, "Varsayılanı kaldır" ile kaldırılır; varsayılan proje yalnız otomatik issue kapalıyken ya da "Sor" ve "Sorma, tüm projelerde aç" modlarında kaldırılabilir, "Sorma, varsayılan projede aç" seçiliyken kaldırılamaz. Varsayılan proje panodan çıkarılırsa kalan ilk proje varsayılan olur; varsayılanı bilerek kaldırdıysan proje eklemek ya da çıkarmak onu geri getirmez

İki yönlü senkron

  • MyWay’den GitLab’a: başlık, açıklama, etiketler (adlarıyla, her seferinde tam liste), son tarih, atanan ve yorumlar; görev birden çok issue’ya bağlıysa hepsine gider. Görev "Tamamlandı" kategorisindeki bir duruma girince issue kapanır, oradan çıkınca yeniden açılır
  • GitLab’dan MyWay’e: başlık, açıklama, etiketler, son tarih, atanan ve issue yorumları. Etiket ve atanan yalnız GitLab o alanın değiştiğini bildirdiğinde yazılır; panoda aynı adla bulunmayan etiket aktarılmaz
  • GitLab’da issue’nun kapanması ya da yeniden açılması görevin durumunu kendiliğinden değiştirmez; bunun için "Issue kapatıldı" ve "Issue yeniden açıldı" olaylarını bir statüye eşlersin
  • Aynı alan iki tarafta değişirse son yazan kazanır. MR yorumları göreve aktarılmaz, MR kartında okunur

Kullanıcı eşleşmesi

Atanan, MyWay kullanıcısı GitLab kullanıcısıyla eşleştirilerek taşınır: önce GitLab kullanıcı adı, sonra e-postanın @ öncesi kısmı, en son e-posta adresi denenir. Atananlardan biri GitLab’da bulunamazsa atanan alanı GitLab’a hiç gönderilmez ve mevcut atama korunur; eksik bir liste göndermek doğru atamayı silerdi. GitLab’dan gelen yönde eşleşmeyen kişi atlanır.

Olay → statü otomasyonu

"Event → Status Otomasyonu" bölümünde on GitLab olayının her birini bir iş akışı statüsüne eşleyebilirsin; boş bırakılan olay görevi taşımaz. Otomasyon sistem adına çalışır: geçiş kurallarını ve rol şartlarını aşar (izin, eşlemeyi yapan yöneticinin kararıdır), WIP limitine uyar. "Yalnız ileri" olaylar görevi iş akışında yalnız daha sonraki bir statüye taşır; taşıyamadığı durumlar (geriye taşıma, WIP limiti, hedef statü yok) Denetim Kaydı’na yazılır.

OlayNe zamanYön
Branch oluşturulduAnahtarlı yeni dal GitLab’a push edildiğinde ya da MyWay’den açıldığındaYalnız ileri
Checkout (çalışmaya başla)Yalnız görev ekranındaki Checkout düğmesiyle; yerel git checkout olay göndermezYalnız ileri
Commit push’landıAnahtarlı dala push yapıldığındaYalnız ileri
MR açıldıMR açıldığında ya da yeniden açıldığında, MyWay’den açılan dahilYalnız ileri
MR merge edildiMR birleştiğindeYalnız ileri
MR kapatıldı (merge’siz)MR birleşmeden kapandığındaGeri de taşır
Issue açıldıBağlı issue açıldığındaYalnız ileri
Issue kapatıldıBağlı issue kapandığındaGeri de taşır
Issue yeniden açıldıBağlı issue yeniden açıldığındaGeri de taşır
"Closes/Fixes CJ-1" ile kapatıldıAşağıdaki kapatma ifadesiyle anılan MR birleştiğindeYalnız ileri

MR ile kapatma: "Closes CJ-123"

Bir birleştirme isteğinin başlığında ya da açıklamasında bir kapatma kelimesi ve görev anahtarı geçiyorsa ("Closes CJ-123", "Fixes CJ-123, CJ-124", "Resolves: CJ-123"), MR birleştiğinde o görevler kapatma olayına eşlediğin statüye taşınır. Tanınan kelimeler: close, closes, closed, fix, fixes, fixed, resolve, resolves, resolved. Anahtarın metinde yalnız geçmesi yetmez, kapatma niyeti ayrıca aranır; MR açıkken hiçbir şey olmaz. Bu olay "MR merge edildi"den ayrıdır, ikisini farklı statülere eşleyebilirsin (ör. MR birleşti → İnceleme, kapatma ifadesi → Bitti). Commit mesajındaki "Closes" ifadesi bu olayı tetiklemez.

Issue içe aktarma

"Issue’ları İçe Aktar" bölümü seçtiğin projedeki GitLab issue’larını görev olarak getirir: açık issue’lar, kapalı issue’lar ya da tümü. Bölümü panoda "Üye ve rol yönetimi" yetkisi olanlar görür.

  • Başlık, açıklama, son tarih ve eşleşen atananlar aktarılır; sistem notu olmayan yorumlar görev yorumu olarak gelir, MyWay’de karşılığı olmayan yazarın adı yorumun başına yazılır
  • Kapalı issue panonun "Tamamlandı" kategorisindeki ilk statüde açılır; görevi açan kişi olarak içe aktaran yazılır
  • Daha önce aktarılmış issue yeniden oluşturulmaz; başlığında ya da açıklamasında mevcut bir görevin anahtarı geçen issue yeni görev açmaz, o göreve bağlanır
  • İçe aktarılan görevler için GitLab’da yeni issue açılmaz; sonrasında webhook üzerinden senkron kalırlar
  • Tek seferde en fazla 1000 issue okunur; sonuç kaç issue’nun aktarıldığını, bağlandığını, atlandığını ve kaç yorumun taşındığını söyler
  • "Açıklama bir görev şablonuna uymalı" ve zorunlu sabit alanlar içe aktarılan issue’larda aranmaz. Panoda zorunlu bir özel alan varsa o issue’lar atlanır ve sonuçta atlanmış sayılır

Denetim kaydı

GitLab kaynaklı her iş panonun Denetim Kaydı’na gitlab-bot hesabıyla yazılır: dalın açılması ve silinmesi, MR’ın açılması, birleşmesi ve kapanması, issue’nun bağlanması ve MyWay’den açılması, GitLab’dan gelen değişikliğin göreve uygulanması (hangi alanlarla), otomasyonun görevi taşıması ya da neden taşımadığı, webhook hataları (secret uyuşmadı, görev başka panoda). Bağlanma, bağlantıyı kesme, proje ekleme ve kaldırma işlemi yapan kişi adına yazılır. GitLab kaynaklı durum değişikliği bildirimlerinde yapan olarak "Sistem" görünür.

Neler taşınmaz, sınırlar

  • Pano kopyalamak GitLab bağlantısını ve GitLab projesi değerlerini taşımaz; yeni panoyu ayrıca bağlarsın
  • Bağlantıyı kesmek GitLab tarafında hiçbir şeyi silmez
  • Bir panonun tek GitLab bağlantısı, çalışma alanının tek GitLab sunucusu olur
  • Pipeline paneli yalnız tek projeye bağlı panolarda çalışır
  • Bir görev için en fazla 50 projede issue açılır; dal adı 50, MR başlığı 255 karakterle sınırlıdır
  • Webhook gövdesi en fazla 1 MB olabilir. GitLab olayları silinmez: görevdeki commit ve merge request geçmişi kalıcıdır (v1.64.0’dan önce 90 günden eski olayların içeriği temizleniyordu)

Erişim anahtarları sunucuda AES-256-GCM ile şifreli saklanır ve arayüze ya da API yanıtlarına çıkmaz. Gelen webhook, panoya özel secret token ile doğrulanır; token uyuşmazsa istek reddedilir. Anahtarlar kendi sunucunda kalır, üçüncü tarafa gitmez.