Jenkins构建状态邮件通知以及Jenkins结合Gitee、Github、Gitlab、SVN自动构建部署

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 Jenkins构建状态邮件通知以及Jenkins结合Gitee、Github、Gitlab、SVN自动构建部署,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

Curl命令触发自动构建

配置构建触发器

给Jenkins项目特定的 URL 地址发送请求,并且以请求参数的形式携带一个特定值(身份验证令牌)

例如项目触发地址:JENKINS_URL/job/MyTest/build?token=TOKEN_NAME

在这里插入图片描述
注意:需要已登录账号且有相关权限情况下方能访问

请求:http://IP:8080/jenkins/view/all/job/MyTest/build?token=TOKEN_NAMEE将触发Jenkins自动构建

获取crumb值

生成API TOKEN

从用户列表找到需要生成API TOKEN的用户

在这里插入图片描述

选择设置进行生成API TOKEN

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

生成crumb值

访问:http://admin:114f8c536957ba2cebc331e4399a27994c@112.74.96.150:8080/jenkins/crumbIssuer/api/xml生成crumb值

在这里插入图片描述

curl命令触发自动构建

curl命令说明

curl 命令发送HTTP请求参数说明:

-X 参数:指定请求方式
-v 参数:显示响应结果
-u 参数:携带用户名:密码
-H 参数:携带请求消息头信息
curl -X post -v -u admin:3219fd02fd0c46c2b84fff9cc0fd730c -H "Jenkins-Crumb:a645f783207695c7e2c0869d10f71e6c86765e56672d917bab3a0dffb3482558" http://IP:8080/jenkins/job/MyTest/build?token=TOKEN_NAME

执行测试

响应结果:

* About to connect() to IP port 8080 (#0)
*   Trying IP...
* Connected to IP (IP) port 8080 (#0)
* Server auth using Basic with user 'admin'
> post /job/MyTest/build?token=TOKEN_NAME HTTP/1.1
> Authorization: Basic YWRtaW46NTIwY2hlbi4u
> User-Agent: curl/7.29.0
> Host: IP:8080
> Accept: */*
> Jenkins-Crumb:a645f783207695c7e2c0869d10f71e6c86765e56672d917bab3a0dffb3482558
> 
< HTTP/1.1 201 Created
< Date: Tue, 24 May 2022 13:40:55 GMT
< X-Content-Type-Options: nosniff
< Location: http://IP:8080/queue/item/59/
< Content-Length: 0
< Server: Jetty(9.4.43.v20210629)
< 
* Connection #0 to host IP left intact

Jenkins构建状态邮件通知

前提是需要安装Email Extension Plugin插件,当前版本默认已安装。
在这里插入图片描述

邮箱配置

使用163邮箱作为测试
在这里插入图片描述
开启POP3/SMTP/IMAP服务与添加授权密码
在这里插入图片描述

配置系统管理员的邮箱地址

在系统管理->系统设置中

在Jenkins Location中配置系统管理员的邮箱地址,不进行配置的话将无法发送邮件

Failed to send out e-mail
com.sun.mail.smtp.SMTPSenderFailedException: 553 Mail from must equal authorized user

在这里插入图片描述

配置邮件通知

在系统管理->系统设置中
在这里插入图片描述

邮件通知测试

在这里插入图片描述
在这里插入图片描述

对Extended E-mail Notification模块进行配置

用于发送构建后的报告邮件,不进行配置的话,在之后的项目构建中,你就会看到构建成功,邮件也发送成功,哎但是邮箱就是没有收到邮件

Extended E-mail Notification模块,就在邮件通知模块的上方

邮件服务器相关配置
在这里插入图片描述
在这里插入图片描述
邮件发送内容类型与默认收件人配置
在这里插入图片描述
邮件发送主题与内容配置

在这里插入图片描述

<!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>    
            ${PROJECT_NAME }项目构建信息</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>    
                </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>    
        </tr>    
    </table>    
</body>    
</html>

启用DeBug和触发条件
在这里插入图片描述

在这里插入图片描述

项目构建后配置Editable Email Notification

在这里插入图片描述
添加后只需要修改以下2处(邮件内容类型,是否发送构建日志),其他采用全局默认配置即可,有需要自行修改;
在这里插入图片描述
点击立即构建测试
在这里插入图片描述

附件发送

确定主目录位置
在这里插入图片描述

cd /root/.jenkins/workspace/MyTest
mkdir files
cd files

files2.txt  files.txt

Attachments的读取路径是主目录下的workspace文件夹
在这里插入图片描述

在这里插入图片描述

Gitee通知Jenkins自动构建

安装Gitee插件

在这里插入图片描述

配置Gitee

Jenkins构建状态邮件通知以及Jenkins结合Gitee、Github、Gitlab、SVN自动构建部署

生成API令牌

访问https://gitee.com/profile/personal_access_tokens获取Gitee API V5 的私人令牌

在这里插入图片描述
在这里插入图片描述

执行测试

在这里插入图片描述

配置

新建Job任务,配置Gitee链接
在这里插入图片描述
源码管理配置
在这里插入图片描述
触发器配置
在这里插入图片描述

在这里插入图片描述

Gitee项目配置WebHook

在这里插入图片描述

推送测试

在这里插入图片描述

GitHub通知Jenkins自动构建

配置Access token

在GitHub个人设置中心找到Developer settings
在这里插入图片描述
点击Personal access tokens再点击 Generate new token
在这里插入图片描述
勾上 repo 和 admin:repo_hook
在这里插入图片描述

配置Jenkins的GitHub

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

配置SSH

在这里插入图片描述

在这里插入图片描述

源码管理配置

在这里插入图片描述

构建触发器配置

构造触发器选择:GitHub hook trigger for GITScm polling在这里插入图片描述

构建环境配置

勾选Use secret text(s) or file(s),”凭据”选择之前配置过的凭证
在这里插入图片描述

配置webhook地址

在这里插入图片描述

推送测试

在这里插入图片描述

Gitlab通知Jenkins自动构建

安装gitlab插件

系统管理 —>> 插件管理 —>> 安装插件gitlab插件
在这里插入图片描述

生成Gitlab API令牌

输入令牌名称:Jenkins,到期时间:2023-01-01,根据实际需求勾选权限,最后创建令牌
在这里插入图片描述
新创建的access token
在这里插入图片描述
翻到最上,有访问令牌内容
在这里插入图片描述

配置访问gitlab的凭据

在这里插入图片描述
在这里插入图片描述
API token: 在gitlab中创建的token
在这里插入图片描述

配置Gitlab

系统管理—>系统配置—>Gitlab—>输入自定义连接名称:GitLab,指定GitLab访问地址,创建或选择GitLab通信凭证,点击Test Connection测试
在这里插入图片描述

配置构建触发器

在这里插入图片描述
生成token
在这里插入图片描述

源码管理配置

GitLab配置SSH
在这里插入图片描述
配置源码地址及对应凭证
在这里插入图片描述
在这里插入图片描述

配置Webhooks地址

gitlab对应的project上,创建Webhooks;将Jenkins的Secret token 与Build URL 复制到gitlab中
在这里插入图片描述
SSL验证根据需求开启,点击Add webhook进行添加
在这里插入图片描述

执行推送测试

在这里插入图片描述

SVN通知Jenkins自动构建

SVN的钩子程序

svn版本控制仓库下某个hooks目录,里面有SVN 版本库的钩子程序

ls
post-commit.tmpl  post-lock.tmpl  post-revprop-change.tmpl  post-unlock.tmpl  pre-commit.tmpl  pre-lock.tmpl  pre-revprop-change.tmpl  pre-unlock.tmpl  start-commit.tmpl

钩子程序由 post-commit.tmpl 复制得到,且得到文件名不能有后缀,否则不能正常使用。

cp post-commit.tmpl  post-commit

配置钩子程序

编辑钩子程序:vim post-commit,注释原有内容,加入 第五步得到的curl 命令

# http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/ and
# http://svn.apache.org/repos/asf/subversion/trunk/contrib/hook-scripts/


# REPOS="$1"
# REV="$2"
curl -X post -v -u admin:3219fd02fd0c46c2b84fff9cc0fd730c -H "Jenkins-Crumb:a645f783207695c7e2c0869d10f71e6c86765e56672d917bab3a0dffb3482558" http://IP:8080/jenkins/job/MyTest/build?token=TOKEN_NAME
# mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf

配置源码管理

配置同前几个类似,配置完成后即可执行提交代码测试。
在这里插入图片描述

Jenkins pipeline

新建工程

在这里插入图片描述

编写pipeline脚本

在这里插入图片描述

node {
    def mvnHome
        stage('git checkout') {
        checkout([$class: 'GitSCM', branches: [[name: '*/dev']],
            doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [],
            userRemoteConfigs: [[url: 'git@gitee.com:XXX/my-test.git']]])
        }
        stage('maven Build') {
            echo "maven build........."
        }
        stage('deploy') {
            echo "deploy..........."
        }
        stage('test') {
            echo "test..........."
        }
}

