自动化部署-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 ...
随机推荐
- QT无窗口状态下对键盘事件的监听
Question:最近在搞linux下的一个客户端项目,需要接收键盘事件,但是又不能有界面,这种情况怎么处理呢? int main(int argc, char *argv[]) { QApplica ...
- 【二】Gradle中的gradlew
gradle 相当于 gradle wapper,是gradle的包装命令 使用gradlew来构建项目被认为是最佳实践. 使用gradlew有以下好处: 当客户机上没有安装gradle时,可以直接用 ...
- Django模版中加载静态文件配置详解
.settings.INSTALLED_APPS下添加:django.contrib.staticfiles .settings.py下添加:STATIC_URL = '/static/' . ()在 ...
- MySql 库/表级操作 及 数据类型
数据库分类 关系型数据库(SQL):存储方式固定,安全 非关系型数据库(NoSQL):存储方式比较灵活,存储数据的效率比较高,不太安全 MySQL是一种关系型数据库管理系统(采用关系模型来组织管理数据 ...
- Java Web 学习(4) —— Spring MVC 概览
Spring MVC 概览 一. Spring MVC Spring MVC 是一个包含了 Dispatcher Servlet 的 MVC 框架. Dispatcher Servlet 实现了 : ...
- 洛谷 P5639 【CSGRound2】守序者的尊严
洛谷 P5639 [CSGRound2]守序者的尊严 洛谷传送门 题目背景 由于Y校最近进行了对学校食堂的全面改革与对小卖部的全面整治(乱搞),导致学校小卖部卖的零食被禁售了:学校食堂的炸鸡窗口也消失 ...
- 注意设置httpclient连接数
在使用Httpclient的过程中,当访问量增大的时候,会发现本地的连接等待时间急剧增加,例如从400ms增加到 78000ms,之前一直以为是航信系统问题,后面经过检查才发现,原来是本地httpcl ...
- WPF 精修篇 DataGrid 筛选
原文:WPF 精修篇 DataGrid 筛选 DataGrid也可以分组 但是用的地方不多 就没写 筛选还是可以的 比如Datagrid数据量比较大 要做数据筛选 贴码 <DataGrid x: ...
- vscode源码分析【三】程序的启动逻辑,性能问题的追踪
第一篇: vscode源码分析[一]从源码运行vscode 第二篇:vscode源码分析[二]程序的启动逻辑,第一个窗口是如何创建的 启动追踪 代码文件:src\main.js 如果指定了特定的启动参 ...
- java之运算符的优先级
优先级 运算符 结合性 1 () [] 从左往右 2 ! +(正) -(负) ++ -- 从右往左 3 * / % 从左往右 4 << >> >>> 从左往 ...