目前我们运行我们的业力/茉莉花单元测试一项吞咽任务:gulp test
我们正试图弄清楚如何让circleci自动运行我们的测试。我尝试在circle.yml文件的gulp test
部分下添加test:
,但我得到gulp: command not found
。但是如果我尝试像pwd
这样的基本操作,我会得到同样的错误。显然我做错了。
我认为使用package.json中的scripts
属性可以获得相同的结果,因为circleci会自动运行,但我不知道该怎么做。
这是我们的circle.yml文件......
dependencies:
override:
- echo PHP rules
test:
override:
- gulp test #this doesnt work!
deployment:
development:
branch: dev
heroku:
appname: ourapp
这是package.json ...
{
"name": "ourapp",
"private": true,
"description": "An app",
"main": "index.js",
"dependencies": {
"gulp": "~3.8.5"
},
"devDependencies": {
"karma": "~0.12.31",
"karma-chrome-launcher": "~0.1.7",
"jasmine-core": "~2.2.0",
"karma-jasmine": "~0.3.5",
"karma-firefox-launcher": "~0.1.4",
"karma-ie-launcher": "~0.1.5",
"karma-opera-launcher": "~0.1.0",
"karma-phantomjs-launcher": "~0.1.4",
"gulp": "~3.8.10",
"gulp-karma": "0.0.4",
"karma-coverage": "~0.2.7"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "The A Team"
}
以防它有用,这是gulp任务......
gulp.task('test', function(){
return gulp.src(testFiles)
.pipe(karma({
configFile: 'karma.conf.js',
action: 'run' //change to watch if you want to auto-run
}))
.on('error', function(err){
throw err;
})
});
为了保持一致性,我认为最好的情况是如果我们可以让circleci运行gulp任务,但是如果我们必须手动运行karma ...
就没关系。
答案 0 :(得分:5)
这对我有用:
dependencies:
pre:
- npm install -g gulp
test:
override:
- gulp test
machine:
php:
version: 5.6.2
npm install -g gulp
对我来说是个缺失的部分。 Circleci将检测package.json并自动运行npm install
,但我需要pre:
全局安装 ,以便我的gulp任务正常工作。
还值得一提的是,circleci通过检测退出代码自动知道业力/茉莉花测试是否通过或失败。所以这只是按原样运作。
答案 1 :(得分:3)
我是CircleCI开发者之一。您需要做的是指定要在circle.yml中构建的NodeJS版本,以便触发NodeJS推理规则 - https://circleci.com/docs/language-nodejs
完成后,我们会自动运行npm install
,npm test
等。
要使npm test
做正确的事情,您需要正确配置测试脚本。最好先在本地环境中运行。
您可能还需要将gulp-cli
添加为dev依赖项,这些天大多数NodeJS工具将库和cli二进制文件拆分为单独的包。