J'ai installé mon propre serveur Gitlab avec un projet et un runner Gitlab configuré pour cela. Je suis nouveau sur le serveur d'intégration continue et je ne sais donc pas comment accomplir ce qui suit.
Chaque fois que je m'engage dans la branche principale de mon projet, je souhaite déployer le référentiel sur un autre serveur et y exécuter deux commandes Shell (npm install
et forever restartall
)
Comment pourrais-je faire ça? Ai-je besoin d'un runner sur la machine sur laquelle le projet est également déployé?
Vous pouvez utiliser gitlab-ci et gitlab-runner [runners.ssh] pour déployer sur des serveurs simples ou multiples.
le flux:
(git_project with yml file) --> (gitlab && gitlab-ci) --> (gitlabrunner) ---runners.ssh---> (deployed_server,[deploye_server2])
vous devez enregistrer gitlab-runner sur gitlab-ci et définir la balise sur delpoyServer sur 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 signifie que le coureur se connectera à ${the_destionation_of_deployServer_IP1}
et ${the_destionation_of_deployServer_IP2}
, puis clonez le projet dans builds_dir
.
écrivez le fichier yml par exemple: .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
définissez votre gitlab-runner sur delpoyServer1
et delpoyServer2
tags dans ' http: //your.gitlab.server/ci/admin/runners '
.gitlab-ci.yml
fichier dans votre projet, choisissez un coureur avec les balises: deployServer1
ou deployServer2
;gitlab-runner
avec la balise deployServer1 se connectera à ${the_destionation_of_deployServer_IP1}
et ${the_destionation_of_deployServer_IP2}
avec ssh, clonez le projet dans builds_dir
, puis exécutez votre script: npm install && forever restartall.lien:
Vous devriez pouvoir utiliser documentation gitlab-ci.yml pour ajouter une étape build
distincte dans votre .gitlab-ci.yml
fichier.
Vous aurez besoin d'une sorte de service de déploiement (comme capistrano
ou similaire), ou d'un webhook qui lancera un déploiement.
C'est à dire. quelque chose comme:
---
stages:
- test
- deploy
job_runtests:
stage: test
script:
- npm test
job_deploy:
stage: deploy
script:
- curl -X POST https://deploymentservice.io/?key=
Gitlab CI parcourt chaque étape qu'il trouve et les exécute séquentiellement. Si une étape passe, elle passe à la suivante.
Malheureusement, Gitlab CI ne peut pas faire de déploiement directement (bien que vous puissiez installer le dpl
Ruby Gem et l'appeler dans votre .gitlab-ci.yml
fichier comme ceci:
job_deploy:
- gem install dpl
- dpl --provider=heroku --app=my-app-staging --api-key=$HEROKU_STAGING_API_KEY
only:
- master
par exemple)