Трэвис: ш: 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 запуск

sh: 0: Не могу открыть /etc/init.d/xvfb

Команда sh -e /etc/init.d/xvfb start не удалась и завершилась с ошибкой 127 во время .


person Francesco Borzi    schedule 14.04.2019    source источник


Ответы (2)


Решение состояло в том, чтобы удалить 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
person Francesco Borzi    schedule 14.04.2019
comment
Да просто забыл это сделать. Спасибо - person Francesco Borzi; 21.09.2019

В дополнение к принятому ответу я бы сказал, что конфигурация результата должна быть немного яснее в соответствии с документами travis Использование xvfb для запуска тестов, требующих графического интерфейса. Вам не нужно устанавливать DISPLAY, поэтому раздел before_script становится лишним:

Это работает только в Ubuntu 16.04 (Xenial) и более поздних версиях, например, с dist: xenial или dist: bionic
Следующее запустит xvfb и установит правильные значения для переменной среды DISPLAY...

Также вам не нужно указывать dist в 2019 году для node_js, потому что xenial теперь является изображением по умолчанию для node_js языка (сообщение в блоге). Ранее это было trusty, поэтому другим возможным решением может быть указание расстояния как 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
person dhilt    schedule 16.08.2019