0
点赞
收藏
分享

微信扫一扫

jenkins教程_3 jenkins 风格类型

yundejia 2023-05-10 阅读 72



文章目录

  • 3. jenkins 风格类型
  • 3.1 自由风格类型
  • 3.1.1 拉取代码
  • 3.1.2 编译
  • 3.1.3 部署
  • 3.2 Maven 风格类型
  • 3.2.1 安装Maven Integration插件
  • 3.2.2 创建Maven项目
  • 3.2.3 配置项目
  • 3.3 流水线风格类型
  • 3.3.1 安装pipline
  • 3.3.2 创建项目
  • 3.3.3 拉取代码
  • 3.3.4 构建成功
  • 3.4 jenkins 常见的触发器
  • 3.4.1 gitee 触发器
  • 3.4.2 触发远程构建
  • 3.4.3 其他工程创建触发
  • 3.4.4 定时构建
  • 3.4.5 参数化构建
  • 3.5 邮件发送
  • 3.5.1 安装插件
  • 3.5.2 开启邮箱支持
  • 3.5.3 配置
  • 3.6 SonarQube 代码审查


3. jenkins 风格类型

3.1 自由风格类型

拉取代码->编译->打包->部署

3.1.1 拉取代码

jenkins教程_3 jenkins 风格类型_web

3.1.2 编译

构建->添加构建步骤->Executor Shell

jenkins教程_3 jenkins 风格类型_jenkins_02

echo "开始编译和打包" 
mvn clean package 
echo "编译和打包结束"

jenkins教程_3 jenkins 风格类型_python_03

这个时候会报错,

jenkins教程_3 jenkins 风格类型_java_04

解决方法

echo $PATH

复制path 路径,点击全局配置,添加全局属性

jenkins教程_3 jenkins 风格类型_git_05

3.1.3 部署

把项目部署到远程的Tomcat里面

安装 Deploy to container插件

点击构建后操作

jenkins教程_3 jenkins 风格类型_java_06

添加tomcat 的凭证

jenkins教程_3 jenkins 风格类型_python_07

构件后操作

jenkins教程_3 jenkins 风格类型_web_08

就可以打包成功

3.2 Maven 风格类型

3.2.1 安装Maven Integration插件

jenkins教程_3 jenkins 风格类型_java_09

3.2.2 创建Maven项目

jenkins教程_3 jenkins 风格类型_git_10

3.2.3 配置项目

jenkins教程_3 jenkins 风格类型_jenkins_11

3.3 流水线风格类型

Pipeline 脚本是由 Groovy 语言实现的,但是我们没必要单独去学习 Groovy

Pipeline 支持两种语法:Declarative(声明式)和 Scripted Pipeline(脚本式)语法

Pipeline 也有两种创建方法:可以直接在 Jenkins 的 Web UI 界面中输入脚本;也可以通过创建一

个 Jenkinsfifile 脚本文件放入项目源码库中(一般我们都推荐在 Jenkins 中直接从源代码控制(SCM)

中直接载入 Jenkinsfifile Pipeline 这种方法)。

3.3.1 安装pipline

jenkins教程_3 jenkins 风格类型_git_12

3.3.2 创建项目

jenkins教程_3 jenkins 风格类型_jenkins_13

3.3.3 拉取代码

jenkins教程_3 jenkins 风格类型_jenkins_14

自定义流水线

jenkins教程_3 jenkins 风格类型_java_15

构建流水线语法

jenkins教程_3 jenkins 风格类型_web_16

拉取代码

jenkins教程_3 jenkins 风格类型_java_17

生成pipline 代码

jenkins教程_3 jenkins 风格类型_git_18

构件代码

pipeline {
    agent any

    stages {
        stage('pull code') {
            steps {
                checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '1527f9a8-f6ed-41b3-93a7-c05a88f36de9', url: 'https://gitee.com/fakerlove/clock']]])
            }
        }
          stage('build project') {
            steps {
               sh 'mvn clean package'
            }
        }
          stage("sa") {
            steps {
                echo 'goujian构件wancheng'
            }
        }
    }
    
}

3.3.4 构建成功

jenkins教程_3 jenkins 风格类型_web_19

3.4 jenkins 常见的触发器

jenkins 常见触发器

jenkins教程_3 jenkins 风格类型_jenkins_20

