IBM Cloud Docs
定制私钥,参数和属性

定制私钥,参数和属性

使用 pipelinectl 命令 可在运行时从管道读取或写入数据。 您可以通过 pipelinectl 接口读写私钥,变量,存储库数据,工件数据和证据结果工件 (例如测试结果文件)。

您不需要为脚本或基本映像安装 pipelinectl 工具,参考管道会为脚本上下文提供二进制文件。

访问管道环境私钥和属性

可通过 pipelinectl 访问环境属性和私钥 (在管道 UI 上定义):

# if you set my_config_value on the UI, it's accessible via `get_env`
my_config_value=$(get_env my_config_value)

您可以使用 set_env 来设置其他变量:

set_env my_config_value "some value"

# later on, even in another stage
my_config_value=$(get_env my_config_value)

这些值不会持久存储,它们的作用域限定为单个管道运行。

示例

您可以通过将必需参数添加到管道 UI,为自己的构建创建 Artifactory 认证凭证:

     my-artifactory-email
    my-artifactory-user
    my-artifactory-password
    my-artifactory-url

当这些参数在管道中可用时,您可以在用户脚本中访问这些参数,并创建 Docker 认证 JSON 文件。 例如:

kubectl create secret docker-registry regcred \
  --o json \
  --dry-run=client \
  --docker-server="$(get_env my-artifactory-url)" \
  --docker-username="$(get_env my-artifactory-user)" \
  --docker-email="$(get_env my-artifactory-email)" \
  --docker-password="$(get_env my-artifactory-password)" \
   | jq -r '.data[".dockerconfigjson"]'

{"auths":{"us.icr.io":{"username":"user@ibm.com","password":"secret-password","email":"user@ibm.com","auth":"dXNlckBpYm0uY29tOnNlY3JldC1wYXNzd29yZA=="}}}

定制脚本的参数

除了管道环境变量和私钥外,还为用户脚本阶段提供了这些参数值。

您可以在用户脚本中使用 pipelinectl 命令来访问存储库,工件,文件和环境变量。 使用以下方法: list_reposload_repoload_artifactlist_artifactsget_env

pipelinectl

app-repo 是在内部克隆并通过使用具有 app-repo 引用名称的 save_repo pipelinectl 接口添加到管道的缺省应用程序存储库。 如果从工具链模板设置管道,那么缺省存储库由存储库管道 UI 参数提供或由其工具链绑定名称选择。 使用 load_repo 命令可从保存的 app-repo 访问属性。

/config/ 中的值

为了支持与较早版本的用户脚本兼容性,这些值将复制到 /config/。 因为这些文件的可用性取决于管道上下文,所以在使用它们的值之前,请确保它们可用。

表 2。config"
路径 描述
/config/api-key 所复制的 ibmcloud-api-key 的值,用于与较早版本的脚本兼容。
/workspace/git-token 在管道开头获取的 Git 令牌,用于与较早版本的脚本兼容。
/config/environment inventory 的部署目标环境。
/config/deployment-delta-path 包含部署增量的 JSON 文件的路径。
/config/inventory-path 库存存储库内容的路径。
/config/git-branch 应用程序存储库的当前检出 Git 分支。
/config/git-commit 已检出应用程序存储库的最新 Git 落实。
/config/repository-url 应用程序存储库 URL。
/config/inventory-url 库存存储库 URL。
/config/image 包含映像的注册表,名称空间,名称和摘要的已构建 Docker 映像工件。
/config/artifact 包含映像的注册表,名称空间,名称和摘要的已构建 Docker 映像工件。
/config/signature 图像工件特征符。

这些值将分阶段停止,并通过 pipelinectl 替换为阶段 I/O 接口。

环境变量

下表包含管道提供的定制脚本阶段上下文的缺省 ENV 变量:

表 3. 环境变量
路径 描述
BUILD_NUMBER Tekton 管道构建号。
PIPELINE_CONFIG_PATH 管道脚本库的根目录的路径。
PIPELINE_CONFIG_REPO_PATH 克隆管道 config-repo 的目录。
PIPELINE_RUN_NAME Tekton 管道运行名称。
PIPELINE_RUN_ID Tekton 管道运行标识。
PIPELINE_RUN_URL Tekton 管道运行 URL。
PIPELINE_ID Tekton 管道标识。
STAGE 用户脚本阶段。
TOOLCHAIN_DATA_PATH 工具链数据路径 /toolchain/toolchain.json 文件。
TRIGGER_TYPE 管道触发器类型。
TRIGGER_NAME 管道触发器名称。
TRIGGERED_BY 有关触发管道的人员的信息。 此值可以是电子邮件地址或时间触发的管道运行。
WORKSPACE 共享工作空间的路径。
PIPELINE_STATUS 管道运行的状态。 可以是“已成功”,“已失败”或空白。PIPELINE_STATUS 仅在完成阶段可用
INVENTORY_URL 库存存储库 URL。
EVIDENCE_LOCKER_URL 证据存储库 URL。
INCIDENT_ISSUES_URL 问题的存储库 URL。

您可以在任何脚本中访问这些环境变量,例如 ${PIPELINE_ID}

从定制脚本访问工具链数据

您可以从管道在存储在 TOOLCHAIN_DATA_PATH 环境变量中的路径上提供的 toolchain.json file 中读取工具链数据。 您还可以使用工具链集成和 jsonpath,并以与任何其他变量相同的方式在 /config 中访问它们。 或者,您可以使用具有相同效果的 get_env

用法示例

TOOLCHAIN_CONFIG_JSON="$(get_env TOOLCHAIN_CONFIG_JSON)"
toolchain_id=$(jq -r '.toolchain_guid' "$TOOLCHAIN_CONFIG_JSON")

共享工作空间

由于这些定制脚本在同一工作空间中运行,因此您可以通过将数据写入文件,然后在其他任务中读取数据来在它们之间传递数据。 此工作空间安装在 $WORKSPACE 变量中提供的路径上。

用法示例

编写:

echo -n "$DIGEST" > "${WORKSPACE}"/image-digest

正在读取:

image_digest=$(cat "${WORKSPACE}"/image-digest)

定制完成阶段

完成阶段有三个步骤:

表 4. 完成阶段中的步骤
步骤 描述
evaluate 执行与收集日志文件,工件和证据并将其上载到证据锁定程序相关的任务的不可定制步骤。
prepare 不可定制的步骤,用于设置运行定制完成阶段所需的工具。
finish 执行 .one-pipeline-config.yaml 中提供的定制脚本。

可以通过两种方式确定此管道状态:

  1. 您可以从环境变量 PIPELINE_STATUS 获取管道运行的总体状态。 值可以是“已成功”,“已失败”或 "" (区分大小写)。PIPELINE_STATUS 来自底层的 Tekton 框架。
  2. 由于 evaluate 步骤从证据的角度对管道运行进行求值,因此此求值可能与 PIPELINE_STATUS 中设置的值不同。 要根据证据评估来查看管道状态,请使用环境变量 finish_evaluate_exit_code