Hudson Shellscript для экспорта исходного кода из репозитория SVN в рабочую папку - PullRequest
0 голосов
/ 15 ноября 2010

У меня есть один выделенный сервер, на котором установлены весь Lamp-Stack, SVN и Hudson. Я хотел бы создать фристайл-работу Хадсона, которая получит последний исходный код из моего SVN-репозитория и поместит его в мою папку / var / www / myWebApp.

Как должен выглядеть сценарий оболочки?

EDIT

Когда я просто использую

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 ]

3 голосов
/ 15 ноября 2010

Это должно выглядеть примерно так

svn export [ваш svn URL] / var / www / myWebApp

Дайте мне знать, если я что-то здесь упускаю?

1 голос
/ 15 ноября 2010

Я бы просто запустил копию.Не копируйте папки .svn и другие файлы, которые не должны быть доступны из внешнего мира.

Я также посмотрел команду svn export, и она выглядит даже лучше.Если ваша работа настроена на извлечение из SVN, вы также можете запустить svn export ${WORKSPACE}/* /var/www/myWebApp.Это будет копировать только те файлы, которые находятся под контролем источника.Тем не менее, это даст вам возможность изменить некоторые конфигурации (которые важны для среды, которую вы развертываете), прежде чем развертывать его на своей цели.

Очень важно в любом случае найти средство1007 * проверить, было ли это успешным .Поэтому, по крайней мере, проверьте код ошибки всех команд, которые вы запускаете.

0 голосов
/ 15 ноября 2010

Я думаю, что упомянутое ранее svn export - правильное решение, но если вы собираетесь сделать копию, я рекомендую что-то вроде rsync или tar вместо чистого cp.Оба позволят вам исключить определенные файлы или каталоги, обратитесь к параметру командной строки --exclude.(Поиск в Google для tar exclude svn укажет вам правильное направление.) Преимущество Rsync заключается в том, что он будет копировать только изменения, поэтому развертывание происходит намного быстрее, когда изменилось только небольшое количество файлов.

Другие вопросы, которые следует учитывать:

  • У вас должен быть план удаления файлов, которые больше не являются частью хранилища.
  • Обдумайте, как вы будете управлять конфигурацией вашего веб-приложения.Я не рекомендую проверять конфигурацию развертывания в Subversion, особенно если другим разработчикам необходимо внести изменения в эту конфигурацию для локального тестирования.Это слишком легко для случайного изменения конфигурации в Subversion, чтобы сломать вашу производственную систему.
0 голосов
/ 15 ноября 2010

Напишите сценарий для копирования (с помощью команды 'cp') всех файлов из рабочей области задания в любое место, которое вы хотите.Вам следует использовать переменную среды «WORKSPACE», предоставленную Hudson, которая предоставляет вам путь к рабочей области задания.Сценарий, скорее всего, сможет работать в любой оболочке, которую вы используете.

...