Когда я запускаю приведенную ниже настройку с Docker локально на моем mac, все работает нормально.
Но такая же настройка не работает на Jenkins, работающем на Ubuntu 16.04
ChromiumHeadless не захватили в 60000 мс, убив.
После журнала ошибок из консоли Jenkins:
25 05 2018 06:35:09.076:INFO [karma]: Karma v2.0.2 server started at http://0.0.0.0:9222/
25 05 2018 06:35:09.079:INFO [launcher]: Launching browser Chromium_no_sandbox with unlimited concurrency
25 05 2018 06:35:09.090:INFO [launcher]: Starting browser ChromiumHeadless
25 05 2018 06:36:09.128:WARN [launcher]: ChromiumHeadless have not captured in 60000 ms, killing.
25 05 2018 06:36:09.139:INFO [launcher]: Trying to start ChromiumHeadless again (1/2).
25 05 2018 06:37:09.140:WARN [launcher]: ChromiumHeadless have not captured in 60000 ms, killing.
25 05 2018 06:37:09.147:INFO [launcher]: Trying to start ChromiumHeadless again (2/2).
Package.json... "testProd": "./node_modules/karma/bin/karma start karma.conf-prod.js --single-run",
Dockerfile
FROM zenika/alpine-node:latest
LABEL name="product-web"
# Update apk repositories
RUN echo "http://dl-2.alpinelinux.org/alpine/edge/main" > /etc/apk/repositories
RUN echo "http://dl-2.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories
RUN echo "http://dl-2.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
# Install chromium
RUN apk -U --no-cache \
--allow-untrusted add \
zlib-dev \
chromium \
xvfb \
wait4ports \
xorg-server \
dbus \
ttf-freefont \
mesa-dri-swrast \
grep \
udev \
&& apk del --purge --force linux-headers binutils-gold gnupg zlib-dev libc-utils \
&& rm -rf /var/lib/apt/lists/* \
/var/cache/apk/* \
/usr/share/man \
/tmp/* \
/usr/lib/node_modules/npm/man \
/usr/lib/node_modules/npm/doc \
/usr/lib/node_modules/npm/html \
/usr/lib/node_modules/npm/scripts
WORKDIR /home/dev/code
COPY . .
#RUN rm -rf node_modules && npm cache clear --force
ENV CHROME_BIN=/usr/bin/chromium-browser
ENV CHROME_PATH=/usr/lib/chromium/
RUN npm install
RUN npm run testProd && npm run buildProd
karma.conf-prod.js
const path = require('path');
module.exports = function(config) {
config.set({
basePath: '',
browsers: ['ChromeHeadlessNoSandbox'],
customLaunchers: {
ChromeHeadlessNoSandbox: {
base: 'ChromeHeadless',
flags: [
'--no-sandbox',
'--user-data-dir=/tmp/chrome-test-profile',
'--disable-web-security'
]
}
},
frameworks: ['mocha', 'chai'],
captureConsole: true,
files: [
'node_modules/babel-polyfill/dist/polyfill.js',
'test/root.js'
],
preprocessors: {
'src/index.js': ['webpack', 'sourcemap'],
'test/root.js': ['webpack']
},
webpack: {
devtool: 'inline-source-map',
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel-loader',
exclude: path.resolve(__dirname, 'node_modules'),
query: {
plugins: ['transform-decorators-legacy', 'transform-regenerator'],
presets: ['env', 'stage-1', 'react']
}
},
{
test: /\.json$/,
loader: 'json-loader',
},
]
},
externals: {
'react/addons': true,
'react/lib/ExecutionEnvironment': true,
'react/lib/ReactContext': true
}
},
webpackServer: {
noInfo: true
},
reporters: ['spec'],
port: 9222,
logLevel: config.LOG_INFO
});
};
Я даже пробовал с logLevel: config.LOG_DEBUG
но не показывал ничего отсутствующего или необычного.