svn关联Jenkins自动发布代码

SVN的仓库hooks的原理是这样的: 当你对该仓库执行一些操作时,比如创建一个新的revision版本或修改一个未版本化的属性,就会触发hooks目录下的相应程序。操作的事件(或时间节点)是跟程序文件名相对应的。举个例子,post-commit,代表,你往该仓库提交完成后,如果此时hooks目录下有一个叫做post-commit的程序文件的话,该程序就会被触发执行。该程序文件可以是任意可执行的程序,比如shell脚本、python脚本、二进制程序等,它需要有可执行权限。

SVN在执行该hooks文件时,同时会传入三个参数:该仓库的路径(REPOS)、修订版本号(REV)、事务名称(TXN_NAME,这个不知道什么鬼,不过也用不上)。在这里可以找到利用post-commit hook来触发Jenkins执行的示例脚本。

1.登录到SVN服务器上,找到该仓库所在目录 /application/csvn/data/repositories/zixin_system_server/hooks 在该仓库目录下,有一个hooks目录,默认情况下该目录下有一些模板文件(.tmpl文件):

/application/csvn/data/repositories/zixin_system_server/hooks 在该仓库目录下,有一个hooks目录,默认情况下该目录下有一些模板文件(.tmpl文件):

2.在Jenkins中找到一个更新代码的用户,复制用户token后面在程序中可以通过该token来访问Jenkins。

3.保持Jenkins跨站点请求伪造防护为启用。在"系统管理"→"全局安全配置"中,可以设置:

4.对于需要被post-commit hook所触发的job,要启用它的"Poll SCM"选项:

5.在SVN服务器上,所选仓库的hooks目录中,创建程序文件post-commit:

#!/usr/bin/env python?# -*- coding: utf-8 -*-?import urllib2, sys, os, base64, json?repos_path = sys.argv[1]?revision = sys.argv[2]?svnlook = ‘/application/csvn/bin/svnlook‘?baseurl = ‘http://192.168.8.131:8080‘?user_id = ‘tanghu‘?api_token = ‘1188bea2ed5866c6b936f03cb53f0a9a0a‘?def my_urlopen(url, data=None, header={ }):?request = urllib2.Request(url, data)?print "url:" + url?base64string = base64.encodestring(‘%s:%s‘ % (user_id, api_token)).replace(‘\n‘, ‘‘)?header[‘Authorization‘] = ‘Basic %s‘ % base64string?for key in header:?   request.add_header(key, header[key])?try:?   response = urllib2.urlopen(request)?except urllib2.URLError as e:?   print ‘[Exception URLError]:‘, e?   sys.exit(1)?else:?   result = response.read( )?finally:?   if ‘response‘ in vars( ):?       response.close( )?return result?def main( ):?   command = r‘%s uuid %s‘ % (svnlook, repos_path)?   with os.popen(command) as f:?   uuid = f.read( ).strip( )

原文地址:https://www.cnblogs.com/tanghu/p/12617883.html

时间: 2024-11-08 23:09:06

svn关联Jenkins自动发布代码的相关文章

基于python实现jenkins自动发布代码平台

前言:jenkins自动发布代码平台是我2014年6月搭建的,截止目前已经有24个项目接入了jenkins,公司开发team中大部分是用GIT管理代码,也有一部分是用svn管理代码.我的实现原理是,通过jenkins构建新版本代码,然后用python脚本发布到生产环境,在jenkins界面上点击构建,即完成在线发布. 一.Jenkins环境部署 1, 后续整理.........

在linux服务器上装svn版本管理,自动部署代码到项目

在linux服务器上装svn版本管理,自动部署代码到项目 http://bbs.aliyun.com/read/9715.html?spm=5176.7114037.1996646101.1.W3zw3X&pos=1 http://v5sheji.com/archives/setupsvnonlinux.html 1.安装svn服务器端  yum install subversion 从镜像下载安装svn服务器端 中间会提示是否ok,输入y,确认 安装成功提示:.....complete! 依次

