GitHub 操作 CI 检查 npm 测试保持 运行 不间断
GitHub action CI check for npm test keep running non stop
我之前在设置 github-workflow
时使用过 github actions
,但这是我第一次为 npm test
添加 action/job。
我已将其配置为 运行 像往常一样开发分支的拉取请求操作...但是测试从未在 github 操作作业中完成 运行ning。我一直在谷歌搜索,但似乎找不到相关的解决方案。
Github 请求截图 1
Github 请求截图 2
我正在使用 nodejs
并且测试是用 jasmine
编写的。我不知道它是否与我自己设置的设置或测试配置有关,所以我还在下面包含了一些相关的 code/files 以防万一。
.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 action/workflow 推送或拉取请求的帮助(以便我可以将包含测试的功能分支合并到开发分支中):
什么使测试 运行 在 GitHub 操作中不停?
如何才能通过 github 操作检查并 运行 成功?
虽然我没有机会查看您的 GitHub 存储库,但根据您在此处发布的内容,我建议的一种解决方案是:
- 将开发测试作为您脚本的一部分,它将 运行
nodemon --exec babel-node spec/run.js
在您的 package.json 配置中
- 将 package.json 的测试脚本更改为
babel-node spec/run.js
。
这将确保在推送更改时测试 运行 仅一次。因此,在本地工作时,您可以使用 npm run dev-test
在本地进行更改的整个期间保持测试。
我之前在设置 github-workflow
时使用过 github actions
,但这是我第一次为 npm test
添加 action/job。
我已将其配置为 运行 像往常一样开发分支的拉取请求操作...但是测试从未在 github 操作作业中完成 运行ning。我一直在谷歌搜索,但似乎找不到相关的解决方案。
Github 请求截图 1
Github 请求截图 2
我正在使用 nodejs
并且测试是用 jasmine
编写的。我不知道它是否与我自己设置的设置或测试配置有关,所以我还在下面包含了一些相关的 code/files 以防万一。
.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 action/workflow 推送或拉取请求的帮助(以便我可以将包含测试的功能分支合并到开发分支中):
什么使测试 运行 在 GitHub 操作中不停?
如何才能通过 github 操作检查并 运行 成功?
虽然我没有机会查看您的 GitHub 存储库,但根据您在此处发布的内容,我建议的一种解决方案是:
- 将开发测试作为您脚本的一部分,它将 运行
nodemon --exec babel-node spec/run.js
在您的 package.json 配置中 - 将 package.json 的测试脚本更改为
babel-node spec/run.js
。
这将确保在推送更改时测试 运行 仅一次。因此,在本地工作时,您可以使用 npm run dev-test
在本地进行更改的整个期间保持测试。