Jenkins和JFrog Artifactory可以通过Jenkins插件的方式来进行集成。这个插件可以通过Jenkins插件商店进行下载和安装。你可以通过依次选择Manage Jenkins (管理Jenkins) > Manage Plugins (管理插件) > Installed (已安装) 来查看该插件。列表中的Artifactory Plugin (Artifactory插件)就是我们需要用到的插件。


我们对本教程所提及的所有功能模块都已经进行了预配置,以便提供一个所有补充/必需产品的所有功能都能正常运行的演示环境来帮助大家快速上手JFrog Artifactory和JFrog Xray。


本教程将CI/CD流水线拆分成了Jenkins里面的三条流水线。我们将会创建一个要被发布到Artifactory的web应用程序。然后我们将会使用Docker镜像结合Ubuntu,Java和Tomcat来创建一个同样会被发布到Artifactory的web服务器模板。在此之后,我们就会从Artifactory下载该web应用程序和web服务器模板,用来创建一个生产环境的Docker镜像,用Xray对其进行扫描,并将该镜像promote(升级)到Artifactory里面的一个生产环境仓库。


1


创建应用程序war包

  • 创建一个名为“webservice-1.1.2.war”

  • 将该样例程序发布到Artifactory的一个本地仓库

  • 用Xray对其进行扫描


2


创建Docker镜像模板

  • 使用Ubuntu+Java+Tomcat创建一个名为“docker-framework”的Docker基础镜像

  • 将该基础镜像发布到Artifactory的一个本地仓库


3


创建生产环境Docker镜像

  • 从Artifactory下载前面提到的“webservice-1.1.2.war”文件和“docker-framework”镜像文件

  • 创建一个名为“docker-app”的生产环境Docker镜像

  • 将该镜像发布到Artifactory

  • 用Xray对其进行扫描

  • 将该镜像promote(升级)到Artifactory的一个生产环境仓库


注意


由于每一步的操作都是建立在前一步已经顺利完成的基础上的,所以这些步骤需要按顺序执行。但是你可以在每一步完成后暂停操作,然后在稍后的任意时间里继续执行后续的步骤。


准备工作

【官方教程】使用JFrog Artifactory,JFrog Xray和Jenkins搭建CI/C_java【官方教程】使用JFrog Artifactory,JFrog Xray和Jenkins搭建CI/C_java_02


在开始动手操作之前,你需要先定义好Artifactory和Jenkins的URL映射。这将使得你可以通过URL的名称(jfrog.local)而非IP地址(如下图:Environment Log所示)来访问和指定某个环境。


【官方教程】使用JFrog Artifactory,JFrog Xray和Jenkins搭建CI/C_java_03

Environment Log


此外,Artifactory,Xray和其他系统里面的URL都会显示为jfrog.local。

为了实现这个效果,你需要将Environment Log里面提供的IP地址映射为jfrog.local。


在Mac/Linux中的配置方法:

使用你喜欢的编辑器来编辑以下文件(你需要拥有管理员权限):

/etc/hosts


添加以下内容:

<Environment Log中提供的IP地址> jfrog.local


在Windows中的配置方法:

使用你喜欢的编辑器来编辑以下文件(你需要拥有管理员权限):

c:\Windows\system 32\drivers\etc\hosts


添加以下内容:

<Environment Log中提供的IP地址> jfrog.local


完成以上步骤以后,你就可以通过主机名和端口号的方式来访问Artifactory,Xray和Jenkins的实例了。


Artifactory:http://jfrog.local

【官方教程】使用JFrog Artifactory,JFrog Xray和Jenkins搭建CI/C_java_04


Xray:http://jfrog.local:8000/

【官方教程】使用JFrog Artifactory,JFrog Xray和Jenkins搭建CI/C_java_05


Jenkins:http://jfrog.local:8080/

现在就让我们正式开始吧!


查看Jenkins流水线脚本

【官方教程】使用JFrog Artifactory,JFrog Xray和Jenkins搭建CI/C_java【官方教程】使用JFrog Artifactory,JFrog Xray和Jenkins搭建CI/C_java_02


在本教程中我们会使用一个样例web程序,我们会用到该程序的源代码和相关的第三方依赖。所有的这些都是需要我们进行管理和打包的。


Jenkins中包含有5个预配置的job,本教程将会专注于讲解前面三个。


1


“Step1–create-application-war-file”

将该应用程序打包成一个名为app.war的文件

2


“Step2–create-docker-image-template”

创建一个Docker镜像作为基础镜像,该镜像将会被用来打包app product

3


“Step3–create-docker-image-product”

创建一个包含有app.war文件的Docker镜像

可选的Job

4


“Maven-snapshot”

学习如何在使用Maven来创建一个SNAPSHOT build

5


“Maven-release-pipeline”

在测试完以后,将创建的SNAPSHOT artifacts(二进制文件)升级到Release仓库


【官方教程】使用JFrog Artifactory,JFrog Xray和Jenkins搭建CI/C_java_08


注意:在整个CI/CD流水线中,所有的artifact(二进制文件)都会被发布到Artifactory。

 

在Artifactory中,我们可以清楚的查看每个二进制文件分布属于哪一次构建的产物。这一点是非常重要的!举个例子,借助Artifactory的这一功能特性,你可以很清楚的知道哪些二进制文件不能被删除,因为你可以很清楚的看到它在哪一次构建中会被用到。通过构建产生的二进制文件还有很多其他的元数据。在本教程的后半部分,我们可以在构建产生的二进制文件的树形视图里看到这些元数据。


登录Jenkins


首先,我们需要先登录Jenkins。