Personnalisation des chaînes de valeur#

Personnalisez le fichier value-stream-name.json pour refléter votre flux de travaux habituel.

Lorsque vous créez une chaîne de valeur, des étapes et des phases par défaut sont configurées et affichées dans la vue Chaîne de valeur. La structure de la chaîne de valeur est déterminée par le fichier JSON joint à la chaîne de valeur, value-stream-name.json. Vous pouvez télécharger le fichier, le modifier, puis le joindre à nouveau à la chaîne de valeur en le chargeant sur IBM™ UrbanCode Velocity.

Un fichier json de la chaîne de valeur se compose des zones suivantes :

Le bloc de code suivant montre le fichier json de la chaîne de valeur par défaut :

{
  "_id": "velocity-generated-value",
  "pipelineId": "velocity-generated-value",
  "tenantId": "velocity-generated-value",
  "description": null,
  "query": "",
  "phases": [
    {
      "name": "Planning",
      "description": "",
      "stages": [
        {
          "name": "Backlog",
          "query": "",
          "description": "",
          "wipLimit": null,
          "gates": null
        },
        {
          "name": "Queue",
          "query": "",
          "description": "",
          "wipLimit": null,
          "gates": null
        }
      ]
    },
    {
      "name": "Development",
      "description": "",
      "stages": [
        {
          "name": "In Progress",
          "query": "",
          "description": "",
          "wipLimit": 10,
          "gates": null
        },
        {
          "name": "In Review",
          "query": "",
          "description": "",
          "wipLimit": 5,
          "gates": null
        },
        {
          "name": "Merged",
          "query": "",
          "description": "",
          "wipLimit": null,
          "gates": null
        }
      ]
    },
    {
      "name": "Deployment",
      "description": "",
      "stages": [
        {
          "name": "DEV",
          "query": "",
          "description": "",
          "wipLimit": null,
          "gates": null
        },
        {
          "name": "QA",
          "query": "",
          "description": "",
          "wipLimit": null,
          "gates": null
        },
        {
          "name": "PROD",
          "query": "",
          "description": "",
          "wipLimit": null,
          "gates": null
        }
      ]
    }
  ],
  "leadTime": {
    "start": "Backlog",
    "end": "PROD"
  },
  "cycleTime": {
    "start": "In Progress",
    "end": "PROD"
  },
  "mappings": {
    "priority": {
      "Lowest": [
        "Lowest"
      ],
      "Low": [
        "Low"
      ],
      "Medium": [
        "Medium"
      ],
      "High": [
        "High"
      ],
      "Highest": [
        "Highest"
      ]
    }
  },
  "integrations": [],
  "linkRules": [],
  "metrics": [
    {
      "name": "Work Item Type",
      "repeatEvery": "1 minute",
      "repeatAt": null,
      "metricDefinitionId": "WORK_ITEM_TYPE",
      "properties": {
        "query": null,
        "field": "issue.type"
      }
    }
  ],
  "metricsBar": null
}

En-tête#

Les propriétés d'en-tête sont communes à toutes les chaînes de valeur.

Propriété Description
_id Identificateur de chaîne de valeur. La valeur est générée par IBM UrbanCode Velocity.
pipelineId Identificateur du pipeline associé à la chaîne de valeur. La valeur est générée par IBM UrbanCode Velocity.
tenantId Identificateur du titulaire. La valeur est générée par IBM UrbanCode Velocity.
description Description de la chaîne de valeur.
query Requête qui définit la portée de toute la chaîne de valeur, pas simplement d'une étape. Si vous partagez une instance Jira, par exemple, vous pourriez définir une requête qui limite la chaîne de valeur aux problèmes d'une seule équipe.

Phases#

La matrice JSON phases définit les phases et les étapes de la chaîne de valeur. La matrice phases unique pour chaque chaîne de valeur contient des objets stages qui définissent les étapes contenues dans la phase. Une matrice phases peut contenir n'importe quel nombre d'objets stages.

Le fragment de code suivant montre une phase de planification qui contient des étapes intitulées Backlog Scrum et Sélectionné pour le développement.

