云客户?
开始免费>
升级MyJFrog >
云有什么新鲜事>





概述

DockerPush原生步骤将Docker映像推到Docker注册表中。


  • 目前,只支持Artifactory中的Docker注册表。
  • DockerBuild和DockerPush步骤必须分配给相同的affinityGroup共享状态。如果不是,DockerBuild的输出对DockerPush是不可用的。如欲了解更多有关affinityGroup看到管道的步骤

Docker构建和推送快速入门

Docker构建和推送快速入门类的管道定义DockerBuild和DockerPush原生步骤来构建一个Docker Image,把它推到Artifactory,然后发布BuildInfo。

页面内容


YAML模式

DockerPush原生步骤的YAML模式如下:

DockerPush
- 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

可以指定一个图像资源。如果指定了一个imageTag属性将使用dockerImageTagDockerBuild的一步。

必须指定一个BuildInfo资源如果autoPublishBuildInfo被设置为真正的.如果JFROG_CLI_BUILD_NAMEJFROG_CLI_BUILD_NUMBER设置为管道或输入的环境变量DockerBuildstep,该名称和/或编号用于输出BuildInfo。否则,默认的buildName而且buildNumberpipeline_name美元而且run_number美元分别。

可选

可能需要


此外,可以定义这些标记来支持步骤的本机操作:

从Bash派生的标记

的所有本机步骤都派生自Bash的一步。这意味着所有步骤共享来自Bash的相同的基本标记集,而本机步骤有自己的附加标记以及支持该步骤的特定功能的标记。所以熟悉这个很重要Bash步骤定义,因为它是所有其他步骤定义的核心。

标签

使用的描述

必需的/可选
targetRepository

Artifactory中Docker存储库的名称。使用JFrog CLI v1时需要,当管道配置为使用JFrog CLI v2时不需要。

必须是本地存储库。不支持虚拟存储库。

可能需要
forceXrayScan

真正的,强制扫描推送的图像JFrog x光

默认是

可选
failOnScan

当设置为真正的,w当x光策略规则失败的构建复选框,则x射线扫描失败将导致该步骤失败。

默认是真正的

可选
autoPublishBuildInfo

当设置为真正的,使用Docker映像发布构建信息。

默认是

可选


执行

声明要在执行前和执行后阶段执行的shell命令序列集合:

标签 使用的描述 必需的/可选
onStart 要在本机操作之前执行的命令 可选
调用onSuccess 在成功完成时执行的命令 可选
onFailure 在完成失败时执行的命令 可选
onComplete 在任何补全过程中执行的命令 可选


对象执行的操作onExecute阶段是此步骤类型固有的,不能被重写。


例子

下面的例子展示了如何配置DockerPush步骤来推送Docker映像。

推送图像到Artifactory

将DockerBuild输入步骤创建的映像推到Artifactory。不触发扫描。

DockerPush
这个配置文件是模板化的,这样可以方便地自定义。值可以用值提供。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。注意,两个步骤中都指定了亲和性组。

DockerPush
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资源被添加到前面的示例中。

DockerPush
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(在运行状态下保存/更新构建信息,以便稍后发布步骤)
  • 没有标签
版权所有©2022 JFrog有限公司