Usiamo ScriptRunner – Vediamo alcuni esempi

Un semplice esempio

In questo post andremo ad esaminare un esempio di come possiamo sfruttare Scriptrunner per JIRA, già presentato in questo blog, per realizzare delle funzioni opportune.

 

Ringraziamenti

Un grazie al lavoro che svolge MrAddons con il suo blog, che ha ispirato questo articolo, in cui spiega come sfruttare la potenza di questo ed altri addon. 

Di cosa parliamo oggi?

Voglio citare un semplice esempio di come possiamo automatizzare alcune azioni che normalmente ci prenderebbero delle giornate. Vediamo come chiudere un task, in automatico, che è stato collegato con un altro come linked issue.

Scenario

Abbiamo un task in cui sono presenti delle issue collegate. Vogliamo che, nell’istante in cui andiamo a chiudere la issue principale, le issue collegate siano a loro volta chiuse.

Come possiamo ottenere questo risultato che, normalmente, le funzioni standard o out-of-the-box di JIRA non ci mettono a disposizione? Risposta: Con Scriptrunner. vediamo come.

 

Pochi semplici passi

Quello che dobbiamo fare e andare ad agire a livello di Workflow, in particolare a livello di Postfunction di una transazione del Workflow (nel nostro caso si tratta di un workflow usato in un progetto di esempio).

e li andiamo a generare la nostra Postfunction personalizzata, come script:

dove inseriamo questa azione. Il concetto è di sfruttare groovy e di andare a dire a JIRA: Quando esegui questa operazione, se si tratta di una issue che presenta delle issue collegate, allora … riesegui la stessa transazione per chiuderla.

Il codice da inserire è il seguente:

import com.atlassian.jira.ComponentManager
import com.atlassian.jira.component.ComponentAccessor

def issueLinkManager = ComponentAccessor.getIssueLinkManager()
import org.apache.log4j.Category
import com.opensymphony.workflow.WorkflowContext
import com.atlassian.jira.workflow.WorkflowTransitionUtil;
import com.atlassian.jira.workflow.WorkflowTransitionUtilImpl;
import com.atlassian.jira.util.JiraUtils;
import com.atlassian.jira.issue.comments.CommentManager;
import com.atlassian.jira.issue.link.IssueLink;
import com.atlassian.jira.issue.MutableIssue
def Category log = Category.getInstance(“com.onresolve.jira.groovy.PostFunction”)
log.setLevel(org.apache.log4j.Level.DEBUG)
log.debug “debug statements”
String currentUser = ((WorkflowContext) transientVars.get(“context”)).getCaller();
WorkflowTransitionUtil workflowTransitionUtil = ( WorkflowTransitionUtil ) JiraUtils.loadComponent( WorkflowTransitionUtilImpl.class );
log.debug “Original: ${issue.getId()}, ${issue.getKey()}. DETECTED ” + issue.getStatusObject().getName();

List<IssueLink> allInIssueLink = issueLinkManager.getOutwardLinks(issue.getId());
for (Iterator<IssueLink> inIterator = allInIssueLink.iterator(); inIterator.hasNext();) {
IssueLink issueLink = (IssueLink) inIterator.next();
def linkedIssue = issueLink.getDestinationObject();
log.debug “linked: ${linkedIssue.getId()}, ${linkedIssue.getKey()}. DETECTED ” + linkedIssue.getStatusObject().getName();
if (linkedIssue.getStatusObject().getName().equals(“To Do”)) { // STATO della issue collegata
log.debug “linked Content: ${linkedIssue.getId()}, ${linkedIssue.getKey()}.”

//We can transition the parent ticket
log.debug “start transition”

workflowTransitionUtil.setIssue((MutableIssue) linkedIssue);
workflowTransitionUtil.setUserkey(currentUser);
workflowTransitionUtil.setAction (21); //Transition ID — TRANSAZIONE CHE VIENE ESEGUITA
workflowTransitionUtil.validate();
workflowTransitionUtil.progress();

log.debug “end transition”
}

}

