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.
| 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.
| 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: 2Gimedium: 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>
timestampest fourni par le travailleurlevelest l'un deserror,warning,notice,infodebug,,tracedebugettraceles journaux sont masqués par défaut- toute ligne de journal sans
levelexplicite est considérée commeinfo, 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
messageest 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.