Eigenschaften und Ressourcen der Tekton-Pipelines-Umgebung

Die folgenden Informationen und Ressourcen sind standardmäßig für IBM Cloud® Continuous Delivery Tekton PipelineRun verfügbar.

PipelineRun Anmerkungen

In Tabelle 1 werden die Annotationen beschrieben, die in einem Tekton PipelineRun enthalten sind.

Annotationen für Pipelineausführungen
Ausführungsannotation Beschreibung
devops.cloud.ibm.com/build-number Die Buildnummer für die Pipeline. Diese Nummer stellt die kumulative Gesamtzahl der Pipelineausführungen aller Auslöser dar.
devops.cloud.ibm.com/listener Die Tekton eventlistener, die dem Auslöser zugeordnet ist, der diesen Pipelinelauf initiiert hat.
devops.cloud.ibm.com/pipeline-id Die eindeutige ID der Pipeline, die für diese Ausführung verwendet wird.
devops.cloud.ibm.com/trigger-name Der Name des Auslösers, der diese Pipelineausführung initiiert hat.
devops.cloud.ibm.com/trigger-type Der Typ des Auslösers, der diese Pipelineausführung initiiert hat. Mögliche Typen: manual, timer, scm oder generic.
devops.cloud.ibm.com/triggered-by Der Benutzer, der den Auslöser initiiert hat. Dieser Wert ist die IBMId entweder des Benutzers, der bei manual Auslösern auf " run" gedrückt hat, des Benutzers, der den Auslöser bei timer Auslösern zuletzt gespeichert hat, oder des Benutzers, der die Aktion Git bei scm Auslösern durchgeführt hat. Bei Auslösern des Typs generic ist dieser Wert leer.
devops.cloud.ibm.com/pipeline-run-url Die URL der Detailseite für diese Pipelineausführung.
devops.cloud.ibm.com/tekton-pipeline Die eindeutige ID dieser Pipelineausführung.

Annotationen aufrufen

Sie können Annotationen über die Tasks in der YAML-Datei Ihrer Pipelinedefinition aufrufen. Das folgende Beispiel veranschaulicht das Aufrufen der Annotation devops.cloud.ibm.com/build-number. Um diese Anmerkung als Umgebungsvariable bereitzustellen, ersetzen Sie sie durch eine der Laufanmerkungen aus Tabelle 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"

Konfigurationszuordnung (ConfigMap) und geheimer Schlüssel (Secret) für Pipelineausführungen

Die Ressource Continuous Delivery Tekton PipelineRun erstellt eine spezifische ConfigMap und Secret für Umgebungseigenschaften. Sichere Eigenschaften sind im geheimen Kubernetes-Schlüssel (secure-properties) Secret verfügbar, einschließlich aller Tool integration-Eigenschaften, für die das ausgewählte Feld einen sicheren Wert enthält. Nicht sichere Eigenschaften sind unter environment-properties Kubernetes ConfigMap zu finden. Die Schlüssel sind die Namen der Felder, die in der Pipeline-Authoring-Benutzeroberfläche bereitgestellt werden.

Stellen Sie beim Aufrufen einer Konfigurationszuordnung (ConfigMap) oder eines geheimen Schlüssels (Secret) sicher, dass Sie den korrekten Objektnamen und die entsprechenden Referenzen verwenden, damit die Pipeline erfolgreich ausgeführt werden kann.

Einzelne Werte aufrufen

Sie können einzelne Schlüsselwerte innerhalb einer Task aufrufen. Das folgende Codeschnipsel verwendet das Beispiel apikey property name (mit sicheren Eigenschaften) und environment property name (mit Texteigenschaften). Diese Eigenschaftsnamen werden auf der Seite Eigenschaften der Lieferpipeline festgelegt.

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

Alle Werte aufrufen

Sie könne alle Schlüssel-Wert-Paare aus ConfigMap und Secret zu Ihrer Task-Umgebung hinzufügen:

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

Größenbestimmung für virtuelle Maschinen von Managed Workern

Wenn Sie eine Pipeline mithilfe des IBM Managed Worker-Pools ausführen, wird eine VM mit einem bestimmten Standardspeicher zugeordnet. Obwohl die meisten Aufträge mit dem zur Verfügung stehenden Speicher erfolgreich ausgeführt werden können, benötigen bestimmte Pipelines für intensive Aufgaben zusätzlichen Speicher.

Benutzer können eine Bezeichnung für ihre Tasks angeben, um anzugeben, ob eine Task mehr (oder weniger) Speicher für eine bestimmte Task benötigt. Mit dieser Funktion können Sie die bestimmte Menge an Ressourcen ermitteln, die für die Ressourcennutzung und eventuelle Kosteneinsparungen erforderlich sind.

Um anzugeben, welches VM-Profil auf eine bestimmte Task in einer Tekton-Pipeline angewendet werden soll, fügen Sie der Task die Bezeichnung runtimeClassName mit einem der folgenden VM-Werte hinzu. Wenn keine Bezeichnung angegeben wird, wird das VM-Standardprofil verwendet.

  • small: 2Gi
  • medium: 4Gi (Standardwert)
  • large: 8Gi

