定制私钥,参数和属性
使用 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_repos
,load_repo
,load_artifact
,list_artifacts
和 get_env
。
pipelinectl
app-repo
是在内部克隆并通过使用具有 app-repo
引用名称的 save_repo pipelinectl
接口添加到管道的缺省应用程序存储库。 如果从工具链模板设置管道,那么缺省存储库由存储库管道 UI 参数提供或由其工具链绑定名称选择。 使用 load_repo
命令可从保存的 app-repo
访问属性。
/config/
中的值
为了支持与较早版本的用户脚本兼容性,这些值将复制到 /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 变量:
路径 | 描述 |
---|---|
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")
定制完成阶段
完成阶段有三个步骤:
步骤 | 描述 |
---|---|
evaluate |
执行与收集日志文件,工件和证据并将其上载到证据锁定程序相关的任务的不可定制步骤。 |
prepare |
不可定制的步骤,用于设置运行定制完成阶段所需的工具。 |
finish |
执行 .one-pipeline-config.yaml 中提供的定制脚本。 |
可以通过两种方式确定此管道状态:
- 您可以从环境变量
PIPELINE_STATUS
获取管道运行的总体状态。 值可以是“已成功”,“已失败”或 "" (区分大小写)。PIPELINE_STATUS
来自底层的 Tekton 框架。 - 由于
evaluate
步骤从证据的角度对管道运行进行求值,因此此求值可能与PIPELINE_STATUS
中设置的值不同。 要根据证据评估来查看管道状态,请使用环境变量finish_evaluate_exit_code
。