ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-07-07 21:31:59  阅读:229  来源: 互联网

标签:触发 项目 gitlab devops 企业级 构建 BUILD Jenkins jenkins


一:常用的构建触发器

Jenkins内置4种构建触发器: 

  • 触发远程构建
  • 其他工程构建后触发(Build after other projects are build)
  • 定时构建(Build periodically)
  • 轮询SCM(Poll SCM)

 

 

触发远程构建

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有