【问题标题】:heroku deployment with ci/cd使用 ci/cd 部署 heroku
【发布时间】:2021-12-23 18:40:52
【问题描述】:

我正在尝试使用 github 操作构建 CI/CD 管道,以便构建我的应用并将其部署到 heroku。我使用了以下 YAML 文件。但它在 github 操作中显示错误。谁能帮我解决这个问题。我的存储库是bigshopcicd。我的项目结构是 大商店 |-后台 |-前端 |-package.json
错误-

Run npm run build

sh: 1: react-scripts: 未找到

npm 错误!代码生命周期 npm 错误!系统调用产生 npm 错误!文件 sh npm 错误!错误号 ENOENT npm 错误!前端@0.1.0 构建:react-scripts build npm 错误!生成 ENOENT

bigshop@1.0.0 build /home/runner/work/bigshopcicd/bigshopcicd cd frontend && npm run build

frontend@0.1.0 build /home/runner/work/bigshopcicd/bigshopcicd/frontend 反应脚本构建

npm 错误! npm 错误!在 frontend@0.1.0 构建脚本中失败。 npm 错误!这可能不是 npm 的问题。上面可能有额外的日志输出。 npm WARN 本地 package.json 存在,但缺少 node_modules,你的意思是要安装吗?

npm 错误!可以在以下位置找到此运行的完整日志: npm 错误! /home/runner/.npm/_logs/2021-12-23T08_13_25_954Z-debug.log npm 错误!代码生命周期 npm 错误!错误号 1 npm 错误! bigshop@1.0.0 构建:cd frontend && npm run build npm 错误!退出状态 1 npm 错误! npm 错误! bigshop@1.0.0 构建脚本失败。 npm 错误!这可能不是 npm 的问题。上面可能还有额外的日志输出。

npm 错误!可以在以下位置找到此运行的完整日志: npm 错误! /home/runner/.npm/_logs/2021-12-23T08_13_25_975Z-debug.log 错误:进程已完成,退出代码为 1。

pipeline.yml-

name: Deployment pipeline

on:
  push:
    branches:
      - main
  pull_request:
    branches: [main]
    types: [opened, synchronize]

jobs:
  simple_deployment_pipeline:
    runs-on: ubuntu-18.04
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v1
        with:
          node-version: '12.x'
      - name: npm install
        run: npm install
      - name: build
        run: npm run build
      - name: deployment
        uses: akhileshns/heroku-deploy@v3.12.12
        if: ${{ github.event_name == 'push' && !contains(join(github.event.commits.*.message, ' ,'), '#skip') }}
        with:
          heroku_api_key: ${{secrets.HEROKU_API_KEY}}
          heroku_app_name: bigshopcicd
          heroku_email: fakirsumon78@gmmail.com
          healthcheck: 'https://bigshopcicd.herokuapp.com/health'
          checkstring: 'ok'
          rollbackonhealthcheckfailed: true
      - uses: actions/checkout@v2
      - name: Bump version and push tag
        uses: anothrNick/github-tag-action@eca2b69f9e2c24be7decccd0f15fdb1ea5906598
        if: ${{ github.event_name == 'push' && !contains(join(github.event.commits.*.message, ' ,'), '#skip') }}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          WITH_V: true
          DEFAULT_BUMP: patch
          RELEASE_BRANCHES: main

package.json 文件-

 "scripts": {
"start": "node backend/server.js",
"dev": "set NODE_ENV=DEVELOPMENT& nodemon backend/server",
"prod": "set NODE_ENV=PRODUCTION& nodemon backend/server",
"seeder": "node backend/utils/seeder.js",
"build": "cd frontend && npm run build",
"heroku-postbuild": "NPM_CONFIG_PRODUCTION=false && npm install --prefix frontend && npm run build --prefix frontend"

},

【问题讨论】:

    标签: node.js reactjs heroku continuous-integration


    【解决方案1】:

    你的 npm install 命令在你的根 package.json 中运行安装,它不包含 react 依赖项。然后构建步骤进入 ./frontend 并尝试使用那些未获取的反应脚本。

    您可以使用 npm 的 preinstall 目标来安装前端依赖项。

    还可以尝试看看是否可以将项目拆分为两个不同的项目,因为这种结构看起来很脆弱,实际上您失去了拥有单独的后端/前端的优势。 (加上你的脚本变得过于复杂)

    编辑:
    预安装并不是专门为安装节点模块而设计的,它只是你可以添加到 package.json 中的一个步骤,它将在安装步骤之前由 npm 运行,它可以包含任意脚本命令。在您的情况下,可以尝试:

    "scripts": {
        "preinstall": "cd frontend && npm install",
        "start": "node backend/server.js",
        "dev": "set NODE_ENV=DEVELOPMENT& nodemon backend/server",
        "prod": "set NODE_ENV=PRODUCTION& nodemon backend/server",
        "seeder": "node backend/utils/seeder.js",
        "build": "cd frontend && npm run build"
    }
    

    【讨论】:

    • 你能否解释一下如何使用 npm preinstall 安装依赖项。我对此一无所知。我是 ci/cd 的新手。
    • 我刚刚重新检查了您的项目,有一些我不明白的地方:您有一个节点后端 + 一个反应前端,但我认为 heroku 无法识别您要部署的内容。您的 Procfile 声明您正在部署一个节点应用程序,但您的项目需要两个网络服务器,一个用于反应应用程序,一个用于节点 API。
    猜你喜欢
    • 2023-03-16
    • 2017-09-01
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    相关资源
    最近更新 更多