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 install
i forever restartall
)
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])
-
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
.
-
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
-
Ustaw swój gitlab-runner na
delpoyServer1
idelpoyServer2
tagi 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
lubdeployServer2
; -
gitlab-runner
z tagiem deployServer1 zaloguje się do${the_destionation_of_deployServer_IP1}
i${the_destionation_of_deployServer_IP2}
z ssh, sklonuje projekt dobuilds_dir
, a następnie wykona skrypt: npm install & & forever restartall.
Link:
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)
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