[ci] 构建触发器,实现当gitlab有push动作时候,jenkins自动拉代码.

构建触发器,实现当gitlab有push动作时候,jenkins自动拉代码. ? 拉取gitlab代码库: jenkins安装git插件 配置gitlab服务器和jenkins服务器身份互信 jenkins服务器生成一对rsa key. 复制公钥到gitlab web dashboard添加 在jenkins Credentials里添加private key. 接下去创建project ? 拉取到了本地: /var/lib/jenkins/workspace

设置SVN hooks实现自动发布

# CentOS下安装SVN yum -y install subversion svnserve --version cd /home/ mkdir svn cd svn/ /usr/bin/svnserve -d -r /home/svn/ # 启动SVN服务 svnadmin create /home/svn/test/ # 创建版本仓库 vi /etc/rc.local # 新增以下内容 /usr/bin/svnserve -d -r /home/svn/ # 先设置 passwd ,并

使用Jenkins自动发布Windows服务项目

不同于发布Web项目,自动发布Windows服务项目需要解决以下几个问题: 如何远程停止和开启服务?需要在发布前停止服务,在发布完成后开启服务. 如何上传编译文件到目标服务器? 问题1:如何远程停止和开启服务 在msbuild之前添加一个execute windows batch command,执行cmd命令,cmd命令如下: echo **********stop remote server windows service********** "C:\Program Files\IIS\Mi

window、linux系统与linux服务器之间使用svn同步及自动部署代码的方法

摘要: 在家用PC,在公司用办公电脑对一个项目的代码进行修改时,会遇到代码同步的问题.本文讲解了代码同步及自动部署的解决办法. 实现方法: 1.首先在linux服务器上和linux上安装svn(sudo yum install svn). 2.然后在服务上创建一个版本库并配置用户及权限,这点网上的方法多的是,自行百度. 3.在linux客户端使用svn命令进行同步,具体如下: svn co svn://(ip地址)  (保存文件的文件夹)    ##检出版本库.第一次要输入用户名和密码. 将需要

jenkins自动发布后启动tomcat失败

jenkins服务器上某个项目构建后执行自己写的shell进行发布,脚本其他步骤都执行正常,唯独,启动tomcat出现问题.  jenkins显示启动tomcat成功.但是在tomcat服务器上查看进程却发现没有后台进程存在. 原因: jenkins在脚本执行完成后,就认为jenkins任务结束了,但是脚本启动的相关子程序仍在运行.由于jenkins认为任务结束,就断开了改构建相关的衍生进程. 这就是为什么shell脚本执完成,显示tomcat启动成功,但是后台没有进程的原因. 解决方案: 在要

Jenkins自动部署发布Java代码(完整教程)

一.需求 Jenkins大多数情况下都是用来部署Java项目,上一篇博客已经写了自动打包Java项目,但在现实应用中,Jenkins很强大的,可以做到自动打包发布Java项目.这篇文章,将引导大家完成完整的Java项目(自动发布代码功能)! 二.实验环境 三.实验步骤 1.搭建tomcat 服务(在192.168.22.129服务器上) (1)先安装jdk1.8 jdk和tomcat 下载地址: https://pan.baidu.com/s/1URk88Tp2Io0eUEMo1WpoCg 提取

通过jenkins构建发布普通网站(jenkins+nginx+svn)

本次实验介绍:nginx:web网站svn:代码存储仓库jenkins:自动化运维工具 开发人员通过将代码提交到svn上,运维人员通过配置jenkins自动发布到nginx目录上. 实验环境:192.168.0.188 Jenkins192.168.0.189 nginx192.168.0.19 svn Jenkins.nginx.svn环境都已经准备完成,这里不进行再次搭建 步骤:1.Jenkins安装ssh插件,并配置远程服务器2.建立项目(job)配置Jenkins3.将代码上传svn4.