其中gitee为安装了gitee 插件后,出现的触发

默认有4种

  • 触发远程构建
  • 轮训SCM
  • 其他工程构建后触发
  • 定时构建

3.4.1 gitee 触发器

gitee 设置签发文章

https://gitee.com/help/articles/4193#article-header9

在jenkins 上设置触发器,点击生成秘钥

jenkins教程_3 jenkins 风格类型_web_21

gitee设置webHook

jenkins教程_3 jenkins 风格类型_jenkins_22

修改代码,提交至gitee,jenkins立即进行了刷新测试

jenkins教程_3 jenkins 风格类型_git_23

3.4.2 触发远程构建

设置token信息

jenkins教程_3 jenkins 风格类型_jenkins_24

输入网址即可进行触发

http://192.168.66.101:8888/job/web_demo_pipeline/build?token=6666

3.4.3 其他工程创建触发

创建pre_job流水线工程

jenkins教程_3 jenkins 风格类型_web_25

配置需要触发的工程

jenkins教程_3 jenkins 风格类型_python_26

3.4.4 定时构建

jenkins教程_3 jenkins 风格类型_web_27

每30分钟构建一次:H代表形参 H/30 * * * * 10:02 10:32

每2个小时构建一次: H H/2 * * *

每天的8点,12点,22点,一天构建3次: (多个时间点中间用逗号隔开) 0 8,12,22 * * *

每天中午12点定时构建一次 H 12 * * *

每天下午18点定时构建一次 H 18 * * *

在每个小时的前半个小时内的每10分钟 H(0-29)/10 * * * *

每两小时一次,每个工作日上午9点到下午5点(也许是上午10:38,下午12:38,下午2:38,下午

4:38) H H(9-16)/2 * * 1-5

3.4.5 参数化构建

3.5 邮件发送

3.5.1 安装插件

jenkins教程_3 jenkins 风格类型_java_28

3.5.2 开启邮箱支持

开启权限

jenkins教程_3 jenkins 风格类型_jenkins_29

点击生成授权码

jenkins教程_3 jenkins 风格类型_java_30

发送配置短信,发送完成后,点击我已发送、获取密码

jenkins教程_3 jenkins 风格类型_jenkins_31

3.5.3 配置

配置邮件管理员

jenkins教程_3 jenkins 风格类型_web_32

配置Extended

jenkins教程_3 jenkins 风格类型_git_33

配置 jenkins 默认邮箱

jenkins教程_3 jenkins 风格类型_python_34

点击测试

jenkins教程_3 jenkins 风格类型_web_35

在项目的根目录下创建email.html

<!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>
        <td>
            <h2>
                <span style="color: #0000FF; ">构建结果 - ${BUILD_STATUS}</span>
            </h2>
        </td>
    </tr>
    <tr>
        <td><br/> <b><span style="color: #0B610B; ">构建信息</span></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><span style="color: #0B610B; ">Changes Since Last Successful Build:</span></b>
            <hr size="2" width="100%" align="center"/>
        </td>
    </tr>
    编写Jenkinsfile添加构建后发送邮件
    <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>Failed Test Results</b>
            <hr size="2" width="100%" align="center"/>
        </td>
    </tr>
    <tr>
        <td>
            <pre style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre>
            <br/>
        </td>
    </tr>
    <tr>
        <td>
            <b>
                <span style="color: #0B610B; ">构建日志 (最后 100行):</span>
            </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>

jenkins教程_3 jenkins 风格类型_java_36

修改流水线的语法,在最后添加pipline 语法

pipeline {
    agent any

    stages {
        stage('pull code') {
            steps {
                checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: '1527f9a8-f6ed-41b3-93a7-c05a88f36de9', url: 'https://gitee.com/fakerlove/clock']]])
            }
        }
          stage('build project') {
            steps {
               sh 'mvn clean package'
            }
        }
          stage("sa") {
            steps {
                echo 'goujian构件wancheng'
            }
        }
    }
    post { 
        always {
            emailext(
                subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!', 
                body: '${FILE,path="email.html"}', 
                to: '203462009@qq.com' ) 
        }
    }
}

点击重新构建,构建完成后,会接收到邮件信息

jenkins教程_3 jenkins 风格类型_git_37

3.6 SonarQube 代码审查


举报

相关推荐

0 条评论