签名过程
在管道的签名过程中:
- 为管道的每次运行生成一个运行键。
- 在运行期间,所有工件(
pipeInfo.json
)以私钥签署。 - 私钥在运行结束时被丢弃。
- 生成工件的运行的元数据作为工件的标记存储。
在验证阶段,使用公钥对签名进行验证。
对于每次运行,包含全面元数据(*.json)的文件和相应的签名文件(*.json.sig)被上传到Artifactory。这提供了一种跟踪管道的整个路径的方法。现在,除了交叉引用pipeInfo之外,任何需要验证的进程都可以验证这一点。
Pipe-Info库
管道信息存储库,就像Build-Info库,是每个项目创建的本地存储库,并存储每个管道的所有元数据。
每当pipeline向Artifactory上传一个新的构建时,它的pipeinfo json文件将自动部署到默认的artifactory-pipe-info存储库或< project_key > -pipe-info存储库。不属于任何项目的管道构件存储在artifactory-pipe-info属于特定项目的存储库和管道构件存储在< project_key > -pipe-info存储库。
查看pipe-info库
要查看管道信息存储库,请从应用程序模块,点击Artifactory |工件然后单击artifactory-pipe-info/< project_key >-pipe-info存储库。
Artifactory自动将json文件放入管道信息存储库中,使用以下结构:[pipeline-name]→[branch]→[run-rumber]→[pipe-info files].
JSON模式定义了一个pipeinfo对象。该对象由三个组件组成,概括了一次运行:
head.json
:包含关于管道的元数据,以及管道yaml文件的内容。info.json
:包含运行状态的元数据。一步. json
:包含该步骤的元数据。
每一个. json
文件与相应的.json.sig
签名文件。要查看json文件的内容,右键单击该文件,单击视图,如上图所示。
使用人工管道信息存储库
- 默认情况下,将自动创建和使用手工管道信息存储库。删除它将导致存储库中的所有管道信息被删除,并将重新创建一个新的默认管道信息存储库。
- 只有管理员和项目管理员可以查看和导航此存储库。
清理政策
如果您有已经存在的清理策略(在Artifactory User Plugins中定义),它会根据策略从本地存储库中删除工件,那么它们也会影响到工件管道信息存储库,并且应该相应地更新。从清理策略中排除此存储库,以确保管道信息文件不被删除。
查看元数据
当您成功构建了管道时,该管道的构件和构建的元数据将显示在相应的存储库中Artifactory:
去工艺品|
管道选项卡仅在单击文件时出现。
同样的,去Artifactory |构建|
查看pipeinfo.json
一个pipeInfo.json
在Project/Pipeline命名空间下的每次运行都会生成。该文件捕获管道的特定步骤的元数据,以及每次运行的详细材料清单(BOM)。管道信息包括名称、版本、类型、状态、时间戳、输入、输出、nodepool等信息。该信息保存在运行状态在执行期间。运行完成后,json文件被上传到适当的存储库。
查看pipeinfo.json
文件中,将鼠标指针悬停在管道上并单击显示管信息图标出现。的内容pipeinfo.json
文件显示在json查看器中。
导航到步骤
将鼠标指针悬停在管道和c上舔的去一步图标出现。这将把您带到特定管道的特定运行的步骤视图我的管道.
存储和验证已签名管道数据
本机的步骤
管道本机步骤自动存储关于它们所构建的构件的信息,以便在以后作为已签名管道验证的一部分使用。
这些步骤的PowerShell版本不支持签名管道特性。
以下本地步骤可以保存工件信息:
以下本地步骤可以验证已发布的构件:
通用的步骤
还可以只使用Bash步骤创建自己的签名管道。要实现这一点,可以使用以下在执行时可用的实用程序函数来配置需要跟踪和验证的内容。
如果工件在一个Bash步骤中保存,则可以在后面的Bash步骤中对其进行验证。
YAML例子
2022世界杯阿根廷预选赛赛程资源:—name: signed_git类型:GitRepo配置:scmProvider: bbs路径:~test/myapp分支:include: ^master$—name: signed_buildinfo类型:BuildInfo配置:sourceArtifactory: my_art管道:—name: test_signed_start步骤:—name: create_info类型:Bash配置:inputResources:—name: signed_git集成:—name: my_art outputResources:—name: signed_buildinfo执行:onExecute:—cd $res_signed_git_resourcePath - jfrog rt upload server.js - jfrog rt build-collect-environment - jfrog rt build-publish——detail -summary $JFROG_CLI_BUILD_NAME $JFROG_CLI_BUILD_NUMBER > summaryOutput。- save_artifact_info buildInfo summaryOutput。——build-name=$JFROG_CLI_BUILD_NAME——build-number=$JFROG_CLI_BUILD_NUMBER -name: test_signed_stop步骤:-name: validate_info类型:Bash配置:inputResources: -name: signed_build2022世界杯阿根廷预选赛赛程info执行:onExecute: - response=$(validate_artifact buildInfo——build-name ${res_signed_buildinfo_buildName}——build-number ${res_signed_buildinfo_buildNumber}) - validateResult=$(echo "$response" | jq '.result') - if ["$validateResult" != "true"];然后返回"failed validation" &&退出1;fi