目的

  之前是通过轮询的形式,2分钟更新一次svn,即时性不高,现在想要实现提交代码时直接触发构建

方案

  使用svn的服务器hook,当有代码提交时请求jenkins api实现构建

具体实现

  1、jenkins的准备

    jenkins的用户管理中添加Token,token需要保存下来,后面无法查看

    

    设置需要触发的构建任务,构建触发器勾选触发远程构建,设置一个自定义的令牌Token

    

  2、svn hook

    这里还是使用python去请求jenkins,创建python文件PostTouchJenkinsBuild.py

#!/usr/bin/python
# -*- coding: UTF-8 -*- import argparse
import os
import requests # 定义参数
parser = argparse.ArgumentParser()
# 仓库路径
parser.add_argument('-s', '--repos', type=str, default=None)
# 版本号
parser.add_argument('-v', '--rev', type=str, default=None)
# 分支
parser.add_argument('-b', '--branch', type=str, default=None)
# Jenkins Job Token
parser.add_argument('-t', '--job_token', type=str, default=None)
# Jenkins Job名
parser.add_argument('-n', '--job_name', type=str, default=None)
args = parser.parse_args()
# 读取修改目录
svndirschanged = os.popen(
'"C:\\Program Files (x86)\\VisualSVN Server\\bin\\svnlook.exe" dirs-changed -r {} {}'.format(args.rev, args.repos)).readlines()
# 判断修改是否包含分支
for changed in svndirschanged:
if changed.find("{}/".format(args.branch)) >= 0:
# 请求jenkins进行构建 jenkinsurl为部署的jenkins地址
response = requests.get('http://root:113ce72325xxxxxxxx@jenkinsurl/job/{}/buildWithParameters?token={}'.format(args.job_name, args.job_token))
     break

    root为jenkins用户Id,113ce72325xxxxxxxx为上面添加的api token,其他跟项目有关的参数,调用时再传进来

    在提交代码后触发,所以使用post-commit,在svn仓库相应项目的hooks文件夹中添加批处理文件post-commit.bat(windows服务器),任务名有中文时需要注意编码

SET REPOS=%1
SET REV=%2
"D:\Python\Python38-32\python.exe" "D:\Python\Project\SvnHookPython\PostTouchJenkinsBuild.py" -s %REPOS% -v %REV% -b trunk -t 11193a3f81441xxxxxxxxxxxxxxx -n LastOne-测试区

    svn钩子触发时会传入两个参数,提交时的仓库路径和版本号,我们获取后传给python获取修改目录来判断修改分支,只有相应分支发生修改才进行构建

    -s 仓库路径

    -v 版本号

    -t 任务设置的自定义令牌Token

    -b 分支名

    -n jenkins任务名

