YAML模式
DockerPush原生步骤的YAML模式如下:
- name:steps: - name: type: DockerPush configuration: #从bash继承所有标签;//www.si-fil.com/confluence/display/JFROG/Bash affinityGroup: targetRepository: #可能需要。必须是本地存储库。不支持虚拟存储库。forceXrayScan: # default false failOnScan: # default true autoPublishBuildInfo: # default false integrations: - name: # required inputSteps: - name: # required outputResources: - name: <图像2022世界杯阿根廷预选赛赛程资源> # optional - name: # required if autoPublishBuildInfo为true execution: onStart: - echo "Preparing for work…" onSuccess: - echo "Job well done!" onFailure:- echo "uh oh, something went wrong" onComplete: - echo " cleanup some stuff"
标签
的名字
一个字母数字标识步骤的字符串(允许使用下划线)。
类型
必须DockerPush
对于此步骤类型。
配置
指定步骤执行环境的所有配置选择。该步骤继承Bash/PowerShell步骤配置标记,包括这些相关的标签:
标签 |
使用的描述 |
必需的/可选 |
---|---|---|
affinityGroup |
必须指定与指定的相同的亲和性组字符串在之前的DockerBuild一步. | 可选 |
集成 |
必须指定一个Artifactory集成. | 要求 |
inputSteps |
一般情况下,DockerBuild建立图像的步骤。DockerBuild步骤必须始终在同一个亲和性组中,但其他步骤,如Bash或PowerShell,也允许在DockerBuild和DockerPush之间的同一个亲和性组中。 | 可能需要 |
output2022世界杯阿根廷预选赛赛程Resources |
可以指定一个图像资源。如果指定了一个 必须指定一个BuildInfo资源如果 |
可选 可能需要 |
此外,可以定义这些标记来支持步骤的本机操作:
从Bash派生的标记
标签 |
使用的描述 |
必需的/可选 |
---|---|---|
targetRepository |
Artifactory中Docker存储库的名称。使用JFrog CLI v1时需要,当管道配置为使用JFrog CLI v2时不需要。 必须是本地存储库。不支持虚拟存储库。 |
可能需要 |
forceXrayScan |
当 默认是 |
可选 |
failOnScan |
当设置为 默认是 |
可选 |
autoPublishBuildInfo |
当设置为 默认是 |
可选 |
执行
声明要在执行前和执行后阶段执行的shell命令序列集合:
标签 | 使用的描述 | 必需的/可选 |
---|---|---|
onStart |
要在本机操作之前执行的命令 | 可选 |
调用onSuccess |
在成功完成时执行的命令 | 可选 |
onFailure |
在完成失败时执行的命令 | 可选 |
onComplete |
在任何补全过程中执行的命令 | 可选 |
对象执行的操作onExecute
阶段是此步骤类型固有的,不能被重写。
例子
下面的例子展示了如何配置DockerPush步骤来推送Docker映像。
推送图像到Artifactory
将DockerBuild输入步骤创建的映像推到Artifactory。不触发扫描。
- 此示例需要Artifactory集成和一个GitHub集成.
- 本例中的管道DSL是可以在这个存储库在JFrogGitHub帐户。
- 有关完整教程,请参见管道示例:Docker构建和推送.
这个配置文件是模板化的,这样可以方便地自定义。值可以用值提供。yml文件。模板:true #需要本地模板valuesFilePath: ./values。—nam2022世界杯阿根廷预选赛赛程e: app_repo1 type: GitRepo configuration: gitProvider: {{. values . yml资源:gitIntegration}}路径:{{. values。gitRepositoryPath}}分支:包括:master - name: app_buildinfo1 type: BuildInfo configuration: sourceArtifactory: {{. values。artifactoryIntegration}} - name: app_promoted_buildinfo1 type: BuildInfo configuration: sourceArtifactory: {{. values . name: app_promoted_buildinfo1 type: BuildInfoartifactoryIntegration}}管道:—name: app_dev_pipeline步骤:—name: app_build type: DockerBuild configuration: affinityGroup: docker_group dockerFileLocation:。dockerFileName: Dockerfile dockerImageName: {{. values。artifactoryUrl}} / {{. values。sourceRepository}} / {{. values。imageName}} dockerImageTag: ${run_number} inputR2022世界杯阿根廷预选赛赛程esources: - name: app_repo integration: - name: {{. values . properties:artifactoryIntegration}} - name: app_push type: DockerPush configuration: affinityGroup: docker_group targetRepository: {{. values。sourceRepository}}集成:- name: {{. values。artifactoryIntegration }} inputSteps: - name: app_build - name: publish_app_build type: PublishBuildInfo configuration: affinityGroup: docker_group inputSteps: - name: app_push outputResources: - name: app_buildinfo
亲密团体
这延伸了DockerBuild例子,把这个形象推给Artifactory。注意,两个步骤中都指定了亲和性组。
pipeline:—name: demo_pipeline steps:—name: bld_image type: DockerBuild configuration: affinityGroup: dockerGroup dockerFileLocation:。dockerFileName: Dockerfile dockerImageName: docker.artprod.mycompany.com/gosvc #替换为您的完全合格的Docker注册表/映像名称dockerImageTag: ${run_number} dockerOptions:——build-arg build_number_env_variable=${run_number} inputResources: - name: gosvc_app integratio2022世界杯阿根廷预选赛赛程ns: - name: MyArtifactory - name: dockerPushStep type: DockerPush配置:affinityGroup: dockerGroup targetRepository: dockerRepo inputSteps: - name: bld_image outputResources: - name:outputBuildInfo集成:- name: MyArtifactory
发布生成信息,触发x射线扫描,更新输出图像资源
在这个例子中,发布构建信息、触发x射线扫描和更新输出Image资源被添加到前面的示例中。
pipeline:—name: demo_pipeline steps:—name: bld_image type: DockerBuild configuration: affinityGroup: dockerGroup dockerFileLocation:。dockerFileName: Dockerfile dockerImageName: docker.artprod.mycompany.com/gosvc #替换为您完全合格的Docker注册表/映像名称dockerImageTag: ${run_number} dockerOptions:——build-arg build_number_env_variable=${run_number} inputResources: - name: gosvc_app integration2022世界杯阿根廷预选赛赛程s: - name: MyArtifactory - name: dockerPushStep type: DockerPush配置:affinityGroup: dockerGroup targetRepository: dockerRepo autoPublishBuildInfo: true forceXrayScan: true inputSteps: - name:bld_image output2022世界杯阿根廷预选赛赛程Resources: - name: outputBuildInfo - name: outputImage integrations: - name: MyArtifactory
它是如何工作的
当您使用DockerPush管道中的原生步骤,它在后台执行以下功能:
- jfrog rt使用(将当前默认Artifactory配置设置为为集成而设置的配置
集成
) - restore_run_files(复制DockerBuild步骤中保存的构建信息)
- jfrog rt docker-push(将图像推到Artifactory)
- 构建-发布(如果
autoPublishBuildInfo
为真,发布构建信息) - write_output(如果
autoPublishBuildInfo
,更新BuildInfo的buildName和buildNumber) - write_output(如果有输出图像资源,更新图像imageTag)
- Jfrog rt build-scan(如果forceXrayScan是真的,触发扫描)
- Add_run_files(在运行状态下保存/更新构建信息,以便稍后发布步骤)