一 jenkins安装
Jenkins官网:https://jenkins.io/
:https://jenkins.io/doc/pipeline/tour/getting-started/
所需环境 :java maven
jenkins的下载和安装: wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
jenkins使用tomcat容器启动:
cp jenkins.war /usr/local/tomcat/webapps/
/usr/local/tomcat/bin/catalina.sh start
浏览器访问: IP:PORT/jenkins
二 jenkins的一些全局配置
1.安装推荐的插件。
2.进入jenkins的系统管理 ---系统设置
默认jenkins的主目录是家目录下的.jenkins目录下如/root/.jenkins,也就是各种运行数据都会存储在这个目录下面空间会越战越大所以一般可以选择挂载盘将此目录存放到其他的挂载盘上面。
更改主目录方法如下:
vim /etc/profile
export JENKINS_HOME=/data/.jenkins
source /etc/profile
重启jenkins 后可以看到效果 可以看到.jenkins 目录
系统消息:可以写(jenkins 走一波飞起) 将会显示在Jenkins首页发布的地方
执行者数量 :就是项目允许运行的job,并发
标签: 是用来记录这个机器的名称。(jenkins)
用法: 尽可能的选择这个节点
系统设置中别的选项保持默认即可
3. 全局安全性配置
- 勾选 启用安全
- 勾选jenkins专有用户数据库
- 标记格式器 选择Safe HTML
- 勾选防止跨站点请求伪造
- 其余的保持默认即可
4.全局工具配置
- maven配置: 使用默认的Maven 设置 默认全局setting 提供 :使用默认Maven 全局设置
- jdk 安装: 别名: JAVA_HOME JAVA_HOME: /usr/local/jdk8 (java安装路径)
- git 安装: 别名: Git Path to Git executable :/bin/git (git安装路径 ,此路径为yum 安装的git 路径)
- maven 安装: 别名: apache-maven MAVEN_HOME: /data3/jenkins/apache-maven (maven 安装路径)
5.节点管理
- 增加新的节点 --依次填写内容,(远程工作目录,并发构建数等)
- 启动方式选择: Launch agent agents via SSH
- 填写主机信息 Credentials 选择添加密钥或者用户名,密码的方式(用户名,密码的方式一定要对远程的工作目录有写权限)
- Host Key Verification Strategy选择 Known hosts file Verification Strategy
- 高级中 :配置端口 以及java路径(/usr/local/jdk8/bin/java) (编译环境路径最好与主节点相同)
三.jenkins中的一些有用的插件安装与功能说明
- Rebuilder可以进行上一步的构建 : 需要安装(Rebuilder)插件,如果不装这个插件,比方说你发布某个job发布失败了知道问题在哪了又想重新发布,但是这时候你需要重新上传入参数,可不可以一键重新发布呢?就是提到的这个插件。
- 参数化构建过程: 需要插件 Extended Choice Parameter plugin DynamicParameter Plug-in Build With Parameters Persistent Parameter
- Set Build Name(设置构建名称):需要插件 build-name-setter
- Set jenkins user build variables(设置jenkins用户构建变量):此插件用于设置用户构建变量 #需要插件:user build vars #${BUILD_NUMBER}-${BUILD_USER_ID}-$IP-${BUILD_STATUS}-${Branch} 一定要勾选Set jenkins user build variables
- 构建一个一个java job 需要安装1个Maven Integration插件 ( mvn clean install -P online -Dmaven.test.skip=true)
- 限制项目的运行节点: 标签表达式可以选择之前设置的slave节点,这里就是绑定某个子节点执行。
- 构建环境: 勾选 Delete workspace before build starts
- 源码管理: git
四.对job做一些优化补充
- 参数化构建过程: 选项参数 和字符参数 (可以在构建时做一些选择,当变量使用) 选项参数: 可以选择变量 字符参数:需要手动补充参数。
- 优化Build History的输出--->构建环境---->Set Build Name ( #${BUILD_NUMBER}-${BUILD_USER_ID}-$IP-${BUILD_STATUS}-${Branch} IP和Branch 是自己写的变量,其余的是系统变量 )
- 指定版本发布 : 参数化构建过程--->(安装Git parameter ) --在下拉框中选择 git parameter 。有几个地方需要注意一下:
Sort Mode :DESCEDING Selected Value : TOP (倒序排列)
在源码管理处的 Branch 处: 写** 在构建的shell 中写 先切换下分支 : cd $WORKSPACE git checkout $tag git status - jenkins 发邮件通知---(在此只介绍发邮件的拓展功能)---安装插件(Email Extension) 注意 :系统管理员邮箱还是要继续设置的不然依旧是不能发送邮件的(这个地址要和发件人的地址设置成一致的)
在系统管理的----系统设置----- Extended E-mail Notification 依次填写邮箱信息 。 Default Content Type 选择 HTML ;Default Recipients : 默认收件人 Default Subject :模板构建主题:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS! 。Default Content :<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title> </head> <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0"> <table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif"> <tr> <td>(本邮件由程序自动下发,无需回复!)</td> </tr> <tr> <tr> <td> <h2><font color="#FF0000">构建结果 - ${BUILD_STATUS}</font></h2> </td> </tr> <tr> <td><br /> <b><font color="#0B610B">构建信息</font></b> <hr size="2" width="100%" align="center" /> </td> </tr> <tr><a href="${PROJECT_URL}">${PROJECT_URL}</a> <td> <ul> <li>项目名称:${PROJECT_NAME}</li> <li>GIT路径:<a href="${GIT_URL}">${GIT_URL}</a></li> <li>构建编号:${BUILD_NUMBER}</li> <li>触发原因:${CAUSE}</li> <li>构建日志:<a href="${BUILD_URL}console">${BUILD_URL}console</a></li> </ul> </td> </tr> <tr> <td> <b><font color="#0B610B">变更信息:</font></b> <hr size="2" width="100%" align="center" /> </td> </tr> <tr> <td> <ul> <li>上次构建成功后变化 : ${CHANGES_SINCE_LAST_SUCCESS}</a></li> </ul> </td> </tr> <tr> <td> <ul> <li>上次构建不稳定后变化 : ${CHANGES_SINCE_LAST_UNSTABLE}</a></li> </ul> </td> </tr> <tr> <td> <ul> <li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li> </ul> </td> </tr> <tr> <td> <ul> <li>变更集:${JELLY_SCRIPT,template="html"}</a></li> </ul> </td> </tr> <hr size="2" width="100%" align="center" /> </table> </body> </html>
Default Triggers 中勾选 Failure-Any 和successd
在job中继续配置:构建后操作 ---Editable Email Notification 全都默认 ---点击Advanced Setting ---Triggers ---可以选择Success (构建成功发送者) 可以选择Failure-Any (失败)--选择Recipient List---点击高级---可以再增加收件人(在默认收件人的基础上再增加收件人)(job 中的Triggers 必须写 ,只写成功就只发送成功的 ,只写失败 就只发送失败的)
-
jenkins权限控制 需要 插件 (Role-based Authorization Strategy)必须先在管理用户中添加相应的用户
在全局安全配置中,勾选授权策略中的Role-Based Strategy
开启授权策略后,可以在系统管理看到Manage and Assign Roles菜单。 点击进去后,可以看到3个选项,只介绍前两个选项。 Manage Roles (管理角色) Assign Roles (分配角色)
Manage Roles:Global roles设置: 已经默认有一个admin的规则拥有所有权限了 ,再创建一个user规则拥有全局的read 权限,不然这个用户无法查看。 在user用户下勾选read权限 ;Project roles设置:设置规则名称和授权规则(实际就是允许看到哪些项目)(授权规则采用正则表达式) 点击add 然后为角色分配Bulid Cancel Read 等权限
Assign Roles设置: Global roles设置:User/group to add (添加用户) 点击add 然后在user 一列勾选 Item roles设置: User/group to add (添加用户) 点击add ,然后给相应用户勾选指定的权限。
这就实现了让指定的用户发布指定的项目
五.jenkins的job中需要设置的一些地方(常用的)
- General 中需要设置 参数化构建过程
- 源码管理中需要设置 GIT
- 构建环境中需要设置 Delete workspace before build starts Set Build Name Set jenkins user build variables
- Build 中需要设置 Root POM Goals and options
- Post Steps 中执行shell 举例:
#!/bin/sh NAME="IronMan" rename="student-service" DIR="/data/source/IronMan" USER="root" PORT='29133' ssh -p$PORT $USER@$IP "$DIR/$rename/bin/stop.sh" sleep 5 ssh -p$PORT $USER@$IP "rm -rf $DIR/*" sleep 2 cd $WORKSPACE git checkout $Branch git status sleep 2 scp -P$PORT -r ${WORKSPACE}/$rename/target/$rename-assembly.tar.gz $USER@$IP:$DIR sleep 2 ssh -P$PORT $USER@$IP "tar xf $DIR/$rename-assembly.tar.gz -C $DIR/" sleep 2 ssh -P$PORT $USER@$IP "/usr/bin/bash --login $DIR/$rename/bin/start.sh"
6. 构建后操作中设置 Editable Email Notification
jenkins 参考链接: http://www.51niux.com/?id=225