构建测试

在这里插入图片描述
在这里插入图片描述

从仓库中读取pipeline脚本

可以从代码仓库中读取pipeline脚本(把pipeline脚本放在仓库中)之后如果要更改步骤,不需要再更改jenkins的步骤,直接更改文件即可。

在项目根目录下编写Jenkinsfile脚本文件并提交到Git仓库

node {
    def mvnHome
        stage('maven Build') {
            echo "maven build........."
        }
        stage('deploy') {
            echo "deploy..........."
        }
        stage('test') {
            echo "test..........."
        }
}

选择git
在这里插入图片描述
脚本路径的配置,一定要和仓库中的路径相一致
在这里插入图片描述
在这里插入图片描述

Jenkins流水线自动化发布Java项目

新建job

在这里插入图片描述

参数化构建

参数化构建就是在构建项目时传入一个参数,该参数可以在JenkinsFile中使用
在这里插入图片描述
在这里插入图片描述

编写Jenkinsfile

在这里插入图片描述

git checkout: 拉取代码,${branch}:使用上数参数构建中的参数

maven build:指定JAVA_HOME,执行Maven清理打包跳过测试阶段

deploy:指定运行环境,判断与目录备份,解压war到指定目录,Kill进程,最后启动tomcat

test:访问服务
node () {
    stage('git checkout') {
        checkout([$class: 'GitSCM', branches: [[name: '${branch}']],
        doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [],
        userRemoteConfigs: [[url: 'git@gitee.XXX/my-test.git']]])
    }
    stage('maven build') {
        sh 'export JAVA_HOME=/usr/local/jdk1.8'
        sh '/usr/local/maven/bin/mvn clean package -Dmaven.test.skip=true'
    }

    stage('deploy') {
        sh '''JENKINS_NODE_COOKIE=dontkillme
        export JAVA_HOME=/usr/local/jdk1.8
        export JRE_HOME=/usr/local/jdk1.8/jre
        TOMCAT_NAME=tomcat
        TOMCAT_HOME=/usr/local/$TOMCAT_NAME
        WWWROOT=$TOMCAT_HOME/webapps/ROOT
        if [ -d $WWWROOT ]; then
        mv $WWWROOT /data/backup/${TOMCAT_NAME}-$(date +"%F_%T")
        fi
        unzip ${WORKSPACE}/target/*.war -d $WWWROOT
        PID=$(ps -ef |grep $TOMCAT_NAME |egrep -v "grep|$$" |awk \'{print $2}\')
        [ -n "$PID" ] && kill -9 $PID
        /bin/bash $TOMCAT_HOME/bin/startup.sh'''
}

    stage('test') {
        sleep 5
        sh "curl http://IP:8081"
        echo "test success ..."
    }
}

传入参数进行构建

在这里插入图片描述
注意:

1.构建阶段错误,参考tomcat/logs/catalina.out日志进行排查

2.编写Jenkinsfile时,Test阶段访问服务需要sleep 5给予一定时间
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/136963.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!