首页 > 编程知识 正文

fortify和jenkins,jenkins菜鸟教程

时间:2023-05-03 14:43:14 阅读:32525 作者:3888

我最近接触了一个叫jenkins的东西,所以花了一点时间理解了。 这通过在代码上传仓库(如github、gitee和gitlab )之后通过jenkins获取代码仓库中的最新代码来省略手动打包、服务器上传和部署这一系列步骤

一、什么是jenkins? Jenkins是一个开源、提供易用操作界面的持续集成(CI )工具,起源于Hudson(Hudson是商用),主要是软件项目的持续、自动构建/测试和外部任务的执行监控Jenkins是用Java语言编写的,可以在热门servlet容器(如Tomcat )中运行,也可以独立运行。 通常与版本控制工具(SCM )、构建工具结合使用。 常用的版本控制工具是SVN、GIT,构建工具是Maven、Ant和Gradle。

二、什么是CI/CD? ci(continuousintegration,中文中指持续集成)是软件开发时间。 持续集成强调开发人员在提交新代码后立即进行构建和(单元)测试。 根据测试结果,可以确认新代码和原始代码是否正确集成。 借网络照片了解CI。

连续交付(CD )是在持续集成的基础上,将集成的代码部署到更接近现实运行环境(类生产环境)的环境中。 例如,单元测试完成后,可以将代码部署到连接到数据库的Staging环境中进行更多测试。 如果代码没有问题,可以继续手动部署到生产环境中。 下图显示了CI/CD的大致动作模式。

三、使用Jenkins进行PHP码(单元)的测试、封装。 Jenkins是一个强大的CI工具,本身是用Java开发的,但也可以用于用其他语言开发的项目CI。 介绍如何使用Jenkins创建构建任务。

登录到Jenkins,然后单击左侧的“新建”以创建新的构建任务。

跳转到以下接口: 可以自行设置任务名称,但必须是全局唯一的。 输入名称,然后选择生成自由格式的软件项目。 不说明其他选项。 单击下面的“确定”按钮创建构建任务。 然后自动跳转到该作业的设置页。

下图构建了任务设定画面,可以看到上面的几个选项'General", “源码管理”, “构建触发器”,“构建环境”, “构建”, "构建后操作'。 以下逐一介绍。

1 .常规是构建任务的基本配置的一部分。 名字、说明等。

项目名称:刚才创建并设置了构建任务步骤,当然也可以在此处更改。

说明:构建任务说明。

销毁旧版本:服务器资源有限,如果保存历史版本太久,Jenkins可能会变慢,服务器硬盘资源可能已满。 当然,以下“保留构建天数”和保留构建的最大数量是可定制的,并且必须根据具体情况确定适当的值。

其他几个选择不在此介绍,感兴趣的人请参阅Jenkins“帮助信息”。 有粗略的介绍。 但是,这些“帮助信息”是英语。

2 .源代码管理源代码管理是指设置您代码的存储位置。

支持Git:主流github和gitlab代码仓库。 因为我们的研发团队使用gitlab,所以这里只介绍这个项目。

* *存储库URL:* *仓库地址

* *凭证: * *证书。 可以使用HTTP格式的用户名密码或RSA文件。 但是,请使用后面的“添加”按钮添加证书。

**Branches to build:**构建的分支。 */master表示master分支,也可以将其设置为其他分支。

*源浏览器:使用的代码仓库管理工具,如github、gitlab等。

* * URL :填写* *上仓库的地址就可以了。

Version: 8.7这是我们的gitlab服务器版本。

**Subversion:**是SVN。 这里不介绍。

3 .构建触发器构建触发器。 顾名思义,这是构建任务的触发器。触发远程构建(例如,使用脚本):此选项提供了用于在代码级别触发构建的接口。 这里不介绍,后期可能会用。

Build after other projects are built:此选项的意思是“在生成其他项目后生成”。 这里不介绍,后期可能会使用这个选项。

Build periodically:周期性构建。 我很理解。 就是每隔一定时间构建一次。 时间表类似于linux crontab的写入格式。 下图中的设置显示每30分钟构建一次。

buildwhenachangeispushedtogitlab :对git lab代码仓库的推送更改将触发构建。 后面是构建触发器的地址,一般称为webhooks。 此地址必须位于gitlab中

,webhooks如何配置后面介绍。这个是常用的构建触发器。

Poll SCM:该选项是配合上面这个选项使用的。当代码仓库发生改动,jenkins并不知道。需要配置这个选项,周期性的去检查代码仓库是否发生改动。

4.构建环境

构建环境就是构建之前的一些准备工作,如指定构建工具(在这里我使用ant)。

**With Ant:**选择这个工具,并指定ant版本和jdk版本。这两个工具的版本我都事先在服务器上安装,并且在jenkins全局工具中配置好了。

其他选项不作介绍,同样可以查看"帮助信息" 获得使用帮助。

5.构建

选择下方的增加构建步骤。

可以选择的项很多。这里就介绍"Invoke Ant" 和"Execute shell".

Eexcute shell: 执行shell命令,该工具是针对linux环境的,windows环境也有对应的工具"Execute Windows batch command"。 在构建之前,可能我们需要执行一些命令,比如压缩包的解压之类的。为了演示,我就简单的执行 “echo $RANDOM” 这样的linux shell下生产随机数命令。

Invoke Ant:Ant是一款java项目构建工具,当然也能用来构建php。

