用于将源代码从SVN存储库导出到生产文件夹的Hudson Shell脚本

时间:2010-11-15 15:24:37

标签: svn hudson lamp production-environment

我有一台专用服务器,它安装了整个Lamp-Stack,SVN和Hudson。 我想创建一个自由式Hudson作业,从我的SVN-repository中获取最新的源代码并将其放入我的/ var / www / myWebApp文件夹。

shell脚本需要如何显示?

修改

当我使用

svn export myRepoURL myWebAppFolder

我得到一个错误,说:

Started by user anonymous
Reverting http://myIpAdress/repos
Updating http://myIpAdress/repos
At revision 2
no change for http://myIpAdress/repos since the previous build
[workspace] $ /bin/sh -xe /tmp/hudson7864414135197533508.sh
+ svn export http://myIpAdress/repos/myRepo
/var/www/myWebApp
Authentication realm: <http://myIpAdress> Subversion Repository
Password for 'hudson': Authentication realm: <http://myIpAdress> Subversion Repository
Username: svn: PROPFIND request failed on '/repos/myRepo'
svn: PROPFIND of '/repos/myRepo': authorization failed (http://myIpAdress)
Finished: FAILURE

4 个答案:

答案 0 :(得分:3)

它应该类似于下面的

  

svn export [您的svn网址] / var / www / myWebApp

如果我在这里遗失了什么,请告诉我吗?

答案 1 :(得分:1)

我也会运行一份副本。请确保不要复制.svn文件夹和其他无法从外部访问的文件。

我也查找了svn export命令,它看起来更好。如果您的工作设置为从svn结帐,您也可以运行svn export ${WORKSPACE}/* /var/www/myWebApp。这只会复制受源代码管理的文件。但是,在将其部署到目标之前,它将为您提供更改某些配置(对于您正在部署的环境非常重要)的选项。

在任何情况下都非常重要,想出一种方法来检查它是否成功。所以至少检查一下你运行的所有命令的错误代码。

答案 2 :(得分:0)

编写一个脚本来复制(使用'cp'命令)作业工作区中的所有文件到您想要的任何位置。您应该使用Hudson提供的'WORKSPACE'环境变量,它为您提供作业工作空间的路径。该脚本很可能能够在你正在使用的shell中运行。

答案 3 :(得分:0)

我认为前面提到的svn export是正确的解决方案,但是如果您要复制一下,我建议使用rsynctar这样的内容。两者都允许您排除某些文件或目录,请参阅--exclude命令行选项。 (谷歌搜索tar exclude svn将指向正确的方向。)Rsync's advantage是它只会复制更改,因此当只有少量文件发生更改时,部署会更快。

需要考虑的其他事项:

  • 您应该有一个删除不再属于存储库的文件的计划。
  • 您应该考虑如何管理网络应用的配置。我不建议将部署配置检入subversion,特别是如果其他开发人员需要对此配置进行更改以便在本地进行测试。颠覆中的意外配置更改太容易破坏您的生产系统。