Umgebungsparameter und Ressourcen von Tekton-Pipelines

Die folgenden Informationen und Ressourcen stehen einem IBM Cloud® Continuous Delivery von Tekton standardmäßig zur Verfügung PipelineRun.

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 Das Tekton, das eventlistener dem Trigger zugeordnet ist, der diesen Pipeline-Lauf ausgelöst 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 Triggern manual auf Ausführen geklickt hat, des Benutzers, der den Trigger zuletzt gespeichert hat, oder des Benutzers, der bei timer Triggern scm die Aktion Git ausgefü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 Ausführungsanmerkungen aus Tabelle 1. Anmerkungen 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"

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

Die Tekton-Ressource PipelineRun Continuous Delivery erstellt bestimmte Objekte ConfigMap``Secret, die Ihren Aufgaben zur Verfügung stehen. In der folgenden Tabelle werden die einzelnen Objekte beschrieben.

PipelineRun ConfigMaps und Geheimnisse
Object Art Beschreibung
environment-properties ConfigMap Enthält alle nicht sicheren Pipeline-Eigenschaften. Die Schlüssel sind die Eigenschaftsnamen, wie sie auf der Seite Eigenschaften der Bereitstellungspipeline definiert sind.
secure-properties Secret Enthält alle Eigenschaften der Secure Pipeline, einschließlich aller Eigenschaften Tool integration, für die das ausgewählte Feld einen Secure-Wert enthält. Die Schlüssel sind die Eigenschaftsnamen, wie sie auf der Seite Eigenschaften der Bereitstellungspipeline definiert sind.
event-parameters ConfigMap Enthält die Daten zu Triggerereignissen für die Triggertypen generic und scm. Der Schlüssel eventHeader enthält die HTTP-Header des eingehenden Ereignisses, und der Schlüssel eventBody enthält den Hauptteil der Ereignisdaten. Dies ConfigMap ist optional und fehlt bei manual oder Triggern timer.
toolchain ConfigMap Enthält die Toolchain-Definitionsdateien, die die Toolchain und ihre Integrationen beschreiben.

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. Der folgende Codeausschnitt verwendet den Beispieldatennamen property apikey name (mit sicheren Eigenschaften) und den Beispieldatennamen property environment name (mit Texteigenschaften). Diese Eigenschaftsnamen werden auf der Seite Eigenschaften der Bereitstellungspipeline 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önnen alle Schlüssel-Wert-Paare aus der ConfigMap und der Secret zu Ihrer Task Umgebung hinzufügen. Im folgenden Beispiel wird das ebenfalls als event-parameters``ConfigMap Volume eingebunden, um auf den Header und den Body des Trigger-Ereignisses zugreifen zu können. Da nur bei und scm generic Triggern vorhanden event-parameters ist, wird das Volumen als optional markiert, damit die Aufgabe bei durch oder manual ausgelösten timer Durchläufen nicht fehlschlägt.

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

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

Wenn Sie eine Pipeline mithilfe des IBM Managed Worker-Pools ausführen, wird ein VM mit einem bestimmten Standard-Arbeitsspeicher zugewiesen. 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 Aufgabe innerhalb einer Tekton-Pipeline angewendet werden soll, fügen Sie der Aufgabe das Label runtimeClassName mit einem der folgenden Werte für VM hinzu. Wenn keine Bezeichnung angegeben ist, wird das Standardprofil VM 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 die Angabe des runtimeClassName im können Benutzer das gewünschte VM-Profil auswählen PipelineRun, ohne die Aufgabendefinitionen ändern zu müssen.

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. Das unterstützte Format lautet wie folgt.

<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. Das unterstützte Format lautet wie folgt.

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