Nel seguente GIF, viene mostrato quello che succede quando attiviamo questa postfunction:

Conclusione

Un piccolo passo e poco poco codice per un grande risultato :-). Nei prossimi post cercheremo di esaminare altri script e scopriremo come sfruttare Scriptrunner.




ScriptRunner per Confluence – Diamo una occhiata

Estendiamo le funzionalità di Confluence

In questo post andremo a dare una prima occhiata a questo nuovo Addon, che estende le funzionalità di Confluence. Abbiamo già avuto modo di conoscere questo addon per JIRA, dove abbiamo mostrato le potenzialità.

Vediamo subito che cosa offre

Questo addon è una piacevole sorpresa di AtlasCamp. Non sono riuscito a partecipare, ma spero di essere ben presente al prossimo :-D.

Abbiamo la possibilità di poter aggiungere degli script personalizzati, esattamente come descritto per JIRA, per aggiungere azioni o macro che non sono presenti.

Possiamo quindi aggiungere delle funzioni personalizzate o sfruttare la completa libreria di script, che la Adaptavist mette a disposizione, per poter creare i nostri script 🙂

Conclusioni

Abbiamo fatto la conoscenza di un addon molto interessante. Nei prossimi post andremo a testare e ben provare per saggiarne le caratteristiche.

Reference

Maggiori informazioni sono presenti qui.




Portiamo i calcoli su Jira Cloud

L’evoluzione delle funzionalità sul cloud non conosce limiti ne si ferma. Quello che molto spesso su installazione server è pura normalità, su cloud non sempre questa operazione è possibile.

Un esempio è dato da un addon molto importante, che personalmente mi ha salvato la vita in tantissime consulenza. Sto parlando di Scriptrunner per Jira Cloud e della possibilità di poter creare dei campi calcolati, come mostrato qui.

Dalla manualistica ufficiale di Scriptrunner for Jira cloud

In questo post andremo ad esaminare quali possibilità sono adesso disponibili e li andremo a testare per saggiarne le possibilità.

Esplorazione in corso

Abacus – Calculate Jira

Questo addon permette di poter creare dei campi calcolati sulla nostra istanza di Jira Cloud

Calculate Numeric, Dat, and Duration formulas and control them using Execution Plans.
Possibilità offerte dall’addon

Ma non solo. Questa è solo una delle possibilità che offre questo addon. Possiamo anche introdurre automatismi che permettono di semplificarci la vita.

Create Execution Plans to dictate when and how your formulas will run. Use triggers to identify activating events, conditions to filter issues using JQL, and actions to specify which formulas to run or fields to update.
Execution Plan – Funzionalità da esplorare

Conclusioni

Abbiamo a disposizione un addon molto interessante, sopratutto se abbiamo la necessità di dover migrare la nostra istanza da Server a cloud, ma non solo. Cercheremo di esplorare altri possibili usi.




Old street solution ci sorprende sempre

In questo post andiamo a descrivere alcune caratteristiche innovative che la Old Street Solutions mette a disposizione con i report dei suoi addon. Curiosiamo 😀

Set Investigation mode = ON

Script field

Custom Chart for Jira permette l’utilizzo di campi Scripting, come mostrato in questo articolo (in inglese) del blog della Old Street Solutions.

Basta definire un campo, sfruttando ad esempio l’addon ScriptRunner

Definizone di un campo custom definito come script

per poterlo utilizzare all’interno dei gadgets 😀

Esempio di selezione del campo script

Scriptrunner non è l’unico addon usabile. Come mostrato dallo stesso articolo sono usabili anche:

  • Jira Misc Custom Fields
Esempio di campo calcolato
  • Power Custom Fields for Jira
Esempio di campo calcolato.

e di conseguenza abbiamo una ampia varietà di scelta. Personalmente ho usato in varie occasioni e sono sempre più contento dei prodotti della Innovalog. Li preferisco perchè più semplici ed intuitivi 😀

Fantastico, ma che altro?

Non è la sola novità. Mi permetto di citare un secondo articolo in cui si presenta una funzionalità I N T E R E S S A N T E. Esploriamo:

