travis: sh: 0: не могу открыть /etc/init.d/xvfb
Мой travis CI использует Ubuntu 14.04 и Node.js 8. Мой .travis.yml
выглядит так:
language: node_js
node_js:
- 8
sudo: required
addons:
chrome: stable
before_script:
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
install:
- npm set progress=false
- npm install
script:
- ng lint
- npm run test
- npm run e2e
- npm run build
Я попытался обновить его, чтобы использовать Ubuntu 16.04 и Node.js 10, изменив его на:
language: node_js
node_js:
- '10'
dist: xenial
sudo: required
addons:
chrome: stable
before_script:
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
install:
- npm set progress=false
- npm install
script:
- ng lint
- npm run test
- npm run e2e
- npm run build
Однако теперь я получаю сообщение об ошибке при попытке запустить xvfb
:
0,00s $ sh -e/etc/init.d/xvfb start
sh: 0: не могу открыть /etc/init.d/xvfb
Команда "sh -e/etc/init.d/xvfb start" завершилась неудачно и завершилась с 127 во время.
Ответы
Ответ 1
Решением было удалить sh -e/etc/init.d/xvfb start
из массива before_script
и просто ввести xvfb
в массив services
.
Итак, мой .travis.yml
теперь выглядит так:
language: node_js
node_js:
- '10'
dist: xenial
sudo: required
services:
- xvfb
addons:
chrome: stable
before_script:
- export DISPLAY=:99.0
install:
- npm set progress=false
- npm install
script:
- ng lint
- npm run test
- npm run e2e
- npm run build
Ответ 2
В дополнение к принятому ответу я бы сказал, что конфиг результата должен быть немного более понятным в соответствии с документами travis Использование xvfb для запуска тестов, требующих графического интерфейса. Вам не нужно устанавливать DISPLAY
, поэтому раздел before_script
становится чрезмерным:
Это работает только в Ubuntu 16.04 (Xenial) и более поздних выпусках, то есть с dist: xenial или dist: bionic
Следующее запустит xvfb и установит правильные значения для переменной среды DISPLAY...
Также вам не нужно указывать dist в 2019 году для node_js, потому что xenial
теперь является изображением по умолчанию для языка node_js
(blogpost). Ранее это был trusty
, поэтому другим возможным решением было бы указать dist как trusty
(см. doc). Но если говорить о дефолте, обсуждаемый конфиг может выглядеть как
language: node_js
node_js:
- '10'
sudo: required
services:
- xvfb
addons:
chrome: stable
install:
- npm set progress=false
- npm install
script:
- ng lint
- npm run test
- npm run e2e
- npm run build