Linux下代码从SVN服务器到web服务器的自动化部署[svn update $WEB --username mrwei --password jiaowomrwei]

来源:互联网 发布:切削参数计算软件下载 编辑:程序博客网 时间:2024/05/22 05:13

开始自动部署

终于有时间把自动部署的部分写完了。前段时间也是真的忙,瞎忙。我只写提交后的自动部署,是最简单的一种自动部署方式,其实大家明白了这种方式后就容易各个方向变通了。交流第一,这是我的原则。

原理说明

这里写图片描述

关于这个图我要这样来说明一下:
一般来说公司的一个项目会有好几个程序员一起配合来开发,每个人负责项目的一部分。但是最终测试人员需要完整的项目来测试。或者分模块功能来测试他们也不会跑到程序员的电脑上来测试,如果你既是开发又是测试,那么……你还是需要来了解下。
规划合理的项目上线流程是这样的:
开发人员开发->提交到版本库->测试人员同步到测试服务器->测试提bug->如果没有问题->由测试人员同步上线

再说明

其实SVN和我们最终使用URL来访问网站没有直接的关系。因为SVN他只负责对你每次修改的代码的版本管理。所以你提交了代码之后只是在你的代码库的db中,如果忘了的可以看前边的文章svn服务的搭建。

自动部署的步骤

向web目录检出项目副本

这个就和使用SVN来检出项目是一模一样的。我要演示的是web服务和svn服务在同一个服务器机器上的情况。

注意了,我的项目的SVN版本库是在/data/svn/demoone/中,你自己创建在哪儿就在哪儿。

为了在web目录下检出项目我们需要先切换到web目录下(我的web目录是在/data/wwwroot下):

cd /data/wwwroot

第二步当让是先检出项目副本了,这儿就需要对SVN的命令相对来说比较熟悉。checkout代码的命令为

svn co file:///data/svn/demoone

当然上边一句可以模仿但是不能照搬,先要明白意思。co的参数为file:///data/svn/demoone这个主要原因是因为我的SVN和web在同一台服务器上所以使用file来本地读取。如果是在远程的可能是svn://xxxx或者http(s)://xxx这个一定要明白而且熟悉svn的command使用。
检出之后就会看到wwwroot目录下多了一个demoone目录。这个demoone就是你的项目目录了。然后就是创建虚拟主机把路径配置到服务器配置中(这部分的知识需要自行补充)。

自动部署

完成以上步骤后如果你每次有新的代码提交之后你只需要切换到web目录下的项目目录中执行update来更新代码就行了。

svn update

但是这样也不方便,因为每次提交了代码你就要ssh登录服务器去执行SVN的更新命令,那么有没有什么其他方法。程序员提交代码后会自动更新到web目录下的项目目录呢?答案是肯定的。
之前已经说过SVN版本库的目录结构了。在它的目录下有一个叫做hooks的目录,做开发的都知道hook是钩子的意思。钩子是什么呢?他是面向切面编程(aop)的理论。也就是在流程的某一个点触发程序去做也些事。
来看看hooks中有哪些内容:

这里写图片描述

在这个目录下是很多钩子。有post-commit提交时触发,post-unlock解锁副本时触发,post-lock副本锁定时触发等等。那我们肯定是需要在用户提交代码后触发程序去更新web目录中的项目。
post-commit它默认是没有生效的为tmpl文件所以我们要复制一下:

cp post-commit.tmpl post-commit

然后打开看看post-commit里边有什么

vim post-commit

这里写图片描述

从最开始看,#!/bin/sh 说明它是Linux系统的shell文件那么这儿其实执行的是Linux的shell
把文件中其他的行都注释掉。(在行前输入#)

#就是找到这三行在前边输入#干掉而已#REPOS="$1"#REV="$2"#mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf

紧接着在这里写自己的脚本。如果不理解就照猫画虎了

WEB="/data/wwwroot/demoone"export LANG=en_US.UTF-8svn update $WEB --username mrwei --password jiaowomrwei

这儿的WEB是你的web目录的项目目录,username后边是你提交SVN的账号password后边是你提交代码的密码。export了一个语言选项,是来约定文字编码用的。
到这儿还没有完,因为你的post-commit是Linux脚本那么它是需要执行的,在Linux中我们知道脚本的执行是需要执行权限的。所以我们还了需要给其赋予执行权限。

chmod +x post-commit

至此整个自动化部署就完成了。然后就可以在本地修改代码提交后测试了。

祝大家好运,其中涉及到的基本Linux命令如果你还不太熟悉我觉得有必要恶补一下了。在看这部分知识时一定要灵活。

阅读全文
1 0
原创粉丝点击