Ant Version: 选择Ant版本。这个ant版本是安装在jenkins服务器上的版本,并且需要在jenkins"系统工具"中设置好。

Targets:要执行的操作,一行一个操作任务。以上图为例,build是构建,tar是打包。

Build File: 是Ant构建的配置文件,如果不指定,则是在项目路径下的workspace目录中的build.xml。build.xml文件具体怎么配置,后面再细讲。

properties: 设定一些变量,这些变量可以在build.xml 中被引用。

Send files or execute commands over SSH:发送文件到远程主机或执行命令(脚本)

Name: SSH Server的名称。SSH Server可以在jenkins-系统设置中配置。

source files: 需要发送给远程主机的源文件。

Remove prefix: 移除前面的路径。如果不设置这个参数,则远程主机会自动创建构建源 source files 包含的那个路径。

Remote directory: 远程主机目录。

Exec command:在远程主机上执行的命令,或者执行的脚本。

6.构建后操作

构建后操作,就是对project构建完成后的一些后续操作,比如生成相应的代码测试报告。


Publish Clover PHP Coverage Report:发布代码覆盖率xml格式的文件报告。路径会在"build.xml"文件中定义

Publish HTML reports:发布代码覆盖率的HTML报告。

Report Crap: 发布crap报告。

E-mail Notification: 邮件通知,构建完成后发邮件到指定的邮箱。

以上配置完成后,点击保存。

7.其他相关配置

SSH Server配置

登录jenkins – 系统管理 – 系统设置

配置请看下图

SSH Servers: 由于jenkins服务器公钥文件我已经配置好,所以之后新增SSH Servers 只需要配置这一项即可。

Name: 自定义,需要全局唯一。

HostName: 主机名,直接用ip地址即可。

Username: 新增Server的用户名,这里配置的是root。

Remote Directory: 远程目录。jenkins服务器发送文件给新增的server默认是在这个目录。

Ant 配置文件 “build.xml”

接下来讲解Ant 构建配置文件"build.xml"。 之所以是build.xml 这是因为官方惯例。就好比任何编程语言的入门都会是打印"Hello world". 你也可以用其他名称代替"build.xml" .

下面针对配置文件"build.xml" 关键配置进行说明。

project name就是项目名称,和jenkins所创建的对应。

target name=“build” 就是构建的名称,和jenkins构建步骤 那里的targets对应。depends指明构建需要进行的一些操作。

property 用来设置变量。

fileset 这一行指明了一个文件夹,用include来指明需要包含的文件,exclude指明不包含的文件,"tar"即是打包这个文件夹中匹配到的文件。

下面的这些target都是一些实际的操作步骤,比如make_runtime这个"target" 就是创建了一些目录。phpcs就是利用PHP_CodeSniffer这个工具 对PHP代码规范与质量检查工具。


最后这个target “tar” 就是打包文件。因为上面的build 并没有包含这个target,所以默认情况下,执行build是不会打包文件的,所以在jenkins project配置界面,Ant构建那一步的targets,我们才会有"build" 和 “tar” 这两个targets。如果build.xml 中 “build"这个target depends中已经包含"tar” , 就不需要在jenkins中增加"tar"了。

其他一些target 都是利用一些工具对php代码的操作,比如phpunit是进行php单元测试。这一些方面我没有深入的研究,只是进行了一些简单的配置,毕竟不是这方面的专业人士。

配置 Gitlab webhooks

在gitlab的project页面 打开settings,再打开 web hooks 。点击"ADD WEB HOOK" 添加webhook。把之前jenkins配置中的那个url 添加到这里,添加完成后,点击"TEST HOOK"进行测试,如果显示SUCCESS 则表示添加成功。





配置phpunit.xml

phpunit.xml是phpunit这个工具用来单元测试所需要的配置文件。这个文件的名称同样也是可以自定义的,但是要在"build.xml"中配置好名字就行。默认情况下,用"phpunit.xml", 则不需要在"build.xml"中配置文件名。

fileset dir 指定单元测试文件所在路径,include指定包含哪些文件,支持通配符匹配。当然也可以用exclude关键字指定不包含的文件。

四、进行jenkins project 构建

第一次配置好jenkins project之后,会自动触发一次构建。此后,每当有commit 提交到master分支(前面设置的是master分支,也可以设置为其他分支),就会触发一次构建。当然也可以在project页面手动触发构建。点击左边的"立即构建" 手动触发构建。

五、构建结果说明

构建状态

Successful蓝色:构建完成,并且被认为是稳定的。

Unstable黄色:构建完成,但被认为是不稳定的。

Failed红色:构建失败。

Disable灰色:构建已禁用

构建稳定性

构建稳定性用天气表示:晴、晴转多云、多云、小雨、雷阵雨。天气越好表示构建越稳定,反之亦然。

构建历史界面

console output: 输出构建的日志信息

六、jenkins权限管理

由于jenkins默认的权限管理体系不支持用户组或角色的配置,因此需要安装第三发插件来支持角色的配置,本文将使用Role Strategy Plugin。基于这个插件的权限管理设置请参考这篇文章:http://blog.csdn.net/russ44/article/details/52276222,这里不作详细介绍。

至此,就可以用jenkins周而复始的进行CI了,当然jenkins是一个强大的工具,功能绝不仅仅是以上这些,其他方面要是以后用到,我会更新到这篇文章中。有疑问欢迎在下方留言。

最后,放上一张Jenkins的思维导图

![在这里插入图片描述]

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。