ScriptRunner ile Jira’yı Özelleştirmek — Bölüm 1

Esra Karakaş
Kod Gemisi
Published in
3 min readNov 22, 2021

ScriptRunner Adaptavist tarafından geliştirilen, sadece Jira ile sınırlı değil; Confluence, Bitbucket gibi diğer Atlassian ürünleri ile de çalışabilen bir eklentidir. Jira kullanan firmalar için ScriptRunner’ın çoğunlukla vazgeçilmez bir noktada olduğunu söyleyebiliriz. Diğer Atlassian ürünlerini de özelleştirmek için birçok özellik sunuyor olmasıyla birlikte ben bu yazımda sizlere Jira Server / Jira Data Center üzerinde ScriptRunner kullanarak neler yapabilirizden bahsetmek istiyorum.

Scriptrunner for Jira enables you to work with scripts for customized solutions on Jira.

ScriptRunner ile birlikte Jira’nın temel hali üzerine geliştirmeler yaparak ürün içerisinde ihtiyaca göre gerekli otomasyonları, farklı araçlarla entegrasyonları sağlayabiliriz. Temelde ihtiyaçlarımızı karşılamak için bize script geliştirip, çalıştırabileceğimiz birkaç farklı bileşen sağlıyor.

Script Listeners

Listener özelliği temelde bize sistemdeki belirli event’leri dinleyip bu event’ler için gerekli işlemleri yapmamızı sağlıyor. Yapabileceğimiz işlemler için de varsayılan olarak bize bazı özellikler sunuyor. Örneğin kayıt üzerinde bir alan dolduğunda kaydın statüsünü değiştirmek, kayda bir subtask oluşturmak veya custom bir e-posta göndermek istediğimizde bunun için script geliştirmemize gerek kalmadan varsayılan olarak gelen listener bileşenlerinden faydalanabiliriz.

Varsayılan olarak gelen özelliklerin yeterli olmadığı noktada ise custom listener özelliğinden faydalanıp kendi geliştirdiğimiz script ile aksiyon alabiliriz. Örneğin Jira’da bir proje oluştuğunda ilgili proje için Confluence üzerinde de bir sayfa oluşturmak istediğimizde bunun için script yazıp ProjectCreatedEvent’ini dinleyebiliriz:

Bir issue üzerinde yapılan bazı eventleri dinleyip aksiyon almak istediğimizde de hem istediğimiz kadar event’i hem de istediğimiz kadar projeyi dinleyerek aksiyon aldırabiliriz.

Script Jobs

Script Job temelde belirli aralıklarla çalıştırabileceğimiz bir kod parçacığıdır. Linux sistemlerinden de alışık olduğumuz cron expression ile hangi sıklıkta çalışacağını belirleriz.

Bazen çalıştırmak istediğimiz geliştirmelerin bir geçiş üzerinde çalışmasını ya da bir event ile tetiklenmesini istemeyiz. Örneğin firmanın Active Directory sunucusuna bağlanıp oradan bazı bilgiler çekiyoruz ve bu bilgileri Jira üzerinde tutuyoruz diyelim. Firma büyük ölçekte bir firma ve bu sunucuya bağlanıp veri çekmemiz aslında sistemi yormamız demek. Biz bunu Jira’nın en az kullanıldığı saatlerde yapmak isteriz ki son kullanıcının bundan etkileneceği bir performans sorunu yaşamayalım. Scheduled Job’lar sayesinde her sabah saat 05:00 olduğunda bu geliştirmeyi çalıştırabiliriz.

Job’ların bize sağladığı bir diğer özellik ise bir kod parçacığını n tane issue üzerinde çalıştırmamıza olanak sağlayan Escalation Service. Jira’nın default bir kavramı olan JQL (Jira Query Language) ile bir sorgu yazıp, bu sorguya dahil olan kayıtlar için scriptimizi çalıştırabiliriz.

Yine belirlediğimiz bir JQL’e dahil olan tüm kayıtları arşivlemek istediğimizde de Issue Archiving Job seçeneğini kullanabiliriz. Örneğin 3 aydır güncellenmemiş kayıtları arşivle diyebiliriz.

Script Fields

Yukarıda bahsettiğim üç özellik de aslında belli durumlarda tetiklenen ve bize anlık olarak veri sunmayan geliştirmeler. Anlık olarak çalışmasını istediğimiz geliştirmelerimiz için ise Script Field özelliğini kullanıyoruz.

Bu özellik için verilebilecek en somut örnek hesaplama işlemleri olabilir. In Progress statüsündeki kayıtların kaç gündür o statüde kaldığını görmek istediğimiz bir senaryoda Script Field ile bir script çalıştırıp anlık olarak günü, saati kayıtların üzerinde görebiliriz.

Script Fields özelliği ayrıca issue picker, database picker gibi kendi özelleştirilmiş alanlarını da kullanmamıza izin veriyor.

ScriptRunner’ın bazı yeteneklerinden en basit haliyle bahsetmeye çalıştım. ScriptRunner bize Jira üzerinde birçok noktaya dokunabilme, onları özelleştirebilme, daha karmaşık ihtiyaçlar için çözümler üretme şansı veriyor fakat bu noktada istenilen geliştirmeyi iyi analiz edip sisteme gereksiz yük bindirmeden, eklentiyi tehlikeli bir hale getirmeden kullanmak önemli bir nokta oluyor.

Bir sonraki yazımda ScriptRunner’ın bize sunduğu Behaviours, JQL Functions, Built in Scripts gibi diğer özelliklere değineceğim.

Dilerseniz Adaptavist’in kendi dokümantasyonları üzerinden de daha detaylı bir şekilde inceleyebilirsiniz.

--

--