Развертывание каждой сборки на сервере с помощью 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])
  1. вам нужно зарегистрировать 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.

  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.гитлаб.сервер/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

например)