Jenkins
Jenkins是一个广泛用于持续构建的可视化web工具,就是各种项目的的“自动化”编译、打包、分发部署等等。Jenkins可以支持多种语言(比如:java、c#、php等等),也兼容ant、maven、gradle等多种第三方构建工具,同时跟git、svn无缝集成,也支持直接与源代码托管网站(比如github、bitbucket)直接集成。
安装部署
使用Centos 7系统,在安装Jenkins之前,需要安装相应的软件。
1. 安装JDK
tar -zxf jdk-8u91-linux-x64.tar.gz -C /home/mmtrix/local/
ln -s jdk1.8.0_91 java
2. 安装maven(其它的构建工具也可以,取决于项目使用什么)
tar -zxf apache-maven-3.0.5-bin.zip -C /home/mmtrix/local/
ln -s apache-maven-3.0.5 maven
3. 安装ant
tar -zxf apache-ant-1.9.7-bin.tar.gz -C /home/mmtrix/local/
ln -s apache-ant-1.9.7 ant
4. 安装git(其它的代码管理工具也可以,取决于项目使用什么)
5. 安装启动Jenkins
java -jar jenkins.war
在启动过程中,会自动将war包解压到~/.jenkins目录下,并生成一些目录和配置文件。启动参数也可自行调整。
更新和下载插件
启动完成后,打开浏览器http://localhost:8080/ (如果不是安装在本机,应该localhost换成服务器对应的ip)
首次启动会提示很多插件已经过时,需要更新,建议升级到最新版本。
同时建议安装以下插件,方便支持git项目以及向远程机器上传文件及执行命令。
插件升级之后重启jenkins以便其生效。
安全设置
默认情况下,jenkins允许匿名用户做任何事情,这意味着谁都可以使用jenkins进行发布,这显然不够安全,jenkins支持多种安全认证机制,下面演示最传统的用户名/密码模式如何设置:
进入Configure Global Security界面:
参考上图,采用jenkins内置的用户名、密码认证机制,同时允许用户注册,匿名用户拥有管理权(首次配置,建议运行匿名用户有管理权限,以避免操作错误后,无法正常进入jenkins管理界面,等其他用户权限设置好之后,再去掉用户的管理权)
保存好之后,jenkins页面右上角有一个sign up注册链接,点击注册用户:
注册好之后再进入安全设置界面,看到用户列表多了一个mmtrix用户,并拥有管理权限,使用mmtrix用户登录,成功之后去掉匿名用户管理权限,一般也去掉用户注册的勾选(实际应用中,一般都是提前建好所有用户名),保存好,在访问jenkins:
这样就只有登录用户才能使用了。
系统配置
在正式部署项目前,还有几个关键的参数需要设置。
先进入系统设置界面
首先是jdk
git
ant
maven
如果部署过程中,还需要运行shell脚本,以及通过scp向远程机器上传文件,则需要配置下面的:
SCP site解释:
Hostname: 远程服务器的主机名
Port: SSH使用端口号
Root Repository Path: SCP拷贝时路径的根目录
User Name: 用户名 \ Password、PassPhrase:密码
Keyfile:本地ssh密钥的路径
还有一个强大的publish over ssh,不仅可以向远程服务器上传文件,还能执行远程服务器上的shell脚本
跟SCP的参数设置相似,不过多了一个Test Configuration的按钮,参数配置正确,点击该按钮,会尝试连接远程服务器,成功会显示success。
使用教程
以在github上的一个测试项目maven-test作为演示
点击OK之后,最上面部分,除了Project name,其他不用填写
源代码管理部分,选择的是一个git项目,所以选择Git,Repository URL填写项目的git地址,github需要密码才能访问,所以Credentials这里要选择相应的用户名、密码,git获取源代码的分支名称,一般为master,也可以改成想要的分支。
Credentials部分下拉框首次进来是空的,点击右侧Add,进行添加
Build部分,本项目是一个maven项目,选择Invoke top-level Maven targets
保存,创建完成,可以测试一下。
Build success。
远程分发
很多项目需要将编译成功的j文件发送到远程服务器上,利用scp插件,在Add post-build Action中选择Publis artifacts to SCP Repository
参考下面的参数填写
Source:分发的文件
Destination:目的路径,相对前面配置的远程服务器的根目录
配置好了之后,再次build就可以了
用户权限设置
实现不同用户显示对应视图views中不同的jobs,使用Role-based Authorization Strategy插件。
1.安装Role-based Authorization Strategy
安装成功之后,重启jenkins使其生效。
2.“Manage Jenkins” → “Configure Global Security” → “Role-Based Strategy”
3.管理分组
“Manage Jenkins” → “Manage and Assign Roles”
点击“Manage Roles”进入界面
创建两个全局的用户组:job-read和job-create
job-read加Overall和Job的Read权限,job-create只加Job的create权限
创建两个项目用户组:deploy和QA
project roles创建的时候Pattern正则表达式与脚本里不一样,比如过滤test开头的项目,要写成test.*而不是test*
创建用户
点击“Create User”,然后创建用户,一共有3个用户:mmtrix、liufei、test
分配角色
“Manage and Assign Roles”→“Assign Roles”设置
global roles,给mmtrix分配管理员的组,匿名用户分配到job_read组和job_create组
project roles,给liufei分配到deploy组,将test分配到QA组
退出用户登录,匿名用户可以查看现有的Job和新建Job,但是没办法build
采用liufei登录,在All view中可以查看所有的Job,但是能build只能符合maven开头的Job
可以编辑“My views”,让其显示特定的Jobs
点击“+”,创建想要的view
Include a global view:显示所有的内容
List view:可以通过类似正则表达式配置自己想要显示的Jobs
My view:自动显示用户有权限访问的Jobs
这里选择My view