svn远程触发jenkins构建

1 jenkins 配置

在jenkins平台上配置job,开启远程触发构建

图1

2 svn配置仓库触发

在仓库/hook/目录创建post-commit文件,写入脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

#!/bin/sh
# 设置默认字符集,否则post信息到钉钉时中文乱码
export LANG=en_US.UTF-8

# svn中变量1为仓库路径,2为提交版本号
REPOS="$1"
REV="$2"

# 下方svnlook命令获取相应的结果
#mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf
time=$(date +%F/%T)
AUTHOR=$(/usr/bin/svnlook author -r ${REV} ${REPOS})
CHANGEDDIRS=$(/usr/bin/svnlook dirs-changed $REPOS)
MESSAGE=$(/usr/bin/svnlook log -r $REV $REPOS)

# 设置CONTENT的结果
CONTENT=提交时间:${time}\\n提交版本:${REV}\\n作者:${AUTHOR}\\n提交备注:${MESSAGE}\\n修改目录:${CHANGEDDIRS}

# 进入程序目录执行命令,发送提交结果到钉钉群
cd /home/
/usr/bin/java Request 130883d5c8dc420d8deaa5cdabe2c95adf9b780dbxxxxxxxxxxxxxx $CONTENT

# 上面都是发送svn更新到钉钉通知的设置,与发送触发到jenkins无关,下方配置jenkins触发
# jenkins触发命令
curl -u svnjenkins:svnjenkins http://192.168.0.120/jenkins/job/PU2017001_%E6%B4%9E%E8%A7%81_CI.CD_1.222/build?token=dongjian

命令格式
svnjenkins:svnjenkins # jenkins用户及密码
http://192.168.0.120/jenkins/ # jenkins访问url
job/PU2017001_%E6%B4%9E%E8%A7%81_CI.CD_1.222/build?token= # job地址,看图一绿色框内地址
dongjian # token的值,jenkins设置的token名字

3 svn远程触发jenkins,增加筛选

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#! /bin/bash
export LANG=en_US.UTF-8
REPOS="$1"
REV="$2"

#mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf
time=$(date +%F/%T)
AUTHOR=$(/usr/bin/svnlook author -r ${REV} ${REPOS})
CHANGEDDIRS=$(/usr/bin/svnlook dirs-changed $REPOS)
MESSAGE=$(/usr/bin/svnlook log -r $REV $REPOS)
CONTENT=提交时间:${time}\\n提交版本:${REV}\\n作者:${AUTHOR}\\n提交备注:${MESSAGE}\\n修改目录:${CHANGEDDIRS}
cd /home/
/usr/bin/java Request 130883d5c8dc420d8deaa5cdabe2c95adf9b780dbd36bxxxxxxxxxxxxxxxxxx $CONTENT

# 筛选规则
b=$(echo ${MESSAGE} | grep build)
if [[ "$b" != "" ]]
then
curl -u svnjenkins:svnjenkins http://192.168.0.120/jenkins/job/PU2017001_%E6%B4%9E%E8%A7%81_CI.CD_1.222/build?token=dongjian
sleep 5
curl -u svnjenkins:svnjenkins http://192.168.0.120/jenkins/view/%E5%AE%A1%E6%9F%A5js/job/PU2017001_dongjian_js/build?token=dongjian
fi

脚本说明
根据${MESSAGE}的结果,筛选是否包含build字符,如果包含,触发远程构建,如果不包含,不做任何操作。

-------------本文结束感谢您的阅读-------------

本文标题:svn远程触发jenkins构建

文章作者:OperationMAN

发布时间:2019年08月09日 - 16:08

最后更新:2022年03月31日 - 13:03

原始链接:https://kxinter.gitee.io/2019/08/09/svn远程触发jenkins构架/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我继续创作!