【问题标题】:Typescript Node.js project - deployment to production workflowTypescript Node.js 项目 - 部署到生产工作流程
【发布时间】:2020-07-14 09:31:14
【问题描述】:

我应该如何为我的 Node.js 服务器应用设置我的 dist 构建和生产部署工作流? (NestJS API)?

我目前的工作流程:

  1. 将更改提交到production 分支
  2. 带有pm2 的生产服务器会自动从此仓库中提取更改
  3. 产品服务器上的自动npm install
  4. 产品服务器上的自动 npm run build
  5. 产品服务器上的自动pm2 start

我在这个工作流程中看到的主要问题是我在生产服务器上运行构建。这意味着我需要服务器上的所有 devDependencies,并且在构建时我正在服务器上执行性能峰值。

我已经在我的 repo 上配置了 GitHub Actions 来构建我的代码并将其保存为提交时的工件,但现在我卡住了。

  • 我是否应该将构建的源代码提交到 repo,然后在生产环境中使用 pm2 挂钩?
  • 我应该通过一些脚本下载工件到生产环境,解压并运行它吗?我在这里看到几个问题:
    • /dist 文件夹(工件)没有 package.json 和资产
    • 我失去了 Git 功能,因此我需要始终删除旧源并解压缩新源

【问题讨论】:

    标签: node.js typescript github production


    【解决方案1】:

    我没有所需的所有信息,但我想您应该在 CI/CD 工具(例如 TravisCI)上运行构建步骤,然后将 /dist 文件夹的内容推送到您的生产服务器.然后,pm2 将只运行这个生产版本。

    【讨论】:

    • 这正是我计划的方式,但是我必须将构建的代码提交给 git,这样 pm2 才能正确地提取它?
    • 有很多方法可以做。您可以决定将构建的代码提交到 git(例如在单独的孤立分支中),或者您可以使用 ssh/scp 直接从 CI/CD 管道将其上传到服务器!我要做的是一个可以由您或 CI/CD 调用的 shell 脚本,它将 /dist 内容部署到生产服务器
    • 另一种解决方案是使用 Github Packages,它的作用类似于私有 npm 存储库。您可以将您的应用程序部署为一个包并要求您的生产服务器安装它
    猜你喜欢
    • 2018-01-30
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 2021-01-29
    • 2018-07-12
    • 1970-01-01
    相关资源
    最近更新 更多