jenkins部署可以参考:https://blog.csdn.net/luanpeng825485697/article/details/82945004
邮件通知
我这里使用的是qq企业邮箱
配置邮件通知,系统管理–系统设置
添加管理员邮箱,添加邮件
点击保存或测试邮件,系统会给目标邮箱发送一封测试邮件:
注意,接收邮件必须满足设置的后缀。
注意:如果你的系统设置中还有Extended E-mail Notification,就需要配置这个才能正常发送邮件
任务配置中
邮件的html模板
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${PROJECT_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>
<td><h2>
<font color="#0000FF">构建结果 - ${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>
<td>
<ul>
<li>项目名称 : ${PROJECT_NAME}</li>
<li>构建编号 : 第${BUILD_NUMBER}次构建</li>
<li>触发原因: ${CAUSE}</li>
<li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li>构建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>
<li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
<li>项目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
</ul>
</td>
</tr>
<tr>
<td><b><font color="#0B610B">Changes Since Last
Successful Build:</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
</ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat=" %p"}
</td>
</tr>
<tr>
<td><b>Test Informations</b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td><pre
style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">Total:${TEST_COUNTS,var="total"},Pass:${TEST_COUNTS,var="pass"},Failed:${TEST_COUNTS,var="fail"},Skiped:${TEST_COUNTS,var="skip"}</pre>
<br /></td>
</tr>
<tr>
<td><b><font color="#0B610B">构建日志 (最后 100行):</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td><textarea cols="80" rows="30" readonly="readonly"
style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>
</td>
</tr>
</table>
</body>
</html>
在邮件通知的高级配置中,可以配置什么编译结果的情况下下发通知,和通知给谁
配置ssh
点击-系统管理-系统插件-可选插件中 直接搜 publish over ssh 点击安装,安装完之后,重启jenkins
1,系统管理->系统设置->Publish over SSH配置里面配置ssh服务器信息
参考:https://blog.csdn.net/u012946310/article/details/80969447
配置git
安装gitlab插件,系统管理–管理插件–可选插件
插件安装界面,会额外安装一些依赖关系的插件,jenkins基于ruby开发,所以会有ruby环境:
系统管理 --> 凭据配置
jenkins服务器上(或者docker里面)root用户生成密钥对
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub
在git网页中加入jenkins的公钥
在服务器上手动试一下git clone目标仓库能否成功。
jenkins拉取代码没问题,继续配置jenkins的认证,这里应该输入私钥
复制jenkins拉取git代码服务器root的私钥
cat ~/.ssh/id_rsa
在任务构建中就可以为项目提供源码仓库了
当然你也可以在凭证中创建账号密码凭证,使用账号密码拉取git仓库https地址
实战:向GitHub提交代码时触发Jenkins自动构建
分别点击"系统管理"->“插件管理”->“可选插件”,选择
Git client plugin
Git plugin
GitLab Plugin
Gitlab Hook Plugin
查看jenkin生成回调地址。在任务重构建触发器下获取回调URL。下面的URL那一行只有Gitlab Hook Plugin插件下载成功后才能显示。
Gitlab上的操作
登陆Gitlab上的项目中,添加webhook(用上面Jenkins中生成的回调url)
gitlab钩子hook分为系统级的和项目级别的。
系统级别的
项目级的
其中token需要在jenkins中git hook的高级配置中生成。
添加成功后,点击此webhook后面的test进行测试
如果返回Hook successfully executed.表示配置成功。
这样,下次push代码后,就会自动触发jenkins上相关的构建工程进行自动发布了!无需人工干预~
Jenkins定时构建和轮询SCM设置说明
一、定时构建:不管SVN或Git中数据有无变化,均执行定时化的构建任务 ;
二、轮询SCM:只要SVN或Git中数据有更新,则执行构建任务;
三、构建语法说明:
1.首先格式为:* * * * *(五个星);
2.第一个表示分钟,取值0~59
第二个表示小时,取值0~23
第三个表示一个月的第几天,取值1~31
第四个表示第几月,取值1~12
第五个*表示一周中的第几天,取值0~7,其中0和7代表的都是周日
3.使用举例:
每隔10分钟构建一次:H/5 * * * *
每隔1小时构建一次: H H/1 * * *
每月30号构建一次: H H 30 * *
四、定时构建和轮询SCM使用互不冲突,具体如何组合,需要根据项目情况合理配置;
jenkins关闭重启重新加载
1、关闭Jenkins
只需要在访问jenkins服务器的网址url地址后加上exit。例如我jenkins的地址http://localhost:8080/
,那么我只需要在浏览器地址栏上敲下http://localhost:8080/exit
网址就能关闭jenkins服务.
2、重启Jenkies
http://localhost:8080/restart
3、重新加载配置信息
http://localhost:8080/reload
mvn安装
jenkins中需要编译java代码,所以需要mvn环境
下载合适版本的maven:http://maven.apache.org/download.cgi
将下载的压缩文件复制到jenkins容器中
进入jenkins容器
## 解压maven
tar -zxvf apache-maven-3.3.9-bin.tar.gz
## 转移maven到合适的目录
mv apache-maven-3.3.9 /opt/maven
## 设置maven的环境变量
vi /etc/profile
## 设置内容如下
#maven env
export MAVEN_HOME=/opt/maven
PATH=$MAVEN_HOME/bin:$PATH
export PATH
## 编译profile生效
source /etc/profile
## 测试maven是否安装成功
[root@ci-server maven]# mvn --version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T11:41:47-05:00)
Maven home: /opt/maven
Java version: 1.8.0_111, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_111/jre
Default locale: zh_CN, platform encoding: GB18030
OS name: "linux", version: "3.10.0-514.2.2.el7.x86_64", arch: "amd64", family: "unix"
jenkins 调用maven有两种方式
1) 采用Jenkins插件方式调用
系统配置中配置maven
系统管理/系统设置/
然后调用的时候 在job中设置
2 ) jenkins 通过shell脚本调用 maven
需要在系统中配置好环境变量
Jenkins 通过shell脚本调用mvn 命令的时候,是从/usr/bin 文件夹中找命令的,这个时候需要做个软链接
ln -s /opt/maven/bin/mvn /usr/bin/mvn
这样设置后就不会出现 mvn command not found 的问题了
Maven默认会使用本地缓存的库来编译工程,如果上次下载的库失败将导致类似下面的错误
Non-resolvable import POM: Failure to find org.springframework:spring-framework-bom:pom:5.1.0.RC1 in http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced @ line 366, column 25 -> [Help 2]
解决办法
删除~/.m2/repository/对应目录或目录下的*.lastUpdated文件,然后再次运行maven命令
maven命令后加-U,如mvn package -U
在repository的release或者snapshots版本中新增updatePolicy属性,其中updatePolicy可以设置为”always”、”daily” (默认)、”interval:XXX” (分钟)或”never”
<repositories>
<repository>
<id>io.spring.repo.maven.release</id>
<url>http://repo.spring.io/release/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots><enabled>false</enabled></snapshots>
</repository>
</repositories>
当然你可以在容器中执行mvn help:system 将本地仓库清空重新下载