YAML模式
DockerBuild原生步骤的YAML模式如下:
管道:- name:步骤:- name: 类型:DockerBuild配置:#继承所有的标签从bash;//www.si-fil.com/confluence/display/JFROG/Bash affinityGroup: dockerFileLocation: dockerFileName: dockerImageName: dockerImageTag: dockerOptions: integrations: - name: # required inputResources: - name: 2022世界杯阿根廷预选赛赛程 # required, git存储库包含您的Dockerfile - name: <映像资源> #可选基础映像- name: #可选执行:onStart:onSuccess: - echo "Job well done!" onFailure: - echo "uh oh, something went wrong" onComplete: #always - echo " cleanup up some stuff"
标签
的名字
标识步骤的字母数字字符串(允许使用下划线)。
类型
必须DockerBuild
对于这个步骤类型。
配置
指定步骤执行环境的所有配置选择。该步骤继承Bash/PowerShell步骤配置标签,包括这些相关的标签:
标签 |
使用说明 |
必需的/可选 |
---|---|---|
affinityGroup |
必须指定与后续指定的相同的亲和关系组字符串DockerPush的一步。 | 可选 |
input2022世界杯阿根廷预选赛赛程Resources |
必须指定:
你还可以指定: |
必需的/可选 |
此外,这些标签可以定义为支持该步骤的本机操作:
从Bash派生的标记
标签 |
使用说明 |
必需的/可选 |
---|---|---|
|
包含Dockerfile的目录,该目录是具有Docker构建配置的文件。该文件还用作Docker构建的上下文。提供的路径应该相对于输入GitRepo存储库的根。如果没有提供位置,默认是GitRepo存储库的根目录。 | 要求 |
|
Dockerfile的名称。 | 要求 |
|
要创建的Docker映像的名称。这可以使用环境变量设置,也可以使用参数触发运行。 | 要求 |
|
要创建的Docker映像的标记。这可以使用环境变量设置,也可以使用参数触发运行。 | 要求 |
dockerOptions |
的附加选项码头工人建造命令。 |
可选 |
例子
下面的例子使用了一个GoLang Git存储库,它由一个名为GitRepo的资源表示gosvc_app
来创建一个发布到Artifactory的Docker映像。他们假设Artifactory集成名为MyArtifactory
已经创建,Artifactory实例有一个Docker存储库映射到docker.artprod.company
.
- 这些例子需要一个Artifactory集成和一个GitHub集成.
- 类似示例的管道DSL是可以在这个存储库在JFrogGitHub帐户。
- 有关完整的教程,请参见管道示例:Docker Build和Push.
下面的资源声明支持这些示例。2022世界杯阿根廷预选赛赛程并非所有示例中都使用了这些资源。2022世界杯阿根廷预选赛赛程
2022世界杯阿根廷预选赛赛程
2022世界杯阿根廷预选赛赛程资源:#应用程序源存储库-名称:gosvc_app类型:GitRepo配置:gitProvider: myGithub路径:myuser/myrepo #替换为您的存储库名称分支:包括:master # Artifactory存储库中的Docker映像-名称:base_image类型:映像配置:registry: myArtifactory sourceRepository: Docker -local #替换为您的存储库名称imageName: docker.artprod.mycompany.com/baseimage imageTag:最新autoPull:true # Artifactory存储库中的文件-名称:icon_files类型:FileSpec配置:sourceArtifactory: myArtifactory模式:my-local-repo/all-my-images/ target: icons/
从源存储库构建Docker映像
这个例子在Artifactory中构建Docker镜像到Docker注册表。图像的标记被设置为管道的运行号。
管道:—name: demo_pipeline步骤:—name: bld_image类型:DockerBuild配置:dockerFileLocation:。dockerFileName: Dockerfile dockerImageName: docker.artprod.mycompany.com/gosvc #替换为您完全限定的Docker注册表/映像名称dockerImageTag: ${run_number} inputResources: - name: gosvc_app integratio2022世界杯阿根廷预选赛赛程ns: - name: MyArtifactory
使用dockerOptions构建Docker映像
的用法dockerOptions
标记来设置build-arg
Docker命令的选项。一个名为build_number_env_variable
动态设置为管道的运行号。本例假设Dockerfile命令中使用了环境变量。
管道:—name: demo_pipeline步骤:—name: bld_image类型:DockerBuild配置: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
使用私有基映像构建Docker映像
本例构建了一个依赖于Artifactory Docker存储库中存储的私有基映像的Docker映像。
管道:—name: demo_pipeline步骤:—name: bld_image类型:DockerBuild配置:dockerFileLocation:。dockerFileName: Dockerfile dockerImageName: docker.artprod.mycompany.com/gosvc #替换为您的完全合格的Docker注册表/镜像名称dockerImageTag: ${run_number} inputResources: - name: gosvc_app - name: b2022世界杯阿根廷预选赛赛程ase_image integrations: - name: MyArtifactory
用当前路径之外的文件构建Docker映像
这个例子演示了如何构建一个包含当前路径之外的文件的Docker映像。它提取存储在Artifactory存储库中的图标文件,用于名为my-local-repo
.假定Dockerfile有一个命令,该命令将包含文件/图标
进入图像。
管道:—name: demo_pipeline步骤:—name: bld_image类型:DockerBuild配置:dockerFileLocation:。dockerFileName: Dockerfile dockerImageName: docker.artprod.mycompany.com/gosvc #替换为您的完全合格的Docker注册表/映像名称dockerImageTag: ${run_number} inputResources: - name: gosvc_app - name: i2022世界杯阿根廷预选赛赛程con_files integrations: - name: MyArtifactory
工作原理
当你使用DockerBuild管道中的本机步骤,它在后台执行以下功能:
- cp(如果有一个FileSpec输入,将这些文件复制到克隆的GitRepo输入的根目录)
- 码头工人建造
- add_run_variables(添加几个变量,稍后在推送Docker映像或发布构建信息时使用)
- Jfrog rt build-collect-env(收集稍后将作为构建信息的一部分发布的环境信息)
- Add_run_files(保存收集到的构建信息)