签名过程
在管道的签名过程中:
- 管道的每次运行都会生成一个运行键。
- 在运行期间,所有工件(
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文件].
JSON模式定义了一个pipeinfo对象。对象由三个组件组成,它们总结了一次运行:
head.json
:包含管道的元数据,以及管道yaml文件的内容。info.json
:运行状态元数据。一步. json
:该步骤的元数据。
每一个. json
文件使用相应的.json.sig
签名文件。如果要查看json文件的内容,右键单击json文件,单击视图,如上图所示。
使用人工管道信息存储库
- 在默认情况下,将自动创建并使用人工管道信息存储库。删除它将导致存储库中的所有管道信息被删除,并将重新创建一个新的默认管道信息存储库。
- 只有管理员和项目管理员才能查看和导航此存储库。
清理政策
如果您有在Artifactory User Plugins中定义的现有清理策略,可以根据策略从本地存储库中删除工件,那么它们也会影响到Artifactory -pipe-info存储库,并且应该相应地更新。从清理策略中排除此存储库,以确保管道信息文件不会被删除。
查看元数据
当您成功构建管道时,该管道的构件和构建的元数据将显示在相应的存储库中Artifactory:
去| .工艺品|
管道选项卡只在单击文件时出现。
类似地,转到Artifactory |构建|
查看pipeinfo.json
一个pipeInfo.json
在Project/Pipeline命名空间下为每次运行生成文件。该文件捕获管道特定步骤的元数据,以及每个运行的详细物料清单(BOM)。管道信息包括名称、版本、类型、状态、时间戳、输入、输出、节点池等信息。该信息保存在运行状态在执行期间。运行完成后,将json文件上传到适当的存储库。
浏览pipeinfo.json
文件,将鼠标指针悬停在管道上,然后单击显示管道信息显示的图标。的内容pipeinfo.json
文件显示在json查看器中。
导航到步骤
将鼠标指针悬停在管道和c上舔的转到步骤显示的图标。这将引导您进入特定管道的特定运行的步骤视图我的管道.
存储和验证签名管道数据
本机的步骤
管道本机步骤自动存储有关其构建的构件的信息,以便稍后将其用作已签名管道验证的一部分。
这些步骤的PowerShell版本不支持签名管道特性。
以下本机步骤可以保存工件信息:
以下本机步骤可以验证已发布的工件:
通用的步骤
也可以只使用Bash步骤创建自己的签名管道。要实现这一点,请使用以下在执行时可用的实用程序函数来配置需要跟踪和验证的内容。
如果工件保存在一个Bash步骤中,则可以在后面的Bash步骤中对其进行验证。
YAML例子
2022世界杯阿根廷预选赛赛程资源:—name: signed_git类型:GitRepo配置:scmProvider: bbs路径:~test/myapp分支:包括:^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. js- save_artifact_info buildInfo summaryOutput. jsonjson——build-name=$JFROG_CLI_BUILD_NAME——build-number=$JFROG_CLI_BUILD_NUMBER -name: test_signed_stop步骤:-name: validate_info类型:Bash配置:inputResources: -name: signed_b2022世界杯阿根廷预选赛赛程uildinfo执行: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