Ecco la vera novità

Come mostrato nella immagine, notiamo la presenza di un nuovo GADGET che ci permette di poter impostare praticamente dei filtri automatici che influenzano a visualizzazione dati degli altri GADGETS

Simple Search gadget, sfruttando la potenza del JQL (come ben sapete sono sensibile al JQL per ovvi motivi), ci permette di poter impostare dei filtri facilmente e con pochi click del mouse, usando il JQL

JQL in piena.vista

o per chi non è proprio pratico del JQL, possiamo basarci su filtri, esattamente come gestiamo i filtri per selezionare le nostre issue

Filtri per coloro che non sono pratici

Questo ci permette di avere delle Dashboard interattive e spettacolari, come mostrato in questo video di youtube

Questo video spiega molto bene

Conclusione

Posso affermare senza alcun dubbio che la Old Street Solutions mette a disposizione un sistema di reportistica UNICO, FANTASTICO e soprattutto PRATICO. Non posso che consigliare questo addon per tutte quelle situazioni in cui si ha la necessità di creare reportistica di una certa levatura e qualità.




Allarmi e segnalazioni

Un piccolo suggerimento

In questo post andremo a vedere una funzionalità standard che può risultare utilissima nella gestione dei nostri task/progetti. Le sottoscrizioni dei filtri.

Di cosa si tratta?

Semplicemente sfruttiamo le nostre interrogazioni JQL verso le issue JIRA. Da qui andiamo ad identificare quelle issue che ci interessano e lo facciamo semplicemente sfrittando la potenza del JQL.

UNa volta fatto ciò, possiamo farci inoltrare da JIRA stesso una email attraverso le Sottoscrizioni, ovvero la possibilità di far eseguire, tramite uno schedulatore, le interrogaziomni che ci servono e da li ricavarci le informazioni utili direttamente in posta. In questo modo abbiamo ciò che ci serve senza dover ogni volta andare a ripetere le interrogzioni ogni 5 minuti.

Vantaggi

Possiamo introdurre un controllo che verifica la presenza di situazioni anomale e farci inoltrare un email ogni qual volta sia necessario. Di conseguenza abbiamo un Akert praticamente gratuito da parte di JIRA.

Svantaggi

Potremmo aver bisogno di una query JQL piuttosto complicata, e questo potrebbe richiedere l’uso di addons che aggiungono delle funzioni adhoc oppure di avere lo scriptrunner per JIRA, che permette di creare delle funzioni particolari di cui avremmo bisogno.

Nel complesso potremmo non avere bisogno di cose troppo particolari e lo standard ci tornerebbe abbastanza comodo.

Conclusioni

ABbiamo visto un semplice Tip che ci permette di avere un Alert sfruttando il più possibile le funzionalità standard. Nei prossimi post andremo ad esaminare come potremmo estendere / migliorare questo truchetto 🙂




Esempio di script runner – Clone Issue

Tips & Tricks – Esplorazione continua

In questo post proseguiamo la nostra esplorazione dei Tips & Tricks sui prodotti Atlassian. In particolare ci concentreremo su come usare Script Runner per eseguire alcune operazioni.

Clone issue

Si tratta di uno scernario che ci si può presentare per 1000 ragioni. Quello che potrebbe capitare è di assegnare un compito simile ad un secondo gruppo di lavoro: immaginate di trovarvi in una situazione in cui uno stesso applicativo viene gestito in versioni differenti, in base alle indicazioni dei clienti e, trovando un bug comune a tutti, prima si corregge sulla versione generale e successivamente deve essere riportato sulle versioni custom.

Come lo realizziamo?

Una possimibe strada è quella di servirsi di un addon di cui abbiamo parlato già in passato: ScriptRunner per JIRA. Attraverso questo addon possiamo estendere le funzionalità del nostro JIRA in modo da implementare questa operazione in automatico, arrivando a creare la issue clone.

