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?
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
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
bien expliquées article pour un Déploiement Continu de NodeJS à l'aide de GitLab :