【问题标题】:GitHub action CI check for npm test keep running non stopGitHub 操作 CI 检查 npm 测试保持不间断运行
【发布时间】:2021-06-03 07:28:18
【问题描述】:

我之前在设置github-workflow 时与github actions 合作过,但这是我第一次为npm test 包括操作/工作。

我已将其配置为在拉取请求上运行操作以像往常一样开发分支......但测试永远不会在 github 操作作业中完成运行。我一直在谷歌搜索,但似乎找不到相关的解决方案。

Github 拉取请求截图 1

Github 拉取请求截图 2

我正在使用nodejs,测试是用jasmine 编写的。我不知道这是否与我自己设置的设置或测试配置有关,所以我还在下面包含了一些相关的代码/文件以防万一。

.github/workflows/node.js.yml

# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions

name: Node.js CI

on:
  push:
    branches: [ main, develop ]
  pull_request:
    branches: [ main, develop ]

jobs:
  build:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [10.x, 12.x, 14.x, 15.x]
        # See supported Node.js release schedule at https://nodejs.org/en/about/releases/

    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    - run: npm ci
    - run: npm run build --if-present
    - run: npm test

上面的node.js.yml文件☝????已经在develop branch中了。

package.json

{
  //scripts

  "scripts": {
    "prestart": "node -r esm src/startMessage.js",
    "start": "npm-run-all --parallel lint:watch",
    "lint": "esw src --color",
    "lint:watch": "npm run lint -- --watch",
    "test": "nodemon --exec babel-node spec/run.js"
  },
  
//dependencies

  "dependencies": {
    "arg": "^5.0.0",
    "chalk": "^4.1.0",
    "esm": "^3.2.25",
    "execa": "^5.0.0",
    "inquirer": "^8.0.0",
    "listr": "^0.14.3",
    "ncp": "^2.0.0",
    "npm-run-all": "^4.1.5",
    "pkg-install": "^1.0.0"
  },
  "devDependencies": {
    "babel-cli": "^6.26.0",
    "babel-core": "^6.26.3",
    "babel-preset-env": "^1.7.0",
    "babel-register": "^6.26.0",
    "eslint": "^7.21.0",
    "eslint-plugin-import": "^2.22.1",
    "eslint-watch": "^7.0.0"
    "eslint-watch": "^7.0.0",
    "jasmine": "^3.6.4",
    "nodemon": "^2.0.7"
  }
}

src/cli.js

export let cli = (args) => {
  console.log(args);
}

spec/cli.spec.js

import { cli as cli } from '../src/cli';

describe('cli function', () => {

  it('should return undefined', () => {
    let test = cli();
    expect(test).toBeUndefined();
  });
});

spec/run.js

import Jasmine from 'jasmine';

const jasmine = new Jasmine();
jasmine.loadConfigFile('spec/support/jasmine.json');

jasmine.execute();

spec/support/jasmine.json

{
  "spec_dir": "spec",
  "spec_files": [
    "**/*[sS]pec.js"
  ],
  "helpers": [
    "helpers/**/*.js"
  ],
  "stopSpecOnExpectationFailure": false,
  "random": true
}

.babelrc

{
  "presets": [
    "env"
  ]
}

当我在终端中运行 npm test 时,测试在本地运行良好。我需要有关推送或拉取请求的 github 操作/工作流程的帮助(以便我可以将包含测试的功能分支合并到开发分支中):

  • 是什么让测试在 GitHub 操作中不停地运行?

  • 如何让 github 操作检查通过并成功运行?

【问题讨论】:

    标签: node.js unit-testing jasmine github-actions git-workflow


    【解决方案1】:

    虽然我没有机会查看您的 GitHub 存储库,但根据您在此处发布的内容,我建议的一种解决方案是:

    1. 将 dev-test 作为脚本的一部分,在 package.json 配置中运行 nodemon --exec babel-node spec/run.js
    2. 将 package.json 的测试脚本更改为 babel-node spec/run.js

    这将确保在推送更改时仅运行一次测试。因此,在本地工作时,您可以使用 npm run dev-test 在您在本地进行更改的整个期间保持测试。

    【讨论】:

    • 将 CI 测试命令与 dev 命令分开很有效,谢谢!
    • 我无法编辑您的答案。请帮助编辑您的答案:从 no 中删除 node --exec。 2 即只是 babel-node spec/run.js 并将 run 添加到测试命令中,即 npm run dev-test。
    • 看起来不错?。谢谢!这样我就可以在开发中使用:npm test 命令,我将 package.json 中的测试脚本保留为 nodemon --exec babel-node spec/run.js 。然后将开发测试更改为 CI 测试:babel-node spec/run.js。然后在 node.js.yml 文件中使用npm run CI-test。我终于明白了要点,用 nodemon 自动化是问题所在。再次感谢。
    猜你喜欢
    • 2020-09-07
    • 2022-01-25
    • 2022-01-10
    • 2023-04-03
    • 2020-10-11
    • 1970-01-01
    • 2021-05-16
    • 2021-06-08
    • 2021-06-21
    相关资源
    最近更新 更多