Wdrażaj każdą kompilację na serwerze przy użyciu Gitlab CI

Założyłem własny serwer Gitlab z jednym projektem i skonfigurowanym dla niego runnerem Gitlab. Jestem nowy w continuous integration server i dlatego Nie wiem, jak wykonać następujące czynności.

Za każdym razem, gdy dołączę do gałęzi master mojego projektu, chciałbym wdrożyć repozytorium na innym serwerze i uruchomić tam dwa polecenia powłoki (npm installi forever restartall)

Jak miałbym to zrobić? Czy potrzebuję biegacza na maszynie, na której projekt jest wdrażany?
Author: Hedge, 2015-11-18

2 answers

Możesz użyć gitlab-ci i gitlab-runner [runners.ssh] do wdrożenia na pojedynczych lub wielu serwerach.

Przepływ:

(git_project with yml file)  --> (gitlab && gitlab-ci) --> (gitlabrunner) ---runners.ssh---> (deployed_server,[deploye_server2])
  1. Musisz zarejestrować gitlab-runner do gitlab-ci i ustawić tag na delpoyServer w 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"
    

Biegacz.ssh oznacza, że runner zaloguje się do ${the_destionation_of_deployServer_IP1} i ${the_destionation_of_deployServer_IP2}, a następnie sklonuje projekt do builds_dir.

  1. Zapisz plik yml na przykład: .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. Ustaw swój gitlab-runner na delpoyServer1 i delpoyServer2tagi w ' http://your.gitlab.server / ci / admin / runners '

    • kiedy wciskasz kod do gitlab
    • serwer gitlab-ci parseruje Twój plik .gitlab-ci.yml w Twoim projekcie, wybierając runner z tagami: deployServer1 lub deployServer2;
    • gitlab-runner z tagiem deployServer1 zaloguje się do ${the_destionation_of_deployServer_IP1} i ${the_destionation_of_deployServer_IP2} z ssh, sklonuje projekt do builds_dir, a następnie wykona skrypt: npm install & & forever restartall.

Link:

 27
Author: michael,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-23 09:03:38

Powinieneś być w stanie użyć gitlab-ci.dokumentacja yml aby dodać oddzielny etap build do pliku .gitlab-ci.yml.

Będziesz potrzebował jakiejś usługi wdrożenia (takiej jak capistrano lub podobnej) lub webhooka, który zainicjuje wdrożenie.

Czyli coś w stylu:

---
stages:
  - test
  - deploy

job_runtests:
  stage: test
  script:
    - npm test

job_deploy:
  stage: deploy
  script:
    - curl -X POST https://deploymentservice.io/?key=

Gitlab CI będzie iterował przez każdy znaleziony etap, uruchamiając je kolejno. Jeśli etap przechodzi, to przechodzi do następnego.

Niestety Gitlab CI nie może bezpośrednio wdrożyć (chociaż można zainstalować dpl Ruby Gem i wywołaj to w swoim pliku .gitlab-ci.yml tak:

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

Na przykład)

 20
Author: Alex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-20 15:48:48