Tekton pipelines 環境屬性與資源

依預設,IBM Cloud® Continuous Delivery Tekton PipelineRun 可以使用下列資訊和資源。

PipelineRun 註釋

表 1 說明 Tekton PipelineRun 中包含的註釋。

PipelineRun註釋
執行註釋 說明
devops.cloud.ibm.com/build-number 管線的建置號碼。 此數目是來自所有觸發程式的管線執行累加總計。
devops.cloud.ibm.com/listener 對映至起始此管線執行之觸發程式的 Tekton eventlistener
devops.cloud.ibm.com/pipeline-id 用於此執行的管線唯一 ID。
devops.cloud.ibm.com/trigger-name 起始此管線執行的觸發程式名稱。
devops.cloud.ibm.com/trigger-type 起始此管線執行的觸發程式類型。 類型可以是 manualtimerscmgeneric
devops.cloud.ibm.com/triggered-by 起始觸發程式的使用者。 此值是按下 run for manual 觸發程式之使用者、前次儲存 timer 觸發程式之觸發程式的使用者,或對 scm 觸發程式執行 Git 動作之使用者的 IBMId。 對於 generic 觸發程式,此值是空的。
devops.cloud.ibm.com/pipeline-run-url 此管道執行的詳細資料頁面 URL。
devops.cloud.ibm.com/tekton-pipeline 此管線執行的唯一 ID。

存取註釋

您可以從管線定義 YAML 檔案內的作業存取註釋。 下列範例顯示如何存取 devops.cloud.ibm.com/build-number 註釋。 若要提供該註釋作為環境變數,請將它取代為表格 1 中的其中一個執行註釋。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 ConfigMapSecret

Continuous Delivery Tekton PipelineRun 資源會為環境內容建立特定的 ConfigMapSecret。 安全內容在 secure-properties Kubernetes Secret 中可用,包括所選欄位包含安全值的任何 Tool integration 內容。 environment-properties Kubernetes ConfigMap 中提供未受保護的內容。 索引鍵是管線編寫使用者介面中所提供的欄位名稱。

當您存取 ConfigMapSecret 時,請確定您找到正確的物件名稱及參照,以便管線可以順利完成。

存取個別值

您可以在 Task 內存取個別索引鍵值。 下列程式碼 Snippet 使用範例 apikey 內容名稱 (含安全內容) 和 environment 內容名稱 (含文字內容)。 這些內容名稱設定在 Delivery Pipeline「內容」頁面中。

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

存取所有值

您可以將 ConfigMapSecret 中的所有鍵值組新增至 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

託管工作執行緒虛擬機器大小調整

當您使用 IBM Managed Worker 儲存區執行管線時,會配置具有特定預設記憶體的 VM。 雖然大多數工作都能使用所提供的記憶體成功執行,但某些管道需要額外的記憶體才能執行密集型任務。

使用者可以在其作業上指定標籤,以指出作業是否需要特定作業的更多 (或更少) 記憶體。 此能力可識別所需資源的特定數量,以利於資源使用及最終節省成本。

若要指出要套用至 Tekton 管線內特定作業的 VM 設定檔,請將 runtimeClassName 標籤新增至具有下列其中一個 VM 值的作業。 如果未提供標籤,則會使用預設 VM 設定檔。

  • small: 2Gi
  • medium: 4Gi (預設值)
  • large: 8Gi

例如:

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

您也可以在 PipelineRun 中指定相同的配置作為 TriggerTemplate 的一部分。 透過在 PipelineRun 中指定 runtimeClassName,使用者可以選取要使用的 VM 設定檔,而無需變更作業定義。

例如:

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

日誌格式

本節說明 PipelineRun 詳細資訊頁面提供的日誌檢視器的特性和功能,以及利用這些特性的支援日誌格式。

基本功能

日誌檢視器支援 ANSI 顏色碼和文字樣式,並會自動偵測日誌內容中的 URL,並將其顯示為可點選的連結,在新視窗中開啟。

工具列

日誌檢視器中顯示的工具列包含許多附加功能,包括

  • 最大化:透過隱藏工作清單和執行標頭,增加日誌檢視器的可用區域。 這可讓使用者排除應用程式其他部分的干擾,專注於記錄內容。
  • 使用者偏好設定:這些偏好設定會持久存在本機瀏覽器中,並應用於應用程式中的所有記錄。 如需詳細資訊,請參閱以下章節。

時間戳記

IBM-管理的工作人員,以及使用代理程式 0.20.5 或更新版本的私有工作人員,預設會產生以時間戳為前綴的日誌行。 使用者可以在日誌檢視器工具列的設定功能表中切換選項,在日誌檢視器中顯示或隱藏這些時間戳記。

顯示的時間戳會根據使用者的瀏覽器設定進行本地化,從 Worker 接收的原始時間戳值會在懸停時以工具提示的方式提供。

記載層次

日誌檢視器會解析日誌行,以偵測相關的日誌層級,並據此對其進行裝飾,以幫助日誌的消耗性。 支援的格式如下。

<timestamp> ::<level>::<message>
  • timestamp 由工作人員提供
  • level 是其中之一 errordebug``warning``notice``info trace
    • debug 日誌 trace 預設為隱藏狀態
    • 任何沒有明確 level 的日誌行都會被視為 info,但不會顯示日誌等級徽章,以避免使用者不使用支援的日誌格式時,使用者介面出現冗餘
  • message 是行上的任何其他內容,可能包含格式化等的 ANSI 代碼。

例如,以下片段將輸出 warning 層級的日誌行:

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

顯示的日誌層級可透過日誌檢視器工具列上的設定功能表變更。

記錄群組

除了日誌層級外,日誌檢視器也支援日誌內的可摺疊群組。 支援的格式如下。

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

group 指令標誌著群組的開始。 message 的內容會顯示為群組的標題/摘要,以及群組目前狀態的指標 (即已展開或已摺疊)。 按一下摘要將切換該群組的狀態。

除非檢視記錄時步驟仍在進行中,否則群組預設呈現在折疊狀態。 使用者可以依需要展開或收納群組,而群組的狀態將維持不變,直到使用者導覽到不同的檢視為止。

日誌群組不能與日誌層級混合在同一行,groupendgroup 和日誌層級指令是互斥的。 但是,包含在群組中的日誌可以正常使用日誌層級。

不支援嵌套群組。 group 指令會隱含終止任何先前未終止的群組。

例如,以下片段將輸出一個摘要為「附加組態」的日誌群組,其中包含 info 層級的許多訊息:

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

進一步瞭解 Tekton Delivery Pipeline

若要進一步瞭解 Tekton 及 Continuous Delivery,請參閱 Tekton: A Modern Approach to Continuous Delivery