使用GitLab连续部署NodeJS

我有一个在.gitlab-ci.yml开发的API,通过.gitlab-ci.yml文件成功build立了持续集成。 如果所有的testing都通过了主分支,下一个阶段是build立到Heroku的连续部署。

有大量的教程涵盖了Ruby和Python应用程序的部署,但NodeJS上没有任何内容。 目前我的.gitlab-ci.yml文件如下所示:

 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 

Ruby和Python教程使用dpl工具进行部署,但是如何在部署后在服务器上启动NodeJS脚本?

添加生产部分并推送之后,testing运行并通过,但部署阶段陷入挂起状态。 控制台是空白的。 有没有人为NodeJS设置了一个成功的CD脚本?

那么,这将不是有史以来最长的答案,但这可能会帮助你 。

如果它消失的话,这里是内容:

  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 

您可以使用更简单的YAML脚本,您可以在其中定义CI的阶段(在生产部署之前运行testing),然后可以在Heroku部署阶段使用不同的映像。 因此,对于节点应用程序,将默认图像定义为node:latest。 然后,使用dpl进行生产部署,可以使用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