web-dev-qa-db-ja.com

travis:sh:0:/etc/init.d/xvfbを開けません

私のトラビス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で終了しました。

18
Francesco Borzi

解決策は、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
31
Francesco Borzi

受け入れられた回答に加えて、travisのドキュメント xvfbを使用してGUIを必要とするテストを実行する に従って、結果の構成は少し明確になるはずです。 DISPLAYを設定する必要がないため、before_scriptセクションは過剰になります。

これはUbuntu 16.04(Xenial)以降のリリース、つまりdist:xenialまたはdist:bionicでのみ機能します
以下はxvfbを起動し、DISPLAY環境変数に正しい値を設定します...

また、xenialnode_js言語のデフォルトのイメージになっているため、2019年にnode_jsにdistを指定する必要はありません( 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
5
dhilt