系统需求
- Jenkins构建代理运行在OSX, Ubuntu 14上。x, 16岁。或Centos 7。
- 詹金斯2. x。
- Jenkins Artifactory Plugin 2.14.0或以上版本。
- 人工配置为Docker注册表。
收集和发布Docker构建信息
要设置Jenkins收集Docker构建信息,请仔细执行以下步骤:
- 在所有Jenkins构建代理上安装Docker
- 将Artifactory设置为Docker注册表
- 确保Docker与Artifactory正常工作
- 确保Artifactory反向代理被Jenkins信任
- 确保你有正确版本的Jenkins Artifactory Plugin
- 对于OSX代理,运行Socat容器
- 测试您的设置
在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代理上执行以下步骤:
- 找到JAVE_HOME目录。确保这是Jenkins代理使用的Java发行版。下面几节将JAVA_HOME目录引用为$JAVE_HOME。
- 要查看您的Artifactory反向代理域是否已受信任,请使用以下命令列出JRE信任存储库中的所有证书:
sudo $JAVA_HOME/bin/keytool -v -list -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit . sh
- 如果您的域未列出,请获取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}