ci/cd 的 heroku 部署
heroku deployment with ci/cd
我正在尝试使用 github 操作构建一个 CI/CD 管道,以便构建我的应用程序并将其部署到 heroku。我使用了以下 YAML 文件。但它在 github 操作中显示错误。谁能帮我解决这个问题。我的 reository 是 bigshopcicd。我的项目结构是
大卖场
|-后端
|-前端
|-package.json
错误-
Run npm run build
sh: 1: 反应脚本: 未找到
npm 错误!代码生命周期
错误!系统调用生成
错误!文件sh
错误!错误的恩诺特
错误!前端@0.1.0 构建:react-scripts build
错误!生成 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
react-scripts build
npm 错误!
错误! frontend@0.1.0 构建脚本失败。
错误!这可能不是 npm 的问题。上面可能有额外的日志输出。
npm WARN Local package.json 存在,但缺少 node_modules,您是要安装吗?
npm 错误!此 运行 的完整日志可在以下位置找到:
错误! /home/runner/.npm/_logs/2021-12-23T08_13_25_954Z-debug.log
错误!代码生命周期
错误!错误号 1
错误! bigshop@1.0.0 构建:cd frontend && npm run build
错误!退出状态 1
错误!
错误! bigshop@1.0.0 构建脚本失败。
错误!这可能不是 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"
},
你的 npm install 命令 运行s 在你的根 package.json 中安装,它不包含反应依赖项。然后构建步骤进入 ./frontend 并尝试使用那些未获取的反应脚本。
您可以使用 npm 的 preinstall
目标来安装前端依赖项。
同时尝试看看是否可以将项目拆分为两个不同的项目,因为这种结构看起来很脆弱,而且您实际上失去了拥有单独 backend/frontend 的优势。 (加上你的脚本变得过于复杂)
编辑:
预安装不是专门为安装节点模块而设计的,它只是您可以添加到 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"
}
我正在尝试使用 github 操作构建一个 CI/CD 管道,以便构建我的应用程序并将其部署到 heroku。我使用了以下 YAML 文件。但它在 github 操作中显示错误。谁能帮我解决这个问题。我的 reository 是 bigshopcicd。我的项目结构是
大卖场
|-后端
|-前端
|-package.json
错误-
Run npm run build
sh: 1: 反应脚本: 未找到
npm 错误!代码生命周期
错误!系统调用生成
错误!文件sh
错误!错误的恩诺特
错误!前端@0.1.0 构建:react-scripts build
错误!生成 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 react-scripts build
npm 错误! 错误! frontend@0.1.0 构建脚本失败。 错误!这可能不是 npm 的问题。上面可能有额外的日志输出。 npm WARN Local package.json 存在,但缺少 node_modules,您是要安装吗?
npm 错误!此 运行 的完整日志可在以下位置找到:
错误! /home/runner/.npm/_logs/2021-12-23T08_13_25_954Z-debug.log
错误!代码生命周期
错误!错误号 1
错误! bigshop@1.0.0 构建:cd frontend && npm run build
错误!退出状态 1
错误!
错误! bigshop@1.0.0 构建脚本失败。
错误!这可能不是 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"
},
你的 npm install 命令 运行s 在你的根 package.json 中安装,它不包含反应依赖项。然后构建步骤进入 ./frontend 并尝试使用那些未获取的反应脚本。
您可以使用 npm 的 preinstall
目标来安装前端依赖项。
同时尝试看看是否可以将项目拆分为两个不同的项目,因为这种结构看起来很脆弱,而且您实际上失去了拥有单独 backend/frontend 的优势。 (加上你的脚本变得过于复杂)
编辑:
预安装不是专门为安装节点模块而设计的,它只是您可以添加到 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"
}