yml tutorial runners oficial ocean node digitalocean deploy node.js continuous-integration gitlab gitlab-ci gitlab-ci-runner

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])

  1. 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 .

  1. 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

  2. establezca su gitlab-runner en las etiquetas delpoyServer1 y delpoyServer2 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 o deployServer2 ;
    • 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 en builds_dir , luego ejecutará el script: npm install && forever restartall.

enlazar: