使用svn来管理python的自动化发布

  创建svn管理目录:mkdir /data/svn

  进入svn管理目录:cd /data/svn

  创建svn项:svnadmin create test

  修改/data/svn/test/conf文件夹下的配置文件

  

  可以将这三个文件下载下来进行修改,也可以用vi进行编辑

  将authz文件替换成下面内容:

[test:/]

admin = rw
allempty = rw

   test是svn当前仓库项的模块名称,每个svn的这个名称都是唯一的,不然可能无法登录使用

  添加添加了两个账号,admin用于服务器端自动同步svn的代码到对应的web或服务使用,和个人账号区别出来,方便管理和保护账号安全,而allempty是我自己添加用于svn更新最新代码的账号

  将password文件替换成下面内容:

[users]
admin = 123456allempty = 123456

  这里设置账号对应的密码

  将svnserve.conf文件替换成下面内容:

[general]
anon-access = none
auth-access = writepassword-db = passwdauthz-db = authz

  在/data/svn/test/hooks/目录下创建post-commit勾子文件(post-commit文件没有扩展名),用于svn更新成功以后,自动同步到对应的代码目录

#!/bin/shexport LANG=en_US.UTF-8/usr/bin/svn up /data/www/test/usr/bin/supervisorctl restart test

  /usr/bin/svn up /data/www/test 这个命令是运行更新指令,本地代码通过svn更新到服务器以后,勾子会运行它来同步到指定的/data/www/test目录

  /usr/bin/supervisorctl restart test 因为我们用的是supervisord来管理python web服务的,代码更新完成以后并未生效,需要重新服务才行,这个命令是用来重启指定的supervisord进程的,它们帮我们将对应的uwsgi进程进行重启操作

  运行命令,将给予勾子post-commit可执行权限:chmod +x /data/svn/test/hooks/post-commit

 

  启动svn服务:/usr/bin/svnserve -d -r /data/svn

  配置test项目服务器端svn同步设置

  输入命令:svn checkout svn://localhost/test /data/www/test (在服务器端对test项进行svn检出操作)

  PS:出现Password for 'root': 直接回车就可以了,Username:输入前面authz里设置的账户名称,Password for 'admin': 输入对应的密码

  

  操作到这里,svn的自动化发布就完成了,我们只需要在本地检出svn项,然后更新代码后,服务器端就会自动将代码同步到/data/www/test目录下面,并重启对应的supervisord服务了

  本地操作截图:(可以下载TortoiseSVN-1.9.4.27285-x64-svn-1.9.4.msi进行使用)