自动化部署-svn hook触发构建
目的
之前是通过轮询的形式,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触发构建的更多相关文章
- jenkins自动化部署项目9 --定时构建
举几个例子:每隔5分钟构建一次H/5 * * * * 每两小时构建一次H H/2 * * * 每天中午12点定时构建一次H 12 * * * 每天下午18点定时构建一次H 18 * * * 在每个小时 ...
- Java-Maven-Runoob:Maven 自动化部署
ylbtech-Java-Maven-Runoob:Maven 自动化部署 1.返回顶部 1. Maven 自动化部署 项目开发过程中,部署的过程包含需如下步骤: 将所的项目代码提交到 SVN 或者代 ...
- 自动化部署--Jenkins
自动化部署--Jenkins--简介安装(一) https://www.jianshu.com/p/b9ce206139f1 自动化部署--Jenkins--Maven构建(二) https://w ...
- Jenkins与gitlib实现自动化部署与持续构建
Jenkins概念 Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台.这是一个免费的源代码,可以处理任何类型的构建或持续集成.集成Jenkins可以用于一些测试和 ...
- Windows版Jenkins+SVN+Maven自动化部署环境搭建【转】
前言 因今年公司新产品线较多,为了降低耦合,达到业务分离.重用,提高内部开发效率的目的,采用了基于服务组件.前后端分离的架构体系.与之前传统单应用架构相比,系统部署.配置更加复杂,为了能够频繁地将软件 ...
- Jenkins+SVN+Maven+shell 自动化部署实践
JAVA环境中利用Jenkins+svn+maven进行自动化部署实践 一. 前言2 1.介绍jenkins2 1.本地项目打包2 2.通过secureCRT工具,手动传输到服务器2 3.然后 ...
- jenkins+svn+gradle自动化部署笔记
自己虚拟机jekins配置:(jenkins+svn+gradle)自动化部署,1.linux配置好jdk,解压tomcat,将 jenkins.war翻到webapps目录下.2.系统管理-管理用户 ...
- SVN怎么触发Jenkins自动构建
通常,有几种方式可以在SVN仓库发生改变时触发Jenkins进行构建.第一种是,Jenkins主动轮询SVN仓库:第二种是,在SVN客户端(如TortoiseSVN)创建客户端hooks来触发构建:第 ...
- jenkins搭建自动化部署平台(svn+tomcat重启)
原文链接:http://blog.csdn.net/zjs40/article/details/51818322 jenkins 自动化部署和集成代码的平台 可以将Git svn 上的代码 check ...
随机推荐
- C++ 堆&栈等的说明
Stack 堆 存在于某作用域内的一块空间.说白了就是函数产生的空间,用于存放函数的变量.返回地址. 在函数体中声明的局部变量,就时存储在Stack中. Heap 栈 由操作系统提供的全局空间.在程序 ...
- ios App 开发指南
开发者账号申请 http://www.applicationloader.net/blog/zh/547.html https://zhuanlan.zhihu.com/p/66118041 http ...
- Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
docker pull nginx 遇到这个问题 Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: ...
- luoguP3246 [HNOI2016]序列
题意 这题很难想到用莫队去做,因为第一印象是这个没办法O(1)移动指针. 考虑从\([l,r]\)移动到\([l,r+1]\) (从\([l,r]\)移动到\([l-1,r]\)同理). 我们用ST表 ...
- 解决谷歌浏览器在F12情况下自动断点问题(Paused in debugger)
解决谷歌浏览器在F12情况下自动断点问题(Paused in debugger) 最近在使用谷歌浏览器在调试js脚本的时候,每次按F12,再刷新页面,都会跳出如上图所示的图标,自动进入断点调试.如果不 ...
- Centos7升级gcc极简教程
centos7默认gcc版本为4.8,一般不满足编译需求,因此升级gcc版本为常见操作: 现有博客中,大多数教程都是基于源码重新编译安装:但是源码编译过程等待时间很长且编译麻烦. 因此,直接基于命令升 ...
- AtCoder Grand Contest 039
Preface 我发现我现在打AT真的是只会D-Before-- E,F都是抄曲明姐姐的,然后D还是几何画板猜结论做的(证明都是陈指导想的) 看来再这样下去就真的要退役了啊233 A - Connec ...
- TensorFlow中实现RNN,彻底弄懂time_step
这篇博客不是一篇讲解原理的博客,这篇博客主要讲解tnesorlfow的RNN代码结构,通过代码来学习RNN,以及讲解time_steps,如果这篇博客没有让你明白time_steps,欢迎博客下面评论 ...
- 详解JAVA8函数式接口{全}
1: 函数式接口 1.1 概念 1.2 格式 1.3@FunctionalInterface注解 1.4 调用自定义函数接口 2:函数式编程 2.1:lambda的延迟执行 2.2 使用Lambda作 ...
- windows 下命令行启动 appium-desktop
启动appium-desktop如果要启动appium-desktop,双击appium.exe,启动后如下图: 启动appium-server通过下面解决方案直接启动appium-server, ...