Agiamo a livello di Workflow, dove inseriamo una postfunction che ci permette di poter aggiungere una nuova funzionalità, che l’addon ci mette a disposizione: Tra le possibili scelte abbiamo anche il Clone Issue. Questo ci propone una agevole composizione che ci permette di inserire parametri necessari alla clonazione.

clone-01

Come possiamo vedere abbiamo a disposizione una interfaccia molto semplice 🙂

Conclusioni

Abbiamo visto un semplice Tips & Tricks, che ci permette di poter risolvere alcuni problemi in maniera molto semplice e veloce. Nei prossimi post analizzeremo altre situazioni.

Reference

Segnalo anche questi link, che possono tornare utili per versioni un pò più vecchie di JIRA.




Estendiamo JQL con altre funzionalità

Estendiamo le funzionalità JQL

In questo post andremo ad esaminare come possiamo ancora estendere le funzionalità di JQL Standard.

 

Come possiamo fare?

Vediamo quali possibilità abbiamo per estendere le funzionalità JQL nel nostro JIRA. Abbiamo già visto alcuni esempi esaminando diversi addon, che abbiamo recensito nel corso del tempo, quali ad esempio scriptrunner, di cui abbiamo ampiamente parlato. vediamo adesso quali altri soluzioni sono possibili:

JQL Tricks Plugin è sicuramente una prima soluzione. Mette a disposizione tante funzioni aggiuntive per il JQL, permettendo di poter eseguire moltissime interrogazioni specifiche.

 

Abbiamo la possibilità di monitorare chi ha eseguito determinate operazioni in maniera banalissima, come mostrato dalla precedente immagine.

In aggiunta abbiamo la possibilità di poter indicare quali utenti/gruppi/progetti ne possono fare uso, con una agevole form di configurazione.

Craftware Search Linked Issues for JIRA è la nostra seconda indicazione. Si tratta di un addon che estende, a sua volta, il JQL con opportuni funzioni. Permette di poter eseguire delle ricerche sulle linked issue in maniera molto semplice.

 

 

 

Dalla immagine precedente, vediamo che abbiamo delle funzioni che, nella vita lavorativa, ci aiutano a semplificarcela :-D.

JQL Functions Collection mette a disposizione un insieme di funzioni JQL anche queste molto semplificative della vita di ogni giorno.

 

 

Si tratta di funzioni che trattano formato di dati, di stringhe etc. Queste sono sicuramente molto utili :-), come mostrato dalla immagine successiva.

 

Conclusioni

Abbiamo fatto una carrellata molto rapida di addons che permettono di estendere JQL con altre funzioni che possono aiutare la vita di tutti i giorni.




Bitbucket – altri addons

Altri addons per Bitbucket

In questo post proseguiamo la nostra esplorazione del mondo Bitbucket: andiamo ad esaminare altri addons.

Iniziamo senza indugio

Partiamo con Bitbucket Server Archive Plugin, che ci consente di poter eseguire il Download su ZIP o TAR file di tutto il nostro sorgente. L’addon è gratuito (al momento in cui viene scritto questo post). Fondamentalmente ci aggiunge un tasto Download, come mostrato in figura:

semplificandoci la vita (sopratutto se siamo abituati con SVN).

Proseguiamo con Bitbucket Webhook to Jenkins.  Questo addon open source, permette di poter triggerare Jenkins ogni volta che viene eseguita una commit. 

In questo modo possiamo sfruttare le potenzialità di Jenkins con Bitbucket.

Proseguiamo con una piccola sorpresa: ScriptRunner for Bitbucket Server/Stash.

Come per JIRA abbiamo visto diversi post, esaminando ed usandolo. Abbiamo anche qui  questo addon che ci consente di  automatizzare diverse operazioni.

Continuiamo con Hipchat Plugin for Bitbucket Server.

Possiamo integrare HipChat con Bitbucket in maniera semplice e sfruttarne le potenzialità.

Completiamo questo secondo giro di esplorazione con Bitbucket Command Line Interface (CLI).

Si tratta della estensione CLI aggiunta per Bitbucket.

