Подтвердить что ты не робот

Разверните каждую сборку на сервер с помощью Gitlab CI

Я установил свой собственный сервер Gitlab с одним проектом, а для него был настроен бегун Gitlab. Я новичок в сервере непрерывной интеграции и поэтому не знаю, как выполнить следующее.

Каждый раз, когда я фиксирую основную ветвь моего проекта, я хотел бы развернуть репозиторий на другом сервере и запустить там две команды оболочки (npm install и forever restartall)

Как мне это сделать? Нужен ли мне бегун на машине, к которой также развертывается проект?

4b9b3361

Ответ 1

Вы можете использовать gitlab-ci и gitlab-runner [runners.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.toml:

     [[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"
    

runner.ssh означает, что бегун войдет в систему ${the_destionation_of_deployServer_IP1} и ${the_destionation_of_deployServer_IP2}, затем клонирует проект до builds_dir.

  1. напишите 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
    
  2. установите для вашего gitlab-runner теги delpoyServer1 и delpoyServer2 в http://your.gitlab.server/ci/admin/runners '

    • когда вы нажимаете код на gitlab
    • сервер gitlab-ci проанализирует ваш файл .gitlab-ci.yml в вашем проекте, выберите бегун с тегами: deployServer1 или deployServer2;
    • gitlab-runner с тегом deployServer1 запишется в ${the_destionation_of_deployServer_IP1} и ${the_destionation_of_deployServer_IP2} с помощью ssh, клонирует проект на builds_dir, а затем выполнит script: npm install && & & forever restartall.

ссылка:

Ответ 2

Вы можете использовать gitlab-ci.yml documentation, чтобы добавить отдельный build этап в ваш .gitlab-ci.yml файл.

Вам потребуется какая-то служба развертывания (например, capistrano или подобное) или веб-хост, который инициирует развертывание.

т.е. что-то вроде:

---
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 и вызвать это в своем .gitlab-ci.yml файл следующим образом:

job_deploy:
  - gem install dpl
  - dpl --provider=heroku --app=my-app-staging --api-key=$HEROKU_STAGING_API_KEY
only:
  - master

)