Pipelines Tekton environnement propriétés et ressources

Les informations et ressources suivantes sont disponibles par défaut sur le site 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 site Tekton eventlistener qui est associé au déclencheur qui a initié l'exécution de ce 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 est l'IBMId de l'utilisateur qui a appuyé sur exécuter pour les déclencheurs manual, de l'utilisateur qui a sauvegardé le déclencheur en dernier pour les déclencheurs timer ou de l'utilisateur qui a 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 en tant que variable d'environnement, remplacez-la par l'une des annotations d'exécution du tableau 1. PipelineRun annotations.

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 Continuous Delivery Tekton PipelineRun crée une ConfigMap et une Secret spécifiques pour les propriétés de l'environnement. Les propriétés sécurisées sont disponibles dans le secure-properties Kubernetes Secret, y compris les propriétés Tool integration pour lesquelles la zone sélectionnée contient une valeur sécurisée. Des propriétés non sécurisées sont disponibles sur le site environment-properties Kubernetes ConfigMap. Les clés sont le nom du champ fourni dans l'interface utilisateur de création de pipeline.

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 l'exemple de nom de propriété apikey (avec des propriétés sécurisées) et le nom de propriété environment (avec des propriétés textuelles). 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 des éléments ConfigMap et Secret à votre environnement Task :

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
      command: ["/bin/bash", "-c"]
      args:
        - echo -e "The environment for this Step is ";
          env

Dimensionnement des machines virtuelles des travailleurs gérés

Lorsque vous exécutez un pipeline à l'aide du pool de noeuds worker géré IBM, une machine virtuelle avec une mémoire par défaut spécifique est allouée. 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 de machine virtuelle appliquer à une tâche spécifique dans un pipeline Tekton, ajoutez le libellé runtimeClassName à la tâche avec l'une des valeurs de machine virtuelle suivantes. Si aucun libellé n'est fourni, le profil de machine virtuelle par défaut 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 runtimeClassName dans PipelineRun, les utilisateurs peuvent sélectionner le profil de machine virtuelle qu'ils souhaitent utiliser sans modifier les définitions de tâche.

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 des 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.