2010-11-15 46 views
0

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

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 

回答

3

应该类似于下面

SVN导出[你的svn URL]在/ var/WWW/myWebApp

不要让我知道,如果我在这里失去了一些东西?

+0

+1使用svn export命令 – 2010-11-15 18:11:28

+0

非常感谢,upvots表明这是正确的解决方案。但是当我使用你的代码时,我得到一个错误。请回复我的编辑。 – 2010-11-15 18:23:52

+0

该错误基本上是因为在运行导出命令时svn正在查找用户名和密码。 Subversion能够在第一次操作时在本地存储密码。所以为了避免这种情况,你可以做一个虚拟的结账(或者类似的操作),这将使得Subversion在本地存储凭证。 – 2010-11-16 05:31:06

0

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

1

我也只是运行一个副本。确保不要复制.svn文件夹和其他不应该从外部访问的文件。

我也抬头看svn export命令,它看起来更好。如果您的工作设置为从svn结账,您还可以运行svn export ${WORKSPACE}/* /var/www/myWebApp。这只会复制在源代码控制下的文件。但是,它会让您选择在将其部署到目标之前更改一些配置(对于您正在部署的环境很重要)。

非常重要,无论如何,拿出一个办法来检查是否成功。所以至少要检查你运行的所有命令的错误代码。

0

我觉得前面提到的svn export是正确的解决方案,但如果你打算做一个副本,我建议像rsynctar在裸CP。两者都将允许您排除某些文件或目录,请参阅--exclude命令行选项。 (搜索tar exclude svn将指向正确的方向。)Rsync's advantage是它只会复制更改,因此只有少量文件发生更改时,部署速度会更快。

其他的事情要考虑:

  • 你应该有删除是存储库中不再文件的计划。
  • 您应该考虑如何管理您的Web应用程序的配置。我不建议将部署配置检入到Subversion中,特别是如果其他开发人员需要对此配置进行更改才能在本地进行测试。在颠覆中意外的配置更改很容易破坏您的生产系统。
相关问题