其他分享
首页 > 其他分享> > 企业级devops自动化部署学习 (4)jenkins的构建细节配置

企业级devops自动化部署学习 (4)jenkins的构建细节配置

作者:互联网

一:常用的构建触发器

Jenkins内置4种构建触发器: 

 

 

触发远程构建

1、在构建触发器中选择【触发远程构建】

2、访问远程构建地址即可触发构建

http://192.168.80.134:8888/job/test_pipeline_Declarative/build?token=6666

 

其他工程构建后触发

1、创建一个前置项目pre_job

2、创建一个项目(post_job)引用前置项目(pre_job)

3、构建前置的项目pre_job

 

 

定时构建

1、创建定时构建项目

2、配置定时构建日程表

定时字符串从左往右分别为: 分 时 日 月 周

一些定时表达式的例子:

每30分钟构建一次:H代表形参 H/30 * * * * 
每2个小时构建一次: H H/2 * * *
每天的8点,12点,22点,一天构建3次: (多个时间点中间用逗号隔开) 0 8,12,22 * * *
每天中午12点定时构建一次 H 12 * * *
每天下午18点定时构建一次 H 18 * * *
在每个小时的前半个小时内的每10分钟 H(0-29)/10 * * * *
每两小时一次,每个工作日上午9点到下午4点 H H(9-16)/2 * * 1-5

 

示例:配置每天凌晨2点构建

 

 

 

轮询SCM

轮询SCM,是指定时扫描本地代码仓库的代码是否有变更,如果代码有变更就触发项目构建。

1、创建轮询SCM构建项目

2、配置日程表

 

配置完后,Jenkins会定时扫描本地整个项目的代码,如果项目代码有变更,则会在日程表时间区间触发构建,这个构建方式会增大系统的开销,不建议使用。

 

 

Git hook自动触发构建

上面我们看到在Jenkins的内置构建触发器中,轮询SCM可以实现Gitlab代码更新,项目自动构建,但是该方案的性能不佳。那有没有更好的方案呢? 有的。就是利用Gitlab的webhook实现代码push到仓库,立即触发项目自动构建。

轮询SCM与webhook自动触发构建的示意图:

 

1、Jenkins安装Gitlab WebHook Trigger和Gitlab插件

2、配置Jenkins系统管理

 

3、在jenkins项目中配置Webhook触发器

4、把Jenkins生成的Gitlab webhook URL复制到Gitlab的webhook中

(1)、gitlab开启webhook功能

Menu->admin->settings->network->outbound requests->expand->勾选【Allow requests to the local network from web hooks and services】

(2)、gitlab在项目中添加webhook

(3)、在gitlab中测试触发器请求发送是否正确

表示gitlab的webhook配置正确,请求正常发送给了jenkins

 

 

(4)、更新代码并推送代码到gitlab,查看是否自动触发构建

 

(5)、启动项目并访问

java -jar /var/lib/jenkins/workspace/test_pipeline_Declarative/target/gitlab_test_demo-0.0.1-SNAPSHOT.jar

 

 

 

二:参数化构建

有时在项目构建的过程中,我们需要根据用户的输入动态传入一些参数,从而影响整个构建结果,这时我们可以使用参数化构建。Jenkins支持非常丰富的参数类型

 

下面示例通过输入gitlab的分支名称将代码部署到不同的分支中

 

1、gitlab中创建分支v1

 

2、修改下master代码再推送到gitlab中

 

 

3、在jenkins的test_pipeline_Declarative项目下添加字符串类型参数

4、在流水线pipeline中引用参数

 

5、构建项目,参数为master

 

6、访问项目

 

7、再次构建项目,构建参数选择为V1

 

8、再来访问项目

 

 

三:配置邮箱服务器发送构建结果

邮箱发送构建结果需要安装Email Extension插件

 

 

 

登录邮箱设置开启POP3/SMTP服务,IMAP/SMTP服务,并生成授权码

 

 

在Jenkins【Configure System】中设置邮件相关参数

(1)Jenkins Location设置管理员邮箱

 

2、Extended E-mail Notification配置SMTP服务器信息

3、在【邮件通知】里再配一次上述步骤的信息

4、测试上述配置是否正确

 

 

 

 

示例:演示企业项目中实现构建结束后发送邮件功能

1、在项目根目录中编写邮件发送模板,在网上找了个通用的邮件模板

<!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>
        本邮件由系统自动发出,无需回复!<br/>
        各位同事,大家好,以下为***项目构建信息</br>
        <td><font color="#CC0000">构建结果 - ${BUILD_STATUS}</font></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>构建状态: ${BUILD_STATUS}</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>
                <li>项目  报告: <a href="${PROJECT_URL}WebTest_Report">${PROJECT_URL}WebTest_Report</a></li>

            </ul>

            <h4><font color="#0B610B">失败用例</font></h4>
            <hr size="2" width="100%" />
            $FAILED_TESTS<br/>

            <h4><font color="#0B610B">最近提交(#$SVN_REVISION)</font></h4>
            <hr size="2" width="100%" />
            <ul>
                ${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
            </ul>
            详细提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/>
        </td>
        <td>
        </td>
    </tr>
</table>
</body>
</html>

 

2、在pipeline中添加邮件发送的配置

pipeline {
    agent any

    stages {
        stage('从gitlab中拉取代码') {
            steps {
               checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '4331acf3-f1e0-4e5a-a3c7-b4df55a286c6', url: 'git@192.168.80.133:test_group01/gitlab_test_demo.git']]])
            }
        }
        stage('编译构建打包') {
            steps {
                sh 'mvn clean package'
            }
         }
    }

    post {
        always {
            emailext(
                subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} -${BUILD_STATUS}!',
                body: '${FILE,path="email.html"}',
                to: 'xxx@qq.com'
            )
        }
    }
}

 

3、构建项目

 

构建完成后,收到了邮件,但是并没被html解析,下面修改下解析

 

在jenkins系统管理->【Extended E-mail Notification】中修改

再执行构建

 

正确收到了构建结果信息

 

标签:触发,项目,gitlab,devops,企业级,构建,BUILD,Jenkins,jenkins
来源: https://www.cnblogs.com/lrc123/p/16453253.html