自动化部署-svn hook触发构建的更多相关文章

  1. jenkins自动化部署项目9 --定时构建

    举几个例子:每隔5分钟构建一次H/5 * * * * 每两小时构建一次H H/2 * * * 每天中午12点定时构建一次H 12 * * * 每天下午18点定时构建一次H 18 * * * 在每个小时 ...

  2. Java-Maven-Runoob:Maven 自动化部署

    ylbtech-Java-Maven-Runoob:Maven 自动化部署 1.返回顶部 1. Maven 自动化部署 项目开发过程中,部署的过程包含需如下步骤: 将所的项目代码提交到 SVN 或者代 ...

  3. 自动化部署--Jenkins

    自动化部署--Jenkins--简介安装(一) https://www.jianshu.com/p/b9ce206139f1 自动化部署--Jenkins--Maven构建(二)  https://w ...

  4. Jenkins与gitlib实现自动化部署与持续构建

    Jenkins概念 Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenkins可以用于一些测试和 ...

  5. Windows版Jenkins+SVN+Maven自动化部署环境搭建【转】

    前言 因今年公司新产品线较多,为了降低耦合,达到业务分离.重用,提高内部开发效率的目的,采用了基于服务组件.前后端分离的架构体系.与之前传统单应用架构相比,系统部署.配置更加复杂,为了能够频繁地将软件 ...

  6. Jenkins+SVN+Maven+shell 自动化部署实践

      JAVA环境中利用Jenkins+svn+maven进行自动化部署实践   一. 前言2 1.介绍jenkins2 1.本地项目打包2 2.通过secureCRT工具,手动传输到服务器2 3.然后 ...

  7. jenkins+svn+gradle自动化部署笔记

    自己虚拟机jekins配置:(jenkins+svn+gradle)自动化部署,1.linux配置好jdk,解压tomcat,将 jenkins.war翻到webapps目录下.2.系统管理-管理用户 ...

  8. SVN怎么触发Jenkins自动构建

    通常,有几种方式可以在SVN仓库发生改变时触发Jenkins进行构建.第一种是,Jenkins主动轮询SVN仓库:第二种是,在SVN客户端(如TortoiseSVN)创建客户端hooks来触发构建:第 ...

  9. jenkins搭建自动化部署平台(svn+tomcat重启)

    原文链接:http://blog.csdn.net/zjs40/article/details/51818322 jenkins 自动化部署和集成代码的平台 可以将Git svn 上的代码 check ...

随机推荐

  1. Shell—常见报错问题

    bash:$'\r': command not found 造成这个问题的原因是Windows环境下换行的“\r”到了Linux环境下不能够识别了,因为Linux环境下默认的换行符为“\n”,我们只需 ...

  2. d-堆

    二叉堆因为实现简单,因此在需要优先队列的时候几乎总是使用二叉堆.d-堆是二叉堆的简单推广,它恰像一个二叉堆,只是所有的节点都有d个儿子(因此,二叉堆又叫2-堆).下图表示的是一个3-堆.注意,d-堆要 ...

  3. [Linux] 获取出日志中的邮箱shell

    需求是把所有的日志中邮箱获取出来,根据指定关键字过滤,邮箱的格式是\txxx@xxx\t的格式,日志的存放是按照日期作为目录 #!/bin/bash logBasePath="/data1/ ...

  4. Linux系统学习 六、网络基础—Linux的IP地址的配置

    1.ifconfig命令临时配置IP地址 2.setup工具永久配置IP地址 3.修改网络配置文件 4.图形界面配置IP地址 ifconfig命令临时配置IP地址 主要的作用是查看网络信息,也可以临时 ...

  5. MongoDB学习笔记(四、MongoDB安全管理)

    目录: mongoDB角色 mongoDB初始化账号 mongoDB安全认证 其它常用的命令 mongoDB角色: mongoDB初始化账号: 1.启动mongoDB ./mongod -f mong ...

  6. layUI学习第四日:layUI布局系列一

    1.栅格布局规则 1.1 layui-row定义行,如:<div class="layui-row"></div> 1.2 layui-col-md*这样的 ...

  7. P4762 [CERC2014]Virus synthesis

    题意 真是道回文自动机好题. 首先考虑答案必定是一个回文串+剩余部分的形式,因此可以建出回文自动机,之后考虑每个长度为偶数的回文串. 对于一个长度为偶数的回文串,设它在回文自动机上对应的节点为\(x\ ...

  8. vue-cil3 运行报错 --- warnings potentially fixable with the `--fix` option

    warnings potentially fixable with the `--fix` option. 将一下部分:"lint": "vue-cli-service ...

  9. ubuntu 16.04 + eigen3 安装(解决 fatal error: Eigen/Core: No such file or directory)

    1.安装 sudo apt-get install libeigen3-dev 2. 解决 fatal error: Eigen/Core: No such file or directory 当调用 ...

  10. C# 如何添加自定义键盘处理事件 如何配置app.config ? | csharp key press event tutorial and app.config

    本文首发于个人博客https://kezunlin.me/post/9f24ebb5/,欢迎阅读最新内容! csharp key press event tutorial and app.config ...