云客户?
免费开始>
在MyJFrog中升级>
云的新功能>





一般

为了启用完全可跟踪的Docker构建,Jenkins Artifactory Plugin可以通过设置一个内部代理服务器来收集构建信息,通过该代理服务器,Docker守护进程可以路由其流量。

重要的

从2.14.0版本的Artifactory Plugin开始,docker构建信息创建不再需要设置build - info Proxy。
因此,使用Build-Info代理的Pipeline API现在已被弃用。

以下是已弃用的API:
defrtdocker = Artifactory。docker [credentialsId: 'credentialsId'], [host: 'tcp: / /守护进程IP:守护进程港']
请使用新的API,它接收Artifactory服务器作为参数,而不是credentialsId:
defrtdocker = Artifactory。Docker server: server, [host: ']tcp: / /守护进程IP:守护进程港']

如果您要从旧API迁移到新API,请确保在您的docker配置中删除HTTP代理重定向。

页面内容


系统需求

  • Jenkins构建代理运行在OSX, Ubuntu 14上。x, 16岁。或Centos 7。
  • 詹金斯2. x。
  • Jenkins Artifactory Plugin 2.14.0或以上版本。
  • 人工配置为Docker注册表。

收集和发布Docker构建信息

要设置Jenkins收集Docker构建信息,请仔细执行以下步骤:

  1. 在所有Jenkins构建代理上安装Docker
  2. 将Artifactory设置为Docker注册表
  3. 确保Docker与Artifactory正常工作
  4. 确保Artifactory反向代理被Jenkins信任
  5. 确保你有正确版本的Jenkins Artifactory Plugin
  6. 对于OSX代理,运行Socat容器
  7. 测试您的设置

在Jenkins Build Agent上安装Docker

要在所有Jenkins构建代理上安装Docker,请按照码头工人文档。

确保Artifactory被设置为Docker注册表

确保Artifactory可以用作docker注册表,并由所有Jenkins构建代理中的docker守护进程使用。如果您需要将Artifactory配置为Docker注册表,请参考Docker和Artifactory入门在JFrog Artifactory用户指南中。

确保Docker与人工Docker注册表一起工作

为了确保Docker和你的Artifactory Docker注册表被正确配置为一起工作,在所有Jenkins构建代理中运行以下代码片段:


docker pull hello-world docker tag hello-world:latest /hello-world:latest docker login  docker push /hello-world:latest

如果一切都配置正确,推送任何图像(包括hello-world图像)都应该成功上传到Artifactory。

确保人工反向代理被Jenkins信任

如果使用自签名SSL证书访问Artifactory反向代理,则Jenkins构建代理需要信任反向代理域。如果您没有使用自签名证书,或者您的Jenkins构建已经可以使用SSL成功访问Artifactory,这意味着您的反向代理已经受到您的Jenkins代理的信任,因此您可以跳过本节。

要将反向代理的证书添加到JRE信任存储库中,以便Jenkins构建代理信任Artifactory反向代理域,请在每个Jenkins代理上执行以下步骤:

  1. 找到JAVE_HOME目录。确保这是Jenkins代理使用的Java发行版。下面几节将JAVA_HOME目录引用为$JAVE_HOME。
  2. 要查看您的Artifactory反向代理域是否已受信任,请使用以下命令列出JRE信任存储库中的所有证书:


sudo $JAVA_HOME/bin/keytool -v -list -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit . sh
  1. 如果您的域未列出,请获取Artifactory的代理域自签名证书文件,并使用以下命令将其添加到信任存储库:


sudo keytool -import -alias  -file  -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit . sh

确保你有正确版本的Jenkins Artifactory插件

要收集Docker构建信息,您需要安装Jenkins Artifactory Plugin 2.14.0及以上版本。

对于OSX代理,运行Socat容器

如果Jenkins代理运行在OSX机器上,运行以下命令启动一个Socat容器。这个容器需要启动并运行,以便能够使用Artifactory Pipeline API将图像推送到Artifactory。

Docker执行命令-d -v /var/run/ Docker。袜子:/ var /运行/ docker.sock-p 127.0.0.1:1234:1234 bobrik/socat TCP-LISTEN:1234,forkUNIX-CONNECT: / var /运行/ docker.sock

测试你的设置

如果你打算使用Kaniko或JIB使用Jenkins手工插件,你可以跳过这一部分。

用下面的脚本创建一个新的Jenkins Pipeline作业并运行它。如果一切设置正确,构建应该将构建信息发布到Artifactory。


node(){//步骤1:获取一个Artifactory实例,在Manage Jenkins -> Configure System: def server = Artifactory中配置。server '' //步骤2:创建Artifactory Docker实例:defrtdocker = Artifactory. serverdocker server: server //或者如果docker守护进程配置为使用TCP连接:// defrtdocker = Artifactory。docker server: server, host: "tcp://:" //如果您的代理在OSX上运行:// defrtdocker = Artifactory. docker = docker . docker . docker . docker . docker . dockerdocker server: server, host: "tcp://127.0.0.1:1234" //第三步:将镜像推送到Artifactory。//确保被配置为引用 Artifactory repository。如果它引用了不同的存储库,则构建将失败并显示“无法找到manifest”。在Artifactory. json中…”defbuildinfo = rtDocker。push '/hello-world:latest', '' //第4步:发布build-info到Artifactory: server。publishBuildInfo buildInfo}
  • 没有标签
版权所有©2022 JFrog Ltd.