"phases": [
    {
      "name": "Planning",
      "description": "Planning stage",
      "stages": [
        {
          "name": "Backlog Scrum",
          "query": "issue.status=\"Backlog\"",
          "description": null,
          "wipLimit": null,
          "gates": null
        },
        {
          "name": "Selected For Development",
          "query": "issue.status=\"TO DO\" or issue.status=\"To Do\"",
          "description": null,
          "wipLimit": null,
          "gates": null
        }
      ]
    },
Propriété Description
nom Nom de l'étape
query La requête DevOps qui définit les particules affichées dans l'étape. En général, les paramètres de requête référencent les outils intégrés à la chaîne de valeur. Voir les exemples présentés plus loin dans cette rubrique.
description Description de l'étape.
wipLimit Représente la limite "travail en cours". Si le nombre d'éléments de l'étape dépasse la limite, un avertissement s'affiche. Pour désactiver les avertissements, ne renseignez pas la valeur.
portes Les portes déterminent si des objets sont valides pour un contexte donné. On qualifie d'objets valides ceux qui franchissent la porte et d'objets non valides ceux qui ne la franchissent pas. Des objets valides peuvent s'afficher dans les chaînes de valeur.

Indicateurs de temps de mise en œuvre et de cycle#

Les propriétés de temps de mise en œuvre et de cycle vous fournissent des indicateurs faciles à utiliser se rapportant aux performances de la chaîne de valeur. La propriété de temps de mise en œuvre fait référence au temps écoulé entre le début d'un projet et son terme. La propriété de temps de cycle fait référence au temps que prennent des éléments de projet individuels pour s'exécuter.

Configurez les indicateurs en affectant une étape de départ à la propriété start, ainsi qu'une étape de fin à la propriété end. Par exemple, si vous définissez start sur l'étape Backlog, les éléments sont suivis lorsqu'ils passent de l'étape Backlog vers l'étape suivante. Ainsi, si vous définissez end sur l'étape Deployed, les éléments sont terminés lorsqu'ils passent à l'étape Deployed.

Lorsque vous configurez les indicateurs, les valeurs calculées s'affichent dans la barre Indicateurs de la vue Chaîne de valeur.

L'exemple de code suivant illustre les configurations standard du temps de mise en œuvre et de cycle.

      "leadTime": {
        "start": "Backlog",       
        "end": "Deployed",
      },
       "cycleTime": {
        "start": "In Progress",       
        "end": "Merged",
      }, 

Mappage#

L'objet de mappage définit les valeurs du statut pour les dispositifs de suivi des problèmes. L'exemple de code suivant illustre les mappages par défaut :

"mappings": {
    "priority": {
      "Lowest": [
        "Lowest"
      ],
      "Low": [
        "Low"
      ],
      "Medium": [
        "Medium"
      ],
      "High": [
        "High"
      ],
      "Highest": [
        "Highest"
      ]
    }
  },

Exemples de requête#

Une requête DevOps détermine les particules affichées. Une requête au niveau de la chaîne de valeur filtre ou définit la portée de toute la chaîne de valeur. Une requête au niveau de l'étape filtre l'étape, tandis qu'une requête au niveau de la porte filtre la porte. Les portes sont évoquées plus loin dans cette rubrique.

En général, les paramètres de requête référencent les outils intégrés à la chaîne de valeur ou à des applications qui appartiennent u pipeline associé. Pour une intégration Jira, vous pourriez restreindre les particules qui s'affichent dans une étape intitulée "En cours" à l'aide d'une simple requête similaire à celle-ci : "query":"issue.status="In Progress".

Pour une intégration Git, vous pourriez restreindre les particules qui s'affichent dans une étape intitulée "Fusionné" à l'aide d'une requête similaire à celle-ci : "query":"(pr.status=merged OR pr.status=closed) AND deployment.env!=DEV AND deployment.env!=QA AND deployment.env!=PROD and build.status!=success".

Le fragment de code suivant montre une phase de planification contenant plusieurs étapes et leurs requêtes correspondantes.

{
      "name": "Development",
      "description": null,
      "stages": [
        {
          "name": "In Progress",
          "query": "issue.status=\"In Progress\" and build.status!=success",
          "description": null,
          "wipLimit": null,
          "gates": null
        },
        {
          "name": "Review",
          "query": "issue.status!=Done and pr.status=open",
          "description": null,
          "wipLimit": null,
          "gates": null
        },
        {
          "name": "Merged",
          "query": "(pr.status=merged OR pr.status=closed) AND deployment.env!=DEV AND deployment.env!=QA AND deployment.env!=PROD and build.status!=success",
          "description": null,
          "wipLimit": null,
          "gates": null
        },
        {
          "name": "Build",
          "query": "build.status=success AND deployment.env!=DEV AND deployment.env!=QA AND deployment.env!=PROD",
          "description": null,
          "wipLimit": null,
          "gates": null
        }
      ]
    },

Pour de plus amples informations, reportez-vous à la référence au langage de requête DevOps.

Portes#

Les portes déterminent si des objets sont valides pour un contexte donné. On qualifie d'objets valides ceux qui franchissent la porte et d'objets non valides ceux qui ne la franchissent pas. Des objets valides peuvent s'afficher dans les chaînes de valeur. Pour être considéré comme valide, un objet doit respecter l'expression de requête DevOps de la porte.

Le fragment de code suivant montre une porte standard.

{
      "name": "Deployment",
      "description": null,
      "stages": [
        {
          "name": "Integrated",
          "query": "issue.status=\"Integrated\"",
          "description": null,
          "wipLimit": null,
          "gates": [
            {
              "name": "Unit Test",
              "description": null,
              "query": "metricDefinition=\"Unit Tests\" AND value.failed=0"
            }
          ]
        },

Règles de lien#

Les règles de lien définissent la manière dont les outils intégrés sont associés les uns aux autres. Lorsque des outils sont associés, les objets qui apparaissent dans la chaîne de valeur fournissent des informations et des liens aux outils associés. Vous pourriez, par exemple, lier un dispositif de suivi des problèmes à un outil de contrôle des sources.

Lorsque des liens sont établis, vous pouvez accéder à des informations à propos des outils liés à partir des particules affectées dans la chaîne de valeur. En général, vous pouvez définir des règles d'association pour tous les outils intégrés et définir plusieurs règles d'association dans une chaîne de valeur unique.

Métriques#

Vous pouvez communiquer des données d'indicateur à votre chaîne de valeur en interrogeant les données intégrées à IBM UrbanCode Velocity. Les données peuvent provenir d'intégrations de plug-in ou d'appels d'API REST provenant de clients externes. Les requêtes DQL (DevOps Query Language) peuvent être définies dans le fichier value\_stream.json.

Vous pouvez utiliser la définition d'indicateur Work Item Type par défaut comme modèle pour vos indicateurs.

Barre d'indicateurs#

Vous pouvez fournir des données d'indicateurs à des chaînes de valeur et afficher les données dans des graphiques et des histogrammes jointes à la chaîne de valeur. Pour activer la barre Indicateurs, ajoutez des définitions de metricsBar au fichier value_stream_name.json joint à la chaîne de valeur.

Matrice d'intégrations#

Vous fournissez des données provenant d'outils externes à des chaînes de valeur en définissant des objets d'intégration. Pour obtenir des informations sur les plug-ins pris en charge, voir Création d'intégrations de chaîne de valeur.

Sujet parent : Création de chaînes de valeur