Continuous integration 在GitLab CI中使用Karma for Angular项目运行单元测试时出现的问题

Continuous integration 在GitLab CI中使用Karma for Angular项目运行单元测试时出现的问题,continuous-integration,gitlab,karma-runner,Continuous Integration,Gitlab,Karma Runner,我得到以下错误: 313$npm运行测试 314>角底-line@0.0.0测试/构建/8800/IT/EAPC/基线项目/角度 315>ng试验 316 30 01 2020 10:45:00.853:警告[业力]:没有捕获的浏览器,打开 317 30 01 2020 10:45:00.894:信息[业力服务器]:业力v4.4.1服务器在启动 318 30 01 2020 10:45:00.895:INFO[启动器]:启动浏览器ChromeHeadlessCustom,并发不受限制 319

我得到以下错误:

  • 313$npm运行测试
  • 314>角底-line@0.0.0测试/构建/8800/IT/EAPC/基线项目/角度
  • 315>ng试验
  • 316 30 01 2020 10:45:00.853:警告[业力]:没有捕获的浏览器,打开
  • 317 30 01 2020 10:45:00.894:信息[业力服务器]:业力v4.4.1服务器在启动
  • 318 30 01 2020 10:45:00.895:INFO[启动器]:启动浏览器ChromeHeadlessCustom,并发不受限制
  • 319 30 01 2020 10:45:00.903:信息[启动器]:启动浏览器ChromeHeadless
  • 337 30 01 2020 10:45:06.908:警告[发射装置]:铬人头在6000毫秒内没有被捕获,死亡
  • 338 30 01 2020 10:45:08.909:警告[发射装置]:ChromeHeadless没有在2000毫秒内被杀死,发出SIGKILL
  • 339 30 01 2020 10:45:10.912:警告[发射装置]:ChromeHeadless在2000毫秒内没有被SIGKILL杀死,继续
我的业力档案

module.exports=函数(配置){
const process=require('process');
process.env.CHROME_BIN=require('puppeter').executablePath();
config.set({
基本路径:“”,
框架:['jasmine','angular devkit/build angular'],
插件:[
需要(“噶玛茉莉花”),
需要('karma-chrome-launcher'),
require('phantomjs-prebuild'),
//需要('karma-phantomjs-launcher'),
要求('karma-jasmine-html-reporter'),
要求(“karma-coverage-istanbul-reporter”),
需要(“@angular devkit/build angular/plugins/karma”)
],
客户:{
clearContext:false//使Jasmine Spec Runner输出在浏览器中可见
},
报道者:{
目录:require('path')。join('coverage'),报告:['html','lcovonly'],
FixWebPackageSourcePath:true
},
记者:[“进步”,“kjhtml”],
港口:9876,
颜色:对,
日志级别:config.LOG\u INFO,
自动观察:没错,
browserSocketTimeout:6000,
browserNoActivityTimeout:6000,
捕获超时:6000,
browserDisconnectTimeout:6000,
浏览器断开连接容差:1,
自定义启动器:{
铬铅浮渣:{
碱:“无铬”,
旗帜:[
“无头”,
“--禁用gpu”,
“没有沙箱”,
“--没有代理服务器”,
“--禁用web安全”
]
}
}, 
浏览器:['ChromeHeadlessCustom'],
单次运行:错误
});
};
  • 我的Yaml文件
  • 有什么解决办法吗

当您在本地进行npm测试时,它是否有效? 我可以用pupeeter重现这个例子,它可以在本地工作,但不能在docker Gitlab CI上工作

  • gitlabci.yml
图像:节点:最新
在脚本之前:
#这是管道日志中的第96行
-pwd
-ls/usr
#-导出CHROME\u BIN=/usr/local/BIN/my CHROME build
阶段:
-建造
-试验
隐藏物:
路径:
-节点单元/
安装依赖项:
阶段:建造
脚本:
-npm安装
人工产品:
路径:
-节点单元/
测试(u)测试:
阶段:测试
脚本:npm测试--日志级别=调试
  • 业力形态
process.env.CHROME\u BIN=require('puppeter').executablePath()
module.exports=函数(配置){
config.set({
浏览器:['Chrome']
});
};
development-tests:
  image: node:8-alpine
  stage: tests
  tags: 
      - ci-cd
  environment: Development
  only:
  - master
  #dependencies:
  # - development-build

  script:

     - apk update && apk upgrade && \
     - echo @edge http://nl.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories && \
     - echo @edge http://nl.alpinelinux.org/alpine/edge/main >> /etc/apk/repositories && \
     #- apk add --no-cache bash chromium@edge nss@edge
     - apk add --no-cache g++ chromium 
     - export CHROME_BIN="/usr/bin/chromium-browser"
     - export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD="true"
     - export SASS_BINARY_NAME="linux-x64-67"
     - npm install --save-dev puppeteer karma-chrome-launcher
     - npm i puppeteer
     - npm install
     - npm run test