Развертывание каждой сборки на сервере с помощью GitLab CI
Я настроил свой собственный сервер Gitlab с одним проектом и настроенным для него бегуном Gitlab. Я новичок в сервере непрерывной интеграции и поэтому не знаю, как выполнить следующее.
каждый раз, когда я совершаю в главной ветви моего проекта, я хотел бы развернуть репозиторий на другом сервере и запустить там две команды оболочки (npm install
и forever restartall
)
Как бы я это сделал? Нужен ли мне бегун на машине, на которой развернут проект как ну?
2 ответов
вы можете использовать gitlab-ci и GitLab-runner [бегуны.ssh] для развертывания на одном или нескольких серверах.
расход:
(git_project with yml file) --> (gitlab && gitlab-ci) --> (gitlabrunner) ---runners.ssh---> (deployed_server,[deploye_server2])
-
вам нужно зарегистрировать GitLab-runner в gitlab-ci и установить тег на delpoyServer в GitLab web . / etc/gitlab-runner / config.томл:
[[runners]] url = "http://your.gitlab.server/ci" token = "1ba879596cf3ff778ee744e6decedd" name = "deployServer1" limit = 1 executor = "ssh" builds_dir = "/data/git_build" [runners.ssh] user = "you_user_name" host = "${the_destionation_of_deployServer_IP1}" port = "22" identity_file = "/home/you_user_name/.ssh/id_rsa" [[runners]] url = "http://your.gitlab.server/ci" token = "1ba879596cf3ff778ee744e6decedd" name = "deployServer2" limit = 1 executor = "ssh" builds_dir = "/data/git_build" [runners.ssh] user = "you_user_name" host = "${the_destionation_of_deployServer_IP2}" port = "22" identity_file = "/home/you_user_name/.ssh/id_rsa"
бегун.ssh означает, что бегун войдет в ${the_destionation_of_deployServer_IP1}
и ${the_destionation_of_deployServer_IP2}
, затем клонировать проект builds_dir
.
-
напишите файл yml например: .gitlab-ci.в формате YML
job_deploy: stage: deploy tags: delpoyServer1 script: - npm install && forever restartall job_deploy: stage: deploy tags: delpoyServer2 script: - npm install && forever restartall
-
установите свой GitLab-runner в
delpoyServer1
иdelpoyServer2
теги в 'http://your.гитлаб.сервер/ci/admin / runners'- когда вы нажимаете код на gitlab
- сервер gitlab-ci будет анализировать ваш в вашем проекте, выберите бегун с тегами:
deployServer1
илиdeployServer2
; - в
gitlab-runner
с тегом deployServer1 войдет в${the_destionation_of_deployServer_IP1}
и${the_destionation_of_deployServer_IP2}
С помощью ssh клонируйте проект вbuilds_dir
, затем выполните сценарий: npm install & & forever restartall.
ссылки:
вы должны иметь возможность использовать gitlab-ci.документации в формате YML добавить отдельную build
этап в код .
вам нужна какая-то служба развертывания (например,capistrano
или аналогичный), или webhook, который инициирует развертывание.
т. е. что-то вроде:
---
stages:
- test
- deploy
job_runtests:
stage: test
script:
- npm test
job_deploy:
stage: deploy
script:
- curl -X POST https://deploymentservice.io/?key=
GitLab CI будет повторять каждый этап, который он находит, выполняя их последовательно. Если этап проходит, то он переходит к следующему.
к сожалению GitLab CI не может выполнять развертывание напрямую (хотя вы можете установить dpl
Ruby Gem и назовите это в своем вот так:
job_deploy:
- gem install dpl
- dpl --provider=heroku --app=my-app-staging --api-key=$HEROKU_STAGING_API_KEY
only:
- master
например)