Zum Beispiel:

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

Sie können dieselbe Konfiguration auch im PipelineRun als Teil von TriggerTemplate angeben. Durch Angabe von runtimeClassName im PipelineRun können Benutzer das VM-Profil auswählen, das sie verwenden möchten, ohne die Taskdefinitionen zu ändern.

Zum Beispiel:

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

Protokollformat

In diesem Abschnitt werden die Merkmale und Funktionen des Protokoll-Viewers beschrieben, der auf der Detailseite PipelineRun zur Verfügung steht, sowie das unterstützte Protokollformat, um diese Merkmale zu nutzen.

Grundlegende Funktionen

Der Protokoll-Viewer unterstützt ANSI-Farbcodes und Textstile und erkennt automatisch URLs im Protokollinhalt und stellt sie als anklickbare Links dar, die sich in einem neuen Fenster öffnen.

Symbolleiste

Die im Protokoll-Viewer angezeigte Symbolleiste enthält eine Reihe zusätzlicher Funktionen, darunter:

  • maximierung: Vergrößerung des für die Protokollanzeige verfügbaren Bereichs durch Ausblenden des Aufgabenplans und des Laufkopfs. So kann der Benutzer Ablenkungen durch andere Teile der App ausschalten und sich auf den Inhalt des Protokolls konzentrieren.
  • benutzereinstellungen: Diese werden lokal im Browser gespeichert und auf alle Protokolle in der Anwendung angewendet. Weitere Details finden Sie in den folgenden Abschnitten.

Zeitmarken

IBM-verwaltete Worker und private Worker mit der Agentenversion 0.20.5 oder höher erzeugen standardmäßig Protokollzeilen mit vorangestelltem Zeitstempel. Der Benutzer kann diese Zeitstempel in der Protokollanzeige ein- oder ausblenden, indem er die Option im Einstellungsmenü in der Symbolleiste der Protokollanzeige umschaltet.

Die angezeigten Zeitstempel werden auf der Grundlage der Browsereinstellungen des Benutzers lokalisiert, wobei der vom Worker empfangene Rohwert des Zeitstempels als Tooltip beim Hovern angezeigt wird.

Protokollebenen

Der Protokoll-Viewer analysiert die Protokollzeilen, um die zugehörige Protokollstufe zu erkennen, und dekoriert sie entsprechend, um den Protokollverbrauch zu erleichtern. Die folgenden Formate werden unterstützt.

<timestamp> ::<level>::<message>
  • timestamp wird vom Arbeitnehmer bereitgestellt
  • level ist einer von error, warning, notice, info, debug, trace
    • debug und trace Protokolle sind standardmäßig ausgeblendet
    • jede Protokollzeile ohne explizites level wird als info betrachtet, zeigt aber nicht den Loglevel-Badge an, um Redundanz in der Benutzeroberfläche zu vermeiden, wenn die Benutzer nicht das unterstützte Protokollformat verwenden
  • message ist jeder andere Inhalt in der Zeile und kann ANSI-Codes für die Formatierung usw. enthalten.

Der folgende Ausschnitt würde zum Beispiel eine Protokollzeile auf der Ebene warning ausgeben:

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

Die angezeigten Protokollebenen können über das Einstellungsmenü in der Symbolleiste des Protokoll-Viewers geändert werden.

Log-Gruppen

Zusätzlich zu den Protokollebenen unterstützt der Protokoll-Viewer auch klappbare Gruppen innerhalb der Protokolle. Die folgenden Formate werden unterstützt.

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

Der Befehl group markiert den Beginn der Gruppe. Der Inhalt von message wird als Titel/Zusammenfassung der Gruppe zusammen mit einem Indikator für den aktuellen Zustand der Gruppe (d.h. erweitert oder reduziert) angezeigt. Wenn Sie auf die Zusammenfassung klicken, wird der Status der Gruppe umgeschaltet.

Gruppen werden standardmäßig im zusammengeklappten Zustand dargestellt, es sei denn, der Schritt ist noch im Gange, wenn die Protokolle angezeigt werden. Der Benutzer kann die Gruppen nach Belieben erweitern oder reduzieren, und ihr Zustand wird beibehalten, bis der Benutzer zu einer anderen Ansicht navigiert.

Log-Gruppen können nicht mit Log-Levels in derselben Zeile gemischt werden, die Befehle group, endgroup und Log-Levels schließen sich gegenseitig aus. Die in einer Gruppe enthaltenen Protokolle können jedoch wie üblich die Protokollebenen verwenden.

Die Verschachtelung von Gruppen wird nicht unterstützt. Ein group-Befehl beendet implizit jede zuvor nicht beendete Gruppe.

Der folgende Ausschnitt würde zum Beispiel eine Protokollgruppe mit der Zusammenfassung "Additional config" ausgeben, die eine Reihe von Meldungen auf der Ebene info enthält:

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

Weitere Informationen zu Tekton-Delivery Pipelines

Weitere Informationen zu Tekton und Continuous Deliveryfinden Sie unter Tekton: A Modern Approach to Continuous Delivery.