Anche questo addon ci aiuta nella automatizzazione di compiti.

Conclusioni

Abbiamo concluso questo secondo giro. Proseguiremo nei prossimi post le prove di questi ed altri addons 🙂




Script Runner – Prova su strada #2

Prova su strada #2

Proseguiamo la prova su strada. Nella prima parte abbiamo visto installazione e configurazione dell’addon. Passiamo adesso all’utilizzo.

Utilizzo addon

Vediamo come utilizzare questo addon. Nel post precedente abbiamo visto come installarlo e che cosa offre come configurazione. Passiamo all’utilizzo vero e proprio :-).

Come prima cosa, generiamo un progetto ad hoc, da usare come banco di prova e capire come su utilizza questo addon. Con molta fantasia, andiamo a chiamare il progetto Script Runner Demo 😛

script-02-01

Questo progetto presenta un Workflow molto semplice. A tale scopo, prima di proseguire, consigliamo la lettura del miei post, dedicati al Workflow ed alla loro spiegazione. Il nostro progetto di test presenta un workflow molto semplice, come mostrato in figura:

script-02-02

A questo punto, introduciamo lo scriptrunner. Supponiamo di voler eseguire una riassegnazione automatica della Issue, quando si apre nuovamente la stessa. Vediamo come configurarla. Selezioniamo la transazione che ci interessa:

script-02-03

Aggiungiamo una Post Functions. Selezioniamo Script Post-Function, come tipo di funzione, come mostrato in figura:

script-02-04

Confermiamo ed andiamo a selezionare il tipo di script che vogliamo attivare:

script-02-05

selezioniamo Assign to first member of role, andando avanti nel wizard ….

script-02-06

… selezionaimo il ruolo che ci interessa (nel nostro caso va benissimo anche Administrator). Selezioniamo Add, confermando a questo punto anche la nostra Post Function 🙂

script-02-07

Come mostrato dalla precedente immagine, abbiamo il tutto. Procediamo con una semplice demo. A tale scopo mi servirò di un semplice applicativo che registra delle GIF animate e che mostra il risultato 🙂

script-02-08

Come possiamo osservare, abbiamo che la Issue, in fase di riapertura, viene riassegnata nuovamente ad Administrator.

Conclusioni

Chiudiamo, con questo post, abbiamo visto qui come è possibile utilizzare lo Script Runner per poter gestire delle nuove situazioni e poter inserire delle funzioni aggiuntive, non presenti nello standard. Questo è, al momento, disponibile solo per le versioni SERVER di JIRA, ma non mettiamo mai limiti. Sono sicuro che la Adaptavist ci stupirà nel prossimo futuro 🙂

Ovviamente questo post non esaurisce l’argomento: Ci saranno ulteriori post con aggiornamenti.

Reference




Script Runner per JIRA – First Look

ScriptRunner – First Look

In questo post andremo ad esaminare lo ScriptRunner, un addon per JIRA che consente di poter fare delle cose … molto interessanti.

Di che cosa si occupa questo addon?

Fondamentalmente consente di poter automatizzare alcune operazioni su JIRA, sfruttando le potenzialità di Groovy, un potente linguaggio che è simile al Java:

che consente di poter aggiungere del …. valore in più sul nostro JIRA

Vediamo cosa possiamo fare con questo addon.

  • Aggiungere delle funzionalità Built-in, che ci aiutano nel semplificarci la vita:
  • Estende JQL con alcune funzioni che ci …. aiutano nel nostro lavoro:
  • Possibilità di aggiungere funzioni custom: 
  • Possibilità di poter estendere i Workflow con funzionalità aggiuntive;
  • Rendere certi campi di JIRA obbligatori, sotto certe condizioni;
  • tante tante altre ancora 🙂

Conclusioni

Abbiamo un valido aiuto nel nostro lavoro di tutti i giorni. Uno strumento che ci consente di estendere le funzionalità di JIRA come vogliamo. Nei prossimi post, andremo a testare sul campo, come siamo già abituati :-D. Vedremo di saggiarne le potenzialità ed i limiti.