node.js - tutorial - Implementar cada compilación en un servidor usando Gitlab CI
gitlab runners (2)
Debería poder usar la documentación de gitlab-ci.yml para agregar una etapa de build
separada en su archivo .gitlab-ci.yml
.
Necesitará algún tipo de servicio de implementación (como capistrano
o similar), o un webhook que inicie una implementación.
Es decir, algo como:
---
stages:
- test
- deploy
job_runtests:
stage: test
script:
- npm test
job_deploy:
stage: deploy
script:
- curl -X POST https://deploymentservice.io/?key=
Gitlab CI recorrerá cada etapa que encuentre, ejecutándolas secuencialmente. Si una etapa pasa, entonces pasa a la siguiente.
Desafortunadamente, Gitlab CI no puede realizar la implementación directamente (aunque puede instalar el dpl
Ruby Gem y llamar a eso en su archivo .gitlab-ci.yml
forma)
job_deploy:
- gem install dpl
- dpl --provider=heroku --app=my-app-staging --api-key=$HEROKU_STAGING_API_KEY
only:
- master
por ejemplo)
He configurado mi propio servidor Gitlab con un proyecto y un corredor Gitlab configurado para él. Soy nuevo en el servidor de integración continua y, por lo tanto, no sé cómo lograr lo siguiente.
Cada vez que me comprometo con la rama maestra de mi proyecto, me gustaría desplegar el repositorio en otro servidor y ejecutar dos comandos de shell allí ( npm install
y forever restartall
)
¿Cómo haría esto? ¿Necesito un corredor en la máquina en la que también se implementa el proyecto?
Podría usar gitlab-ci y gitlab-runner [runners.ssh] para implementar en servidores únicos o múltiples.
el flujo:
(git_project with yml file) --> (gitlab && gitlab-ci) --> (gitlabrunner) ---runners.ssh---> (deployed_server,[deploye_server2])
necesita registrar gitlab-runner en gitlab-ci y establecer la etiqueta en delpoyServer en 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"
significa runner.ssh, el corredor iniciará sesión en ${the_destionation_of_deployServer_IP1}
y ${the_destionation_of_deployServer_IP2}
, luego builds_dir
el proyecto en builds_dir
.
escriba el archivo yml por ejemplo: .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
establezca su gitlab-runner en las etiquetas
delpoyServer1
ydelpoyServer2
en '' http://your.gitlab.server/ci/admin/runners ''- cuando empujes tu codigo a gitlab
- el servidor gitlab-ci analizará su archivo
.gitlab-ci.yml
en su proyecto, elija un corredor con las etiquetas:deployServer1
odeployServer2
; - el
gitlab-runner
con la etiqueta deployServer1 iniciará sesión en${the_destionation_of_deployServer_IP1}
y${the_destionation_of_deployServer_IP2}
con ssh,builds_dir
el proyecto enbuilds_dir
, luego ejecutará el script: npm install && forever restartall.
enlazar: