Déploiement Continu d'un NodeJS à L'aide de GitLab

j'ai une API développée dans NodeJS et j'ai réussi à configurer l'intégration continue via un .gitlab-ci.yml fichier. L'étape suivante consiste à mettre en place un déploiement continu à Heroku si tous les tests passent sur la branche principale.

il y a beaucoup de tutoriels couvrant le déploiement des applications Ruby et Python mais rien sur NodeJS. Actuellement, mon .gitlab-ci.yml le fichier ressemble à ceci:

image: node:latest

job1:
  script: "ls -l"

test:
  script: "npm install;npm test"

production:
  type: deploy
  script:
  - npm install
  - npm start
  - gem install dpl
  - dpl --provider=heroku --app=my-first-nodejs --api-key=XXXXXXXXXX
  only:
  - master

les tutoriels Ruby et Python utilisent le dpl outil à déployer mais comment puis-je démarrer les NodeJS script sur le serveur une fois déployé?

après avoir ajouté la section de production et l'avoir poussée, les essais s'exécutent et passent, mais l'étape de déploiement est bloquée en attente. La console est vide. Quelqu'un a-t-il créé un script CD pour NodeJS?

12
demandé sur Mark Tyers 2016-02-17 12:39:23

3 réponses

Vous pouvez utiliser un script YAML beaucoup plus simple où vous pouvez définir les étapes pour le CI (pour exécuter le test avant le déploiement de la production) vous pouvez ensuite utiliser une image différente à L'étape de déploiement de Heroku. Ainsi, pour une application de noeud, vous définissez l'image par défaut comme noeud: latest. Ensuite, pour le déploiement de la production en utilisant dpl, vous pouvez utiliser l'image ruby.

image: node:latest

stages:
  - job1
  - test
  - production

job1:
  stage: job1
  script: "ls -l"

test:
  stage: test
  script: 
    - npm install
    - npm test
  artifacts:
    paths:
      - dist/

production:
  type: deploy
  stage: production
  image: ruby:latest
  script:
    - apt-get update -qy
    - apt-get install -y ruby-dev
    - gem install dpl
    - dpl --provider=heroku --app=my-first-nodejs --api-key=XXXXXXXXXX
  only:
    - master
9
répondu xam 2017-02-21 08:07:15

eh Bien, ce ne sera pas la plus longue réponse, jamais, mais ce peut vous aider.

Voici le contenu si jamais disparaître:

  image: node:argon

  before_script:
    - apt-get -qq update
    - apt-get -qq install -y python2.7 python2.7-dev build-essential make gcc g++ libicu-dev
    - npm -g install npm --silent
    - "echo -e \"export default {CLIENT_ID: '$CLIENT_ID'}\" > app/scripts/settings.js"
    - npm set progress=false
    - npm install --silent

  stages:
    - test
    - build
    - clean_up

  run_tests:
    stage: test
    script:
      - npm test

  build_and_deploy_prod:
    stage: build
    script:
      - npm run build
      - mkdir  dist/build
      - tar czfC dist/build/latest.tar.gz dist/$CI_BUILD_REF_NAME/ .
      - tar czfC dist/build/$CI_BUILD_REF.tar.gz dist/$CI_BUILD_REF_NAME/ .
      - apt-get install -yqq ruby ruby-dev
      - gem install dpl
      - dpl --skip_cleanup --provider=s3 --region=eu-west-1 --access-key-id=$AWS_ACCESS_KEY --secret-access-key=$AWS_SECRET_KEY --bucket=$AWS_BUCKET --local-dir=dist/build/ --upload-dir=$CI_BUILD_REF_NAME
    artifacts:
      paths:
        - dist/$CI_BUILD_REF_NAME/
    only:
      - master
      - develop

  clean_up_job:
    stage: clean_up
    script:
      - rm -rf node_modules
      - rm -rf ~/.node-gyp
    when: on_failure
7
répondu plunntic 2016-02-22 23:42:56

bien expliquées article pour un Déploiement Continu de NodeJS à l'aide de GitLab :

LINK

0
répondu Pulkit chadha 2018-07-06 05:09:27