Propriétés et ressources de l'environnement des pipelines Tekton

Les informations et ressources suivantes sont disponibles par défaut pour un utilisateur d' IBM Cloud® Continuous Delivery Tekton PipelineRun.

PipelineRun annotations

Le tableau 1 décrit les annotations qui sont incluses dans un PipelineRun Tekton.

Annotations PipelineRun
Annotation d'exécution Description
devops.cloud.ibm.com/build-number Numéro de version du pipeline. Il représente le total cumulatif des exécutions de pipeline de tous les déclencheurs.
devops.cloud.ibm.com/listener Le Tekton associé au déclencheur qui eventlistener a lancé cette exécution du pipeline.
devops.cloud.ibm.com/pipeline-id ID unique du pipeline utilisé pour cette exécution.
devops.cloud.ibm.com/trigger-name Nom du déclencheur ayant initié cette exécution de pipeline.
devops.cloud.ibm.com/trigger-type Type du déclencheur ayant initié cette exécution de pipeline. Il peut s'agir de la valeur manual, timer, scm ou generic.
devops.cloud.ibm.com/triggered-by Utilisateur ayant initié le déclencheur. Cette valeur correspond à l'IBMId soit de l'utilisateur ayant cliqué sur Exécuter pour les déclencheurs manual, soit de l'utilisateur ayant enregistré le déclencheur en dernier pour les déclencheurs timer, soit de l'utilisateur ayant effectué l'action Git pour les déclencheurs scm. La valeur est vide pour les déclencheurs generic.
devops.cloud.ibm.com/pipeline-run-url URL de page des détails concernant cette exécution de pipeline.
devops.cloud.ibm.com/tekton-pipeline ID unique de cette exécution de pipeline.

Accès aux annotations

Vous pouvez accéder aux annotations à partir des tâches dans votre fichier yaml de définition de pipeline. L'exemple suivant montre comment accéder à l'annotation devops.cloud.ibm.com/build-number. Pour fournir cette annotation sous forme de variable d'environnement, remplacez-la par l'une des annotations d'exécution du tableau 1. annotations PipelineRun.

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: simple-task
spec:
  steps:
    - name: simple-step
      image: icr.io/continuous-delivery/pipeline/pipeline-base-image:2.69
      env:
        - name: BUILD_NUMBER
          valueFrom:
            fieldRef:
              fieldPath: metadata.annotations['devops.cloud.ibm.com/build-number']
      command: ["bash", "-c"]
      args:
        - echo $BUILD_NUMBER;
          echo "COMPLETED"

PipelineRun ConfigMap et Secret

La ressource PipelineRun Tekton de l’ Continuous Delivery crée des ConfigMap objets Secret spécifiques qui sont mis à la disposition de vos tâches. Le tableau suivant décrit chaque objet.

PipelineRun ConfigMaps et astuces
Objet Catégorie Description
environment-properties ConfigMap Contient toutes les propriétés non sécurisées du pipeline. Les clés correspondent aux noms des propriétés tels qu'ils sont définis dans la page Propriétés du pipeline de livraison.
secure-properties Secret Contient toutes les propriétés du pipeline sécurisé, y compris les Tool integration propriétés pour lesquelles le champ sélectionné contient une valeur sécurisée. Les clés correspondent aux noms des propriétés tels qu'ils sont définis dans la page Propriétés du pipeline de livraison.
event-parameters ConfigMap Contient les données relatives aux événements déclencheurs pour les types de déclencheurs generic scm et. La clé eventHeader contient les en-têtes HTTP de l’événement entrant, et la eventBody clé contient le corps de la charge utile de l’événement. Ceci ConfigMap est facultatif et n'est pas présent pour les timer déclencheurs ou manual.
toolchain ConfigMap Contient les fichiers de définition de la chaîne d'outils qui décrivent celle-ci et ses intégrations.

Lorsque vous accédez à un élément ConfigMap ou Secret, assurez-vous de localiser le nom d'objet et les références appropriés pour que votre pipeline s'exécute correctement.

Accès aux valeurs individuelles

Vous pouvez accéder à des paires clé-valeur individuelles dans un environnement Task. L'extrait de code suivant utilise le nom de propriété apikey sample (avec des propriétés sécurisées) et le nom de propriété environment property (avec des propriétés de texte). Ces noms de propriétés sont définis dans la page Propriétés du pipeline de livraison.

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: cm-echo-props
spec:
  steps:
    - name: cm-show-props
      image: icr.io/continuous-delivery/pipeline/pipeline-base-image:2.69
      env:
        - name: SECURE_VALUE
          valueFrom:
            secretKeyRef:
              name: secure-properties
              key: apikey
        - name: ENVIRONMENT
          valueFrom:
            configMapKeyRef:
              name: environment-properties
              key: environment
      command: ["/bin/bash", "-c"]
      args:
        - echo -e "environment from ConfigMap is >>";
          echo $ENVIRONMENT;
          echo "";
          echo -e "apikey from Secrets is >>";
          echo $SECURE_VALUE

Accès à l'ensemble des valeurs

Vous pouvez ajouter toutes les paires clé-valeur provenant de et ConfigMap Secret à votre environnement Task. L'exemple suivant monte également le event-parameters``ConfigMap en tant que volume pour accéder à l'en-tête et au corps de l'événement déclencheur. Comme n'est event-parameters présent que pour les déclencheurs generic et scm, le volume est marqué comme facultatif afin que la tâche ne se solde pas par un échec lors des exécutions timer déclenchées par ou manual.

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: cm-secrets-props
spec:
  steps:
    - name: cm-show-full-env
      image: icr.io/continuous-delivery/pipeline/pipeline-base-image:2.69
      envFrom:
        - configMapRef:
            name: environment-properties
        - secretRef:
            name: secure-properties
      volumeMounts:
        - mountPath: /event-parameters
          name: event-parameters
      command: ["/bin/bash", "-c"]
      args:
        - echo -e "The environment for this Step is ";
          env;
          echo "";
          echo -e "Event header is >>";
          cat /event-parameters/eventHeader || echo "No event header available";
          echo "";
          echo -e "Event body is >>";
          cat /event-parameters/eventBody || echo "No event body available"
  volumes:
    - name: event-parameters
      configMap:
        name: event-parameters
        optional: true

Dimensionnement des machines virtuelles des travailleurs gérés

Lorsque vous exécutez un pipeline à l’aide du pool de travailleurs gérés d’ IBM, un VM doté d’une mémoire par défaut spécifique est alloué. Bien que la plupart des tâches puissent être exécutées avec succès avec la mémoire fournie, certains pipelines nécessitent de la mémoire supplémentaire pour les tâches intensives.

Les utilisateurs peuvent spécifier un libellé sur leurs tâches pour indiquer si une tâche requiert plus (ou moins) de mémoire pour une tâche spécifique. Cette possibilité permet d'identifier la quantité spécifique de ressources qui sont nécessaires pour l'utilisation des ressources et les économies de coûts éventuelles.

Pour indiquer quel profil d’ VM doit être appliqué à une tâche spécifique au sein d’un pipeline Tekton, ajoutez le label runtimeClassName à la tâche en lui attribuant l’une des valeurs suivantes : VM. Si aucune étiquette n'est fournie, le profil par défaut VM est utilisé.

  • small: 2Gi
  • medium: 4Gi (valeur par défaut)
  • large: 8Gi

Exemple :

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: task1
  labels:
    runtimeClassName: medium
    and so on.

Vous pouvez également spécifier la même configuration dans le PipelineRun dans le cadre de TriggerTemplate. En spécifiant le runtimeClassName dans le PipelineRun, les utilisateurs peuvent sélectionner le profil d' VM qu'ils souhaitent utiliser sans modifier les définitions de tâches.

Exemple :

apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
  generateName: pipeline-run-
spec:
  pipelineRef:
    name: pipeline
  taskRunSpecs:
    - pipelineTaskName: task1
      taskPodTemplate:
        runtimeClassName: medium

Format de journal

Cette section décrit les caractéristiques et les fonctionnalités de la visionneuse de journaux fournie sur la page de détails PipelineRun, ainsi que le format de journal pris en charge pour tirer parti de ces caractéristiques.

