Как правильно развернуть встроенную версию проекта с помощью Codeship

В настоящее время мое развертывание выглядит следующим образом:

  1. После внесения локальных изменений я запускаю локально задачу grunt, чтобы собрать проект в папку /dist.

  2. Затем я нажимаю их на битбакет. например название ветки feature/deposit

  3. В Bitbucket я объединяю функцию/депозит в ветку разработки, а Codeship создает ветку разработки (запускает тест), после чего выполняется следующий код:

    ssh [email protected] 'cd project/www; разработка git checkout; разработка git pull origin; установка нпм; sudo monit перезапустить проект.app.js '

Мне не нравится такой подход, потому что для меня было бы гораздо логичнее развертывать то, что создал Codeship. Codeship запускает npm install, и я хочу, чтобы он запускал мою задачу grunt:build, а затем развертывал ее на моем рабочем сервере.

Я нашел статья, посвященная аналогичной проблеме, и добавлена ​​задача экспорта CI_COMMIT_ID=$(git rev-parse HEAD). Но я просто не до конца осознаю, что мне нужно сделать с этим в моем сценарии развертывания. Кроме того, этот пример используется с героку, тогда как в моем случае я использую собственный сценарий развертывания.

Я также нашел репозиторий github с полезными скриптами развертывания и этот может удовлетворить мои потребности.

Но я хочу выяснить, могу ли я извлечь из встроенной версии (той, которую создал Codeship) так же, как я делаю это сейчас, но git pull origin develop должно быть git pull из того, что только что создал Codeship.


person user2814599    schedule 02.05.2016    source источник
comment
Могу я спросить, почему вы хотите сохранить встроенное приложение в своем репозитории git? Большинство наших пользователей придерживаются несколько иного подхода: фиксируют локальные изменения и отправляют их в удаленный репозиторий (GitHub/Bitbucket). Это вызовет сборку на Codeship, Codeship создаст приложение (например, через grunt), запустит ваши тесты, а затем развернет приложение, например, через rsync или отправив его в Heroku/....   -  person mlocher    schedule 02.05.2016
comment
@mlocher Я не хочу хранить /dist в своем репо. Я делаю это сейчас, но хочу избежать этого подхода. Не могли бы вы предоставить дополнительную информацию о том, как я могу использовать rsync для развертывания с помощью пользовательского сценария? Спасибо!   -  person user2814599    schedule 02.05.2016
comment
@mlocher - я думаю, вы советуете просто скопировать сборку на сервер, не используя там git?   -  person user2814599    schedule 02.05.2016
comment
Да, точно. Я бы рекомендовал удалить папку dist из репозитория, собрать ее через Codeship и развернуть, скопировав файлы на удаленный сервер. Таким образом, у вас есть множество возможностей, от очень простых инструментов, таких как scp, rsync (хотя базовый здесь является переменным термином) до Capistrano (на основе Ruby) или npmjs.com/package/flightplan (хотя я еще не использовал это).   -  person mlocher    schedule 02.05.2016
comment
@mlocher Мне нравится эта идея, но мой первоначальный вопрос: как мне получить доступ к коду, который только что был создан Codeship?   -  person user2814599    schedule 02.05.2016
comment
То же, что и при локальной сборке приложения. По умолчанию вы работаете в корневом каталоге вашего репозитория на Codeship. Итак, если ваша задача grunt создает каталог dist, вы можете загрузить его через scp -rp ./dist/* [email protected]:/path/on/server/.   -  person mlocher    schedule 02.05.2016
comment
См. codeship.com/ documentation/continuous-deployment/ для некоторой документации по SCP или rsync.   -  person mlocher    schedule 02.05.2016
comment
./dist - это папка, в которой находится собранная версия. А [email protected]:/path/on/server/ — это рабочий сервер? Использовать ли этот код в настройках конвейера развертывания? Извините за подробности, но мне нужно понять это.   -  person user2814599    schedule 02.05.2016


Ответы (1)


В итоге я просто скопировал код папки /dist на рабочий сервер. Я удалил git с рабочего сервера и добавил папку /dist в gitignore. Codeship запускает все команды, включая команду для сборки проекта, а затем копирует его на рабочий сервер. Очень быстрый и удобный способ.

Параметры непрерывного развертывания:

rsync -avz -e "ssh" ~/src/bitbucket.org/username/project/dist/ [email protected]:/home/nodejs/project/www/dist

/src/bitbucket.org/username/project/ - можно получить на одном из шагов сборки.

person user2814599    schedule 08.05.2016