Script Runner, mon sauveur! (ou comment j'ai remplacé Outlook par JIRA) - Valiantys - Atlassian Platinum Partner
logo-bleu_rvb.png
Back

Script Runner, mon sauveur! (ou comment j’ai remplacé Outlook par JIRA)

Si vous avez besoin de configurer JIRA pour l’adapter aux besoins de votre entreprise et que vous avez des connaissances en développement, Script Runner est votre sauveur. Dans cet article, je vous expliquerai comment il m’a aidé lors de la configuration de JIRA pour répondre à des besoins spécifiques.

Les utilisateurs ont toujours une liste d’exigences pour la configuration de leur JIRA. Cependant, par défaut, JIRA ne permet pas toujours d’y répondre sans l’aide d’add-ons.

Utiliser le scripting pour configurer JIRA comme vous voulez

Sur la marketplace d’Atlassian, de nombreux add-ons vous permettront de configurer JIRA pour répondre à vos exigences, malheureusement, ils ont bien souvent un coût. L’ingénieuse création de Jamie Echlin appelée Script Runner vient à votre rescousse. En effet, vous pouvez faire quasiment ce que vous souhaitez en écrivant un script.

Pour ceux d’entre vous qui ne savent pas ce qu’est Script Runner, il s’agit d’un add-on qui permet de mettre en place des configurations avances de votre instance JIRA en utilisant le langage Groovy.  Script Runner a déjà des scripts intégrés qui pourront vous aider avec les post-fonctions de vos workflows, les règles de validation et les conditions, cependant vous pouvez aussi les utiliser comme base de départ pour des requêtes JQL, des listeners et des champs scripts. Par exemple, rechercher des issues avec des documents joints.

Comment j’ai remplacé Outlook par JIRA

Pour revenir à mon expérience, des utilisateurs voulaient remplacer Outlook par JIRA. Ils utilisaient Outlook pour toute tâche ad-hoc arrivant sous forme d’email et ils exécutaient la tâche par un aller-retour incessant d’emails. En tant qu’administrateur, j’aurais tout à fait pu leur dire d’utiliser JIRA, ne tenant cependant pas compte de la complexité du système qui allait en découler.

Besoins des utilisateurs

Les emails étaient automatiquement classés dans différents dossiers selon le sujet et l’expéditeur, grâce à des règles définies dans leur Outlook. Ce tri a dû être reproduit dans JIRA. Pour représenter les dossiers, j’ai utiliser un custom field JIRA ” Type de requête”. Avec l’aide de l’add-on JETI (JIRA Email This Issue), j’ai ensuite généré des custom fields avec l’adresse email de l’émetteur pour permettre au receveur de l’identifier facilement.  Comme vous le savez, il existe une post-fonction qui permet de copier la valeur d’un champ dans un autre champ en utilisant JIRA Suites Utilities.

However, updating a custom field with a value depending on a particular value from another custom field is what JIRA does not offer

Cependant, JIRA n’offre pas la possibilité de mettre à jour un custom field avec une valeur dépendant de la valeur d’un autre custom field, même avec l’aide de JIRA Suites Utilities, c’est pourquoi Script Runner s’est avéré utile. Tout d’abord, c’est un add-on gratuit, ce qui est toujours un avantage pour administrateur et utilisateurs, et deuxièmement il répond aux besoins des utilisateurs, il est donc notre sauveur.

La solution que j’ai mise en place

Le script lit une issue pendant sa création, et selon l’expéditeur et l’objet de l’email, il remplit les champs Type de requête, Priorité, Composant, Assignee, et créé le SLA. Les utilisateurs voulaient également assurer un tracking rapide des issues ne remplissant pas les règles définies et compléter cette issue en configurant sa résolution. Ils voulaient aussi mettre en place un listener surveillant l’évènement “Issue Updated” pour gérer la mise à jour d’un autre custom field de l’issue. Tout cela a pu être réalisé grâce à un seul add-on. Voici ci-dessous un échantillon du script.

import com.atlassian.jira.bc.project.component.ProjectComponent
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.project.Project
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.IssueImpl
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.comments.CommentManager
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.util.ImportUtils
import com.atlassian.jira.user.util.DefaultUserManager
import com.atlassian.crowd.embedded.api.User
import com.atlassian.jira.project.Project
import com.atlassian.jira.issue.customfields.manager.OptionsManager
import com.atlassian.jira.issue.context.IssueContext
import com.atlassian.jira.issue.context.IssueContextImpl

//Type of Request field
optionsManager = componentManager.getComponentInstanceOfType(OptionsManager.class)
cf2 = ComponentAccessor.customFieldManager.getCustomFieldObjects(issue).find{it.name =='Type of Request'}

//Business Unit Owner Field
optionsManager = componentManager.getComponentInstanceOfType(OptionsManager.class)
cf3 = ComponentAccessor.customFieldManager.getCustomFieldObjects(issue).find{it.name =='Business Unit'}

//Sender Field
cf = ComponentAccessor.customFieldManager.getCustomFieldObjectByName("Sender")
val = issue.getCustomFieldValue(cf)

if(issue.getSummary.toLowerCase().contains("sample text")) {
    Project project = issue.getProjectObject()
    ProjectComponent component = ComponentAccessor.getProjectComponentManager().findByComponentName(project.getId(), "name of component")
    issue.setComponentObjects([component])

    def fieldConfig = cf2.getRelevantConfig(issue)
    def option = optionsManager.getOptions(fieldConfig).find {it.value == "name of type of request"}
    issue.setCustomFieldValue(cf2, option)

    def fieldConfig1 = cf3.getRelevantConfig(issue)
    def option1 = optionsManager.getOptions(fieldConfig1).find {it.value == "name of business unit"}
    issue.setCustomFieldValue(cf3, option1)

    issue.setPriorityId("priorityID")
} else {
return false
}

Je suis ravi de vanter les mérites de Script Runner,  cependant, comme tout outil, il a quelques limitations. L’une d’entre elles est qu’il nécessite des connaissances en développement et de comprendre Groovy pour écrire des scripts complexes. Ceci peut être bloquant et amener à choisir un ou des add-ons payants. Cependant il y a beaucoup de contenus sur internet qui peuvent aider un administrateur, quel que soit son background, pour démarrer avec les bases du scripting.

Soyez le héros JIRA du jour

Désormais, vous savez qu’un add-on peut vous permettre de répondre à vos besoins quels qu’ils soient et quelque soit votre abilité à écrire des scripts Groovy, car de nombreuses ressources peuvent vous permettre d’y parvenir.

Cutted Triangle

Subscribe to the Valiantys Newsletter

Demande enregistrée ! Demande en cours... Ceci n'est pas un email Une erreur s'est produite

In accordance with our privacy policy, we are committed to respecting your personal data.

Contact us

Our Atlassian certified consultants will be happy to answer you.

Join us

We're building the next dream team - Are you in?

Follow us

Nous utilisons des cookies pour le fonctionnement de ce site, pour améliorer son utilisation, personnaliser votre expérience et réaliser des statistiques de visite. Vous pouvez gérer les paramètres et choisir d’accepter ou non certains cookies durant votre navigation. Pour plus d’informations, consultez notre politique de confidentialité. Nos politique de confidentialité

Paramètres de confidentialité

Afin de faciliter votre navigation et de vous apporter le meilleur service possible, nous utilisons des cookies pour améliorer le site aux besoins des visiteurs, notamment selon la fréquentation.  Pour plus d’informations, consultez notre politique de confidentialité. Nos politique de confidentialité

Recaptcha

Google reCAPTCHA est un système conçu pour distinguer les humains des ordinateurs, de telle sorte que les bots soient incapables de remplir les formulaires de manière malveillante au nom d’un être humain.

Analytics

Utilisé pour envoyer des données à Google Analytics sur le périphérique et le comportement du visiteur. Suit l'internaute à travers les appareils et les canaux de marketing. Utilisé par Google Analytics pour diminuer radicalement le taux de requêtes. Enregistre un identifiant unique utilisé pour générer des données statistiques sur la façon dont le visiteur utilise le site.

LinkedIn

Cookies pour une publicité ciblée : Ces cookies peuvent être mis en place au sein de notre site Web par nos partenaires publicitaires. Ils peuvent être utilisés par ces sociétés pour établir un profil de vos intérêts et vous proposer des publicités pertinentes sur d'autres sites Web. Ils ne stockent pas directement des données personnelles, mais sont basés sur l'identification unique de votre navigateur et de votre appareil Internet. Si vous n'autorisez pas ces cookies, votre publicité sera moins ciblée.

Cookies "réseaux sociaux" : Ces cookies sont activés par les services proposés sur les réseaux sociaux que nous avons ajoutés au site Web afin de vous donner la possibilité de partager notre contenu avec votre réseau et vos connaissances. Ils nous permettent également de suivre votre navigation sur d’autres sites Web et d’établir un profil de vos intérêts. Cela peut avoir un impact sur le contenu et les messages affichés sur les autres sites Web que vous consultez. Si vous n'autorisez pas ces cookies, il se peut que vous ne puissiez pas utiliser ou visualiser ces outils de partage.