node.js - 使用 GitLab 将 Node.js 应用程序持续部署到 Heroku

标签 node.js heroku gitlab gitlab-ci

有一些教程涵盖了 Ruby 和 Python 应用程序的部署,但我找不到很好的 NodeJS 文档或示例。

http://docs.gitlab.com/ce/ci/examples/test-and-deploy-python-application-to-heroku.html

http://docs.gitlab.com/ce/ci/examples/test-and-deploy-ruby-application-to-heroku.html

有人有 .gitlab-ci.yml 可以分享吗?

最佳答案

  1. 创建一个项目
 npm init -y
 npm i  #install dependencies 
  1. 在 package.json 中添加以下行
    "engines": {
        "node": "8.12.0",  //node version
        "npm": "6.4.1"     //npm version
    },
    "scripts": {
        "start": "node app.js", //heroku will using the following script to run node app
    }
  1. 创建一个heroku项目

    1. 选择 -> 创建新应用
    2. 设置应用名称 & 选择地区
    3. 点击创建应用
  2. Gitlab setup 创建新的 repo 或添加到 gitlab 网站上给出的现有项目

  3. 创建一个 .gitlab-ci.yml 文件

    image: node:latest
    stages:
    - production
    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=APPNAME_OF_Heroku App --api-key=$HEROKU_API_KEY # security add the heroku api to CI/CD setting
    only:
        - master  #branch name to deploy on heroku
    
    
  4. 设置HEROKU_API_KEY
    1. 设置 -> CI/CD -> 变量 -> 展开
    2. 输入变量键 -> .gitlab-ci.yml 中的变量名
    3. 输入变量值 -> Heroku Api Key
  5. 获取 Heroku Api key

    1. Heroki Dashborad -> 账户设置
  6. 在 Gitlab 上设置 Runner

    1. 设置 -> CI/CD -> 变量 -> 展开
      1. 特定运行者
        1. 安装 gitlab-runner
        2. Windows
        3. Linux
        4. MacOS
        5. 关于设置步骤here
      2. 共享运行者
        1. 只需点击禁用共享运行器即可启用共享运行器
  7. 将文件推送到 gitlab 它将自动部署在 heroku 上

    git add .                 #to add all the files)
    git commit -m "message"   #to commit files
    git push origin master  
    

关于node.js - 使用 GitLab 将 Node.js 应用程序持续部署到 Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38885185/

相关文章:

node.js - 如何在 Mongoose 中的虚拟对象中填充对象

heroku - 在 heroku-buildpack-static 中使用变量

node.js - Heroku + Cloudflare 完全免费的 SSL

Gitlab权限: Wiki only?

javascript - 查找 MySQL 中最新条目的数量?

node.js - PassThrough 流的 write() 和 push() 有什么区别?

node.js - 如何在 Sequelize 中创建父/子关联?

node.js - Heroku 上找不到 js 文件

git - 可以重命名分支吗?

amazon-web-services - 我如何使用 ecr 与来自其他注册表的正常 docker 登录