meteor gitlab gitlab-ci continuous-delivery

¿Cómo usar Gitlab CI/CD para desplegar un proyecto de meteoros?



gitlab-ci continuous-delivery (1)

Como se afirma en su sitio web, Gitlab se puede usar para implementar proyectos automáticamente después de que se introduzca un código en el repositorio, pero no puedo averiguar cómo. Hay un montón de tutoriales de rubí por ahí, pero ninguno para meteoros o nodo.

Básicamente, solo necesito reconstruir un contenedor de Docker en mi servidor, después de que el código se inserte en mi rama principal. ¿Alguien sabe como lograrlo? Soy totalmente nuevo en el tema .gitlab-ci.yml y aprecio la ayuda bastante.


Breve: Estoy ejecutando una aplicación Meteor 1.3.2, alojada en Digital Ocean (Ubuntu 14.04) desde hace 4 meses. Estoy usando Gitlab v. 8.3.4 corriendo en la misma gota de Digital Ocean que la aplicación Meteor. Es una gota de 2 GB / 2 CPU ($ 20 por mes). Utilizando el construido en Gitlab CI para CI / CD. Esta configuración se ha ejecutado con éxito hasta ahora. (Actualmente no estamos usando Docker, sin embargo, esto no debería importar).

Nuestra estrategia de CI / CD:

  1. Echamos un vistazo a la rama Master en nuestra computadora portátil local. La rama contiene todo el proyecto Meteor como se muestra a continuación:

Usamos la herramienta git CLI en Windows para conectarnos a nuestro servidor Gitlab. (para actividades de git, push, etc. similares a git regulares)

  1. Abra el proyecto desprotegido en el editor Atom. También hemos integrado Atom con Gitlab. Esto ayuda en el estado rápido de git / pull / push, etc. dentro del editor Atom. Hacer trabajo regular de meteoros a saber. corregir errores, etc.

  2. Después de las pruebas en una computadora portátil local, luego hacemos git push & commit en master. Esto desencadena la creación automática mediante Gitlab CI y los resultados (incluidos los registros de creación) se pueden ver en Gitlab como se muestra a continuación:

La imagen de abajo muestra todos los registros de compilación anteriores:

Por favor siga los siguientes pasos:

  1. Instale el meteorito en la gota de OD.

  2. Instale Gitlab en DO (utilizando la implementación de 1 clic si es posible) o la instalación manual. Asegúrese de que está instalando Gitlab v. 8.3.4 o una versión más reciente. Había hecho un despliegue de un solo clic en mi droplet. Inicie el servidor gitlab e inicie sesión en gitlab desde el navegador. Abra su proyecto y vaya a la configuración del proyecto -> Corredores del menú de la izquierda

  1. SSH a su servidor de DO y configure un nuevo servicio upstart en el droplet como root:

    vi /etc/init/meteor-service.conf

Archivo de muestra:

#upstart service file at /etc/init/meteor-service.conf description "Meteor.js (NodeJS) application for eaxmple.com:3000" author "[email protected]" # When to start the service start on runlevel [2345] # When to stop the service stop on shutdown # Automatically restart process if crashed respawn respawn limit 10 5 script export PORT=3000 # this allows Meteor to figure out correct IP address of visitors export HTTP_FORWARDED_COUNT=1 export MONGO_URL=mongodb://xxxxxx:[email protected]:59672/meteor-db export ROOT_URL=http://<droplet_ip>:3000 exec /home/gitlab-runner/.meteor/packages/meteor-tool/1.1.10/mt-os.linux.x86_64/dev_bundle/bin/node /home/gitlab-runner/erecaho-build/server-alpha-running/bundle/main.js >> /home/gitlab-runner/erecaho-build/server-alpha-running/meteor.log end script

  1. Instale gitlab-ci-multi-runner desde aquí: https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/blob/master/docs/install/linux-repository.md según las instrucciones de Cheatsheet:

    curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.deb.sh | sudo bash sudo apt-get install gitlab-ci-multi-runner sudo gitlab-ci-multi-runner register

    Introduzca los detalles del paso 2

  2. Ahora el nuevo corredor debe ser verde o activar el corredor si es necesario

  3. Cree .gitlab-ci.yml dentro del directorio del proyecto de meteorito

    Archivo de muestra:

    before_script: - echo "======================================" - echo "==== START auto full script v0.1 =====" - echo "======================================" types: - cleanup - build - test - deploy job_cleanup: type: cleanup script: - cd /home/gitlab-runner/erecaho-build - echo "cleaning up existing bundle folder" - echo "cleaning up current server-running folder" - rm -fr ./server-alpha-running - mkdir ./server-alpha-running only: - master tags: - master job_build: type: build script: - pwd - meteor build /home/gitlab-runner/erecaho-build/server-alpha-running --directory --server=http://example.org:3000 --verbose only: - master tags: - master job_test: type: test script: - echo "testing ----" - cd /home/gitlab-runner/erecaho-build/server-alpha-running/bundle - ls -la main.js only: - master tags: - master job_deploy: type: deploy script: - echo "deploying ----" - cd /home/gitlab-runner/erecaho-build/server-alpha-running/bundle/programs/server/ && /home/gitlab-runner/.meteor/packages/meteor-tool/1.1.10/mt-os.linux.x86_64/dev_bundle/bin/npm install - cd ../.. - sudo restart meteor-service - sudo status meteor-service only: - master tags: - master

  4. Compruebe en el archivo anterior en gitlab. Esto debería activar Gitlab CI y una vez que se complete el proceso de construcción, la nueva aplicación estará disponible @ example.net:3000

Nota : la aplicación no estará disponible después de registrar .gitlab-ci.yml por primera vez, ya que el reinicio del servicio de meteoros dará como resultado que no se encuentre el servicio. Ejecute manualmente sudo start meteor-service una vez en la consola DO SSH. Publique este nuevo registro en gitlab master que activará el CI / CD automático y la nueva versión de la aplicación estará disponible en example.com:3000 después de que la compilación se complete con éxito.

PS: gitlab ci yaml docs se puede encontrar en http://doc.gitlab.com/ee/ci/yaml/README.html para su personalización y para comprender el archivo yaml de muestra anterior. Para el corredor específico de la ventana acoplable, consulte https://gitlab.com/gitlab-org/gitlab-ci-multi-runner