『贴代码』
技术分享
精选作品
优选问答
成长笔记
PasteSpider的运行条件之SVNManage中Hook的配置
尘埃 2023-05-01 4564 278 1 编辑
启用Spider中的svnhook!

更多PasteSpider的操作介绍,请前往 PasteSpider操作文档


如果你的svn的服务端是安装在window服务器上的,则可以在Repositories对应的项目中右键选择Properties

然后选择第二个选项卡Hooks

双击Post-commit hook

然后在输入框中输入如下的代码

@echo on
:: 将该文件放置到svn repository的hooks目录,如D:\subversion\test\hooks
:: 1. 名字一定要是post_commit
:: 2. 修改case里面的curl为easyops应用流水线的svn钩子

SET REPOS=%1
SET LOGFILE=%REPOS%\post-commit.log
SET REV=%2
SET TXN_NAME=%3


::UUID
for /f "delims=" %%t in ('svnlook uuid %REPOS%') do set UUID=%%t

::AUTHOR
for /f "delims=" %%t in ('svnlook author %REPOS% -r %REV%') do set AUTHOR=%%t

::LOG
for /f "delims=" %%t in ('svnlook log %REPOS% -r %REV%') do set LOG=%%t

::DATE
for /f "delims=" %%t in ('svnlook date %REPOS% -r %REV%') do set DATE=%%t

::echo %REPOS% %REV% %TXN_NAME% %UUID% %LOG% >> %LOGFILE%

::==================================================
::CHANGE
for /f "delims=" %%i in ('svnlook changed %REPOS% -r %REV%') do set CHANGE=%%i

::TYPE
for /f "tokens=2 delims= " %%t in ("%CHANGE%") do for /f "tokens=1 delims=/" %%c in ("%%t") do set TYPE=%%c

::TAG
for /f "tokens=1 delims= " %%t in ("%CHANGE%") do set TAG=%%t

::======================================================

echo "path:%REPOS% version:%REV% txnname:%TXN_NAME% uuid:%UUID% comment:%LOG% change:%CHANGE% type:%TYPE% tag:%TAG%" >> %LOGFILE%

:: 按应用需求,在不同的类型里面填入easyops的svn钩子url,如果不区分分支,则在*)里面填

::将win下路径的 \ 替换为 \\ 。不然会出现格式问题
set REPOS=%REPOS:\=\\%
set REV=%REV:\=\\%
set TXN_NAME=%TXN_NAME:\=\\%
set UUID=%UUID:\=\\%
set TAG=%TAG:\=\\%
set AUTHOR=%AUTHOR:\=\\%
set DATE=%DATE:\=\\%
set TYPE=%TYPE:\=\\%
set LOG=%LOG:\r=_%
set LOG=%LOG:/r=_%
set LOG=%LOG:\n=_%
set LOG=%LOG:/n=_%

::generate_post_data
set post_data="{\"token\": \"yourservicesvntoken\",\"repos\": \"%REPOS%\",\"info\":\"%LOG%\",\"txn_name\":\"%TXN_NAME%\",\"uuid\":\"%UUID%\",\"type\":\"%TYPE%\",\"tag\":\"%TAG%\",\"author\":\"%AUTHOR%\",\"date\":\"%DATE%\"}"

echo "begin post info" >> %LOGFILE%

curl -H "Content-Type: application/json" -X POST -d %post_data% "http://www.yourPasteSpider.com/api/Code/svncommit"

echo "posted!" >> %LOGFILE%
::设置curl文件的位置
::set curl=C:\curl.exe
::%curl% -i -X POST -H "Content-Type: application/json" --data %post_data% %url%

上述的代码中注意替换 yourservicesvntoken和http://www.yourPasteSpider.com替换成你自己的。

如果你的svn是安装在Linux中的,则可以参照如下的进行:

本次环境 centos7 yum cat vim等


1.安装svn服务端


yum install subversion

2.创建预用文件夹 /home/svn/project /home/svn/project/project1 /home/svn/project/project2,主目录为/home/svn/project,至于后面的project1 project2为仓库项目,后续可以再追加


mkdir -p /home/svn/project/project1
mkdir -p /home/svn/project/project2

3.创建仓储项目


svnadmin create /home/svn/project/project1
svnadmin create /home/svn/project/project2

4.配置账号,先把账号文件从/home/svn/project/project1/conf/passwd复制到/home/svn/project/passwd


cp /home/svn/project/project1/conf/passwd /home/svn/project/passwd

5.追加账号,也就是修改/home/svn/project/passwd的文件内容。比如添加账号user1密码123456 账号user2密码123456


vim /home/svn/project/passwd

按照里面的案例添加账号密码,中间用=号隔开,一组一行。录入退出保存(i->输入->Esc->ZZ)


user1=123456
user2=123456

6.配置权限,也就是修改/home/svn/projcet/authz的文件内容。说明如下:


[groups]#分组
# harry_and_sally = harry,sally#harry_and_sally为分组名称 harry,sally为2个用户名
# harry_sally_and_joe = harry,sally,&joe
 
# [/foo/bar]#相对路径下的权限
# harry = rw
# &joe = r
# * =#留空表示其他账号无任何权限
 
# [repository:/baz/fuz]#仓库下的某一个文件夹?
# @harry_and_sally = rw#rw表示可读可改
# * = r#r表示读取权限

比如我这一次编写内容为:表示用户user1有所有仓储的读取权限,user2只有读取权限


[/]
user1 = rw
user2 = r

修改完成后退出保存(i->输入->Esc->ZZ)


7.修改服务配置内容 /home/svn/project/project1/conf/svnserve.conf打开如下配置信息


anon-access = none #匿名用户不可读 read匿名用户可以读取
auth-access = write #授权用户可写
password-db = ../../passwd #使用哪个文件作为账号文件
authz-db = ../../authz #使用哪个文件作为权限文件
realm = /home/svn/project # 认证空间名,版本库所在目录

上述中,由于我们要调用/home/svn/project/passwd文件和/home/svn/project/authz文件,所以路径修改了,调用上一层,上一层的passwd和authz文件。


8.把7中修改的svnserve.conf文件复制到/home/svn/project/project2/conf/svnserve.conf,后续创建多仓库的话这个文件都要复制到对应的仓库下面去。


cp /home/svn/project/project1/conf/snvserve.conf /home/svn/project/project2/conf/snvserve.conf

9.修改hooks文件,用于提交后推送消息给PasteSpider告知有新的版本提交了。复制/home/svn/project/project1/hooks/post-commit.tmpl为/home/svn/project/project1/hooks/post-commit


cp /home/svn/project/project1/hooks/post-commit.tmpl /home/svn/project/project1/hooks/post-commit

编辑修改/home/svn/project/project1/hooks/post-commit,提交后的内容推送到PasteSpider的接收地址中:比如我的PasteSpider的对外地址为http://192.168.2.39:18888


#REPOS="$1"
#REV="$2"
export LANG=zh_CN
MESSAGE=$(svnlook log -r $2 $1)
curl -d "token=your_token&repos=$1&version=$2&info=$3&info=$MESSAGE" "http://www.yourPasteSpider.com/api/spider/Code/svncommit"
#set post_data="{\"token\": \"yourservicesvntoken\",\"repos\": \"$1\",\"info\":\"$MESSAGE\",\"txn_name\":\"\",\"uuid\":\"\",\"type\":\"\",\"tag\":\"\",\"author\":\"\",\"date\":\"\"}"
#curl -H "Content-Type: application/json" -X POST -d %post_data% "http://www.yourPasteSpider.com/api/Code/svncommit"

上面注意修改自己的token内容,这个在PasteSpider的后台的源代码仓库管理中有设置接口密钥。然后把/home/svn/project/project1/hooks/post-commit复制一份给/home/svn/project/project2/hooks/post-commit,如果他们的token不一样,则需要修改下。

上面的命令注意替换对应的字符

your_token表示你在PasteSpider中svn配置的验证密钥

http://www.yourPasteSpider.com你的PasteSpider的访问域名地址



然后是给post-commit文件执行权限,2个项目都要


chmod 755 /home/svn/project/project1/hooks/post-commit
chmod 755 /home/svn/project/project2/hooks/post-commit

10.启动svn服务,由于我用了自定义端口,默认端口3690


svnserve -d -r /home/svn/project --listen-port 12100

11.如果启动后要停止咋办?查找进程命令


ps -ef | grep svnserve

找到后面有 svnserve -d -r字眼的那一行,看下第二列数字是多少比如我的11230,结束这个进程


kill -9 11230

这样svnserve服务就停止了。


12.服务运行后,比如我可在客户端上使用svn://192.168.2.39:12100/project1链接上project1的仓库管理,进行提交获取checkout等。


ps:对应仓库链接后,进行一个提交,看看PasteSpider后台是否接收到。默认约束提交的备注中update开头,则会触发对应的镜像打包升级服务。如果有配置的话。



评论列表
尘埃

还是用客户端方便,就点击几下就可以了!

折梅问雪
克隆编译命令的内容要注意
1.一行一个命令
2.每行的执行是隔开的,所以没有相对文件夹的说法
3.整个命令的作用是从远端拉取源码,然后发布到指定的文件夹!也就是拉取到{workdir}/source/{project}/{service}/
4.然后基于自己开发语言进行发布到{workdir}/publish/{project}/{service}/
5.然后系统就是接手docker build 和后续的其他命令了!
尘埃
278 4564 1
快捷注册
热门推荐更多
PasteTalk
是在线客服系统更是在线营销系统,引入特有的页面话序机制,能够针对不同访客实现丰富的营销话语,提高开发效率!引入分词功能提升关键字命中概率,提高服务质量!;
用户问答更多
07月份版本的内存占用比以前大了,也没有泄漏,啥情况?以前200MB,这个版本能到300MB
文档中的组织归属有些问题,啥时候看看,更新更新!
  • 已经升级了,主要是left join的查询的时候没有过滤,其实这个问题,多租户也是一样的!

PasteSpider的集群方式,我还是没太懂,啥时候出一个专题来讲解讲解?
  • b不难吧,就几个地址!

最新动态
  • 52.****.225 正在查看 正在查看笔记页面 !
  • 52.****.189 正在查看 正在查看笔记:29 的详细信息 Page:1 ! !
  • 125.****.140 正在查看 PasteTemplate和PasteBuilder的使用教程 !
  • 54.****.223 正在查看 Document:spider !
  • 40.****.26 正在查看 文章列表页 !
  • 85.****.202 正在查看 Document:spider !
  • 54.****.47 正在查看 PasteForm中如何处理批量操作? !
  • 54.****.156 正在查看 PasteForm中如何处理批量操作? !
  • 54.****.238 正在查看 文章列表页 !
  • 162.****.223 正在查看 主页spider !
  • 54.****.58 正在查看 文章列表页 !
欢迎加入QQ讨论群 296245685 [PasteSpider]介绍 [PasteForm]介绍 @2022-2023 PasteCode.cn 版权所有 ICP证 闽ICP备2021013869号-2