Fonctionnalité de base

Le visualisateur de journaux prend en charge les codes de couleur ANSI et les styles de texte. Il détecte automatiquement les URL dans le contenu des journaux et les restitue sous forme de liens cliquables s'ouvrant dans une nouvelle fenêtre.

Barre d'outils

La barre d'outils affichée dans le visualisateur de journaux comprend un certain nombre de fonctions supplémentaires, notamment

  • maximiser : augmenter la surface disponible pour l'affichage du journal en masquant la liste des tâches et l'en-tête d'exécution. Cela permet à l'utilisateur de ne pas être distrait par d'autres parties de l'application et de se concentrer sur le contenu du journal.
  • les préférences de l'utilisateur : elles sont conservées localement dans le navigateur et appliquées à tous les journaux de l'application. Pour plus de détails, voir les sections suivantes.

Horodatages

IBM-les travailleurs gérés et les travailleurs privés dont la version de l'agent est égale ou supérieure à 0.20.5 produisent par défaut des lignes de journal précédées d'un horodatage. L'utilisateur peut afficher ou masquer ces horodatages dans le visualiseur de journaux en basculant l'option dans le menu des paramètres de la barre d'outils du visualiseur de journaux.

Les horodatages affichés sont localisés en fonction des paramètres du navigateur de l'utilisateur, la valeur brute de l'horodatage reçue du travailleur étant fournie sous forme d'infobulle au passage de la souris.

Niveaux de journalisation

Le visualisateur de journaux analyse les lignes de journaux pour détecter le niveau de journal associé et les décorer en conséquence pour faciliter la consommation des journaux. Le format pris en charge est le suivant.

<timestamp> ::<level>::<message>
  • timestamp est fourni par le travailleur
  • level est l'un des error, warning, notice, info debug,, trace
    • debug et trace les journaux sont masqués par défaut
    • toute ligne de journal sans level explicite est considérée comme info, mais n'affichera pas le badge de niveau de journal pour éviter la redondance dans l'interface utilisateur lorsque les utilisateurs n'utilisent pas le format de journal pris en charge
  • message est tout autre contenu de la ligne et peut contenir des codes ANSI pour le formatage, etc.

Par exemple, l'extrait suivant produirait une ligne de journal au niveau warning:

echo '::warning::Something that may require attention but is non-blocking…'

Les niveaux d'enregistrement affichés peuvent être modifiés via le menu des paramètres dans la barre d'outils de la visionneuse d'enregistrements.

Groupes de logs

Outre les niveaux de journalisation, le visualiseur de journaux permet également de créer des groupes de journaux. Le format pris en charge est le suivant.

<timestamp> ::group::<message>
…
<timestamp> ::endgroup::

Une commande group marque le début du groupe. Le contenu de message est affiché sous la forme d'un titre/résumé du groupe, accompagné d'un indicateur de l'état actuel du groupe (c'est-à-dire développé ou réduit). Un clic sur le résumé permet de basculer l'état du groupe.

Les groupes sont affichés par défaut dans l'état réduit, sauf si l'étape est toujours en cours lors de l'affichage des journaux. L'utilisateur peut développer ou réduire les groupes comme il le souhaite et leur état sera maintenu jusqu'à ce que l'utilisateur navigue vers une vue différente.

Les commandes group, endgroup et log level s'excluent mutuellement. Cependant, les journaux contenus dans un groupe peuvent utiliser les niveaux de journaux normalement.

L'imbrication de groupes n'est pas prise en charge. Une commande group mettra implicitement fin à tout groupe précédent non terminé.

Par exemple, l'extrait suivant produirait un groupe de journaux avec le résumé "Additional config" contenant un certain nombre de messages au niveau info:

echo '::group::Additional config'
echo 'This extends the base config'
echo '::info:: More info about the config…'
echo '::endgroup::'

En savoir plus sur les pipelines de distribution Tekton

Pour en savoir plus sur Tekton et Continuous Delivery, voir Tekton: A Modern Approach to Continuous Delivery.