jenkins使用入门(邮件、ssh、git、)

版权声明:本文为博主原创文章,转载请注明来源。开发合作联系[email protected] https://blog.csdn.net/luanpeng825485697/article/details/83017759

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 将本地仓库清空重新下载

猜你喜欢

转载自blog.csdn.net/luanpeng825485697/article/details/83017759