Ответ 1
Краткая информация: я запускаю приложение Meteor 1.3.2, размещенное на Digital Ocean (Ubuntu 14.04) с 4 месяцев. Я использую Gitlab v. 8.3.4, работающий на той же капельке Digital Ocean, что и приложение Meteor. Это капелька 2 ГБ /2 (20 долларов США в месяц). Использование встроенного Gitlab CI для CI/CD. Эта настройка работает до сих пор. (В настоящее время мы не используем Docker, однако это не имеет значения.)
Наша стратегия CI/CD:
- Мы проверяем филиал Master на нашем локальном ноутбуке. Филиал содержит весь проект Meteor, как показано ниже:
Мы используем инструмент git CLI в Windows для подключения к нашему серверу Gitlab. (для pull, push и т.д. аналогичные регулярные действия git)
-
Откройте извлеченный проект в редакторе Atom. Мы также интегрировали Atom с Gitlab. Это помогает в быстром состоянии git status/pull/push и т.д. Внутри самого редактора Atom. Выполняет обычную работу Метеор, а именно. исправлять ошибки и т.д.
-
После тестирования на локальном ноутбуке мы делаем git push и commit на master. Это инициирует автоматическую сборку с использованием Gitlab CI, и результаты (включая журналы построения) можно увидеть в самом Gitlab, как показано ниже:
Ниже изображены все предыдущие журналы построения:
Следуйте инструкциям ниже:
-
Установите метеор на капельке DO.
-
Установите Gitlab на DO (при необходимости используйте по одному щелчку мыши) или ручную установку. Убедитесь, что вы устанавливаете Gitlab v. 8.3.4 или более новую версию. Я сделал DO одним щелчком мыши на моей капле. Запустите сервер gitlab и войдите в gitlab из браузера. Откройте проект и перейдите к настройкам проекта → Направляющие из меню слева
-
SSH на ваш сервер DO и настройте новую службу upstart на капли как root:
vi /etc/init/meteor-service.conf
Пример файла:
#upstart service file at /etc/init/meteor-service.conf
description "Meteor.js (NodeJS) application for eaxmple.com:3000"
author "[email protected]"
# When to start the service
start on runlevel [2345]
# When to stop the service
stop on shutdown
# Automatically restart process if crashed
respawn
respawn limit 10 5
script
export PORT=3000
# this allows Meteor to figure out correct IP address of visitors
export HTTP_FORWARDED_COUNT=1
export MONGO_URL=mongodb://xxxxxx:[email protected]:59672/meteor-db
export ROOT_URL=http://<droplet_ip>:3000
exec /home/gitlab-runner/.meteor/packages/meteor-tool/1.1.10/mt-os.linux.x86_64/dev_bundle/bin/node /home/gitlab-runner/erecaho-build/server-alpha-running/bundle/main.js >> /home/gitlab-runner/erecaho-build/server-alpha-running/meteor.log
end script
-
Установите gitlab-ci-multi-runner отсюда: https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/install/linux-repository.md в соответствии с инструкциями Cheatsheet:
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.deb.sh | sudo bash sudo apt-get install gitlab-ci-multi-runner sudo gitlab-ci-multi-runner register
Введите данные с шага 2
-
Теперь новый бегун должен быть зеленым или активировать бегун, если требуется
-
Создайте .gitlab-ci.yml в каталоге проекта метеоров
Пример файла:
before_script: - echo "======================================" - echo "==== START auto full script v0.1 =====" - echo "======================================" types: - cleanup - build - test - deploy job_cleanup: type: cleanup script: - cd /home/gitlab-runner/erecaho-build - echo "cleaning up existing bundle folder" - echo "cleaning up current server-running folder" - rm -fr ./server-alpha-running - mkdir ./server-alpha-running only: - master tags: - master job_build: type: build script: - pwd - meteor build /home/gitlab-runner/erecaho-build/server-alpha-running --directory --server=http://example.org:3000 --verbose only: - master tags: - master job_test: type: test script: - echo "testing ----" - cd /home/gitlab-runner/erecaho-build/server-alpha-running/bundle - ls -la main.js only: - master tags: - master job_deploy: type: deploy script: - echo "deploying ----" - cd /home/gitlab-runner/erecaho-build/server-alpha-running/bundle/programs/server/ && /home/gitlab-runner/.meteor/packages/meteor-tool/1.1.10/mt-os.linux.x86_64/dev_bundle/bin/npm install - cd ../.. - sudo restart meteor-service - sudo status meteor-service only: - master tags: - master
-
Проверьте файл выше в gitlab. Это должно вызвать Gitlab CI, и после завершения процесса сборки новое приложение будет доступно @example.net:3000
Примечание. Приложение не будет доступно после регистрации в .gitlab-ci.yml в первый раз, так как перезапуск службы метеоритов приведет к тому, что служба не будет найдена. Ручной запуск sudo start meteor-service один раз на консоли SS SSH. Опубликуйте это, любая новая регистрация на gitlab master вызовет автоматический CI/CD, и новая версия приложения будет доступна на example.com:3000 после успешного завершения сборки.
P.S.: gitlab ci yaml docs можно найти на http://doc.gitlab.com/ee/ci/yaml/README.html для вашей настройки и понять образец файла yaml выше. Для бегуна, предназначенного для докеров, см. https://gitlab.com/gitlab-org/gitlab-ci-multi-runner