web-dev-qa-db-ja.com

TravisSudoが無効になっています

aptを使用してテスト用のパッケージをいくつかインストールしたいのですが、Sudoが無効になっているため失敗します。テスト出力で次のことがわかりました。

Sudo, the FireFox addon, setuid and setgid have been disabled.

出力は travic-ciのこの行 からのもののようですが、paranoid_mode.travis.ymlをfalseに設定しても機能しません。

Sudoアクセスを有効にする方法は?

PS:私はプライベートリポジトリを使用しています。

編集:次の.travis.ymlは、Sudo: must be setuid rootの実行時にSudo apt-get update -qqが原因で失敗します

language: python
python:
  - "3.4"

before_install:
  - Sudo apt-get update -qq

script:
  - nosetests

Sudo: trueおよび/またはparanoid_mode: falseの設定は機能しません。

21
Chunliang Lyu

DockerベースのアーキテクチャではSudoアクセスがオフになっています。これは、次の2つのコンテキストで使用されます。

  • リポジトリは、.travis.ymlファイルでSudo: falseを使用することを選択します(さらに、私たちの側でオンにする必要があります)
  • 私たちの教育プログラムについて( http://education.travis-ci.com を参照)

現在、Dockerベースのアーキテクチャで実行されているビルドは、LXC/Dockerレイヤーの特定のセキュリティ上の懸念により、Sudoアクセスを許可できません。これが近い将来修正されることを願っていますが、残念ながらこの問題は私たちの手に負えません。

また、現在Sudo自体を使用しているFirefoxアドオンの改善にも取り組んでいますが、使用すべきではありません。これが発生したら、ブログに投稿します。

24
Sven Fuchs

既存の回答を拡張するには、.travis.ymlを入力した場合:

Sudo: required

Travisは、(「コンテナベースのインフラストラクチャ」ではなく)「標準インフラストラクチャ」を使用するようにビルドを切り替える必要があります。そうすれば、Sudoを使用できます。

参照:

2018年11月の更新

コンテナベースのインフラストラクチャは非推奨になりつつあるようです。 docs から:

コンテナベースのインフラストラクチャは現在非推奨です。代わりに、Sudo:requiredを介して完全に仮想化されたインフラストラクチャを使用してください。

16
Rob Bygrave

Linuxインフラストラクチャの組み合わせ "」で説明されているように

今後は、完全に仮想マシンベースのビルド環境を優先して、コンテナベースの環境を徐々に移行していきます。

影響を受けるのはコンテナベースのインフラストラクチャを使用している人だけであり、Sudo: false.travis.ymlを指定するかどうかに応じて、この移行はゆっくりと展開されます。

これはGit2.20(2018年第4四半期)に示されています。

Travis CIは、 ce59dff (Git 2.8.0、2016年1月)でSudo: falseによって有効化されたコンテナーベースのインフラストラクチャを間もなく非推奨にします。

commit 0f0c511 (01 Nov 2018)by SZEDERGábor(szeder を参照してください。
(合併 Junio C Hamano --gitster- in commit 57f06d5 、2018年11月13日)

travis-ci:「ci /install-dependencies.sh」にパッケージをインストールします

Travis CIの使用を開始して以来、APTアドオンを介して、「.travis.yml」にインストールするパッケージのリストを指定しました。

Travis CIのコンテナベースのインフラストラクチャでビルドを実行している間、その環境は「Sudo」をサポートしていなかったため、別の選択肢はありませんでした。そのため、パッケージを自分でインストールする権限がありませんでした。

以前のパッチでVMベースのインフラストラクチャに切り替えると、「Sudo」が機能するため、「Sudo apt-get -y install ...」を実行してパッケージをインストールすることもできます。

これを利用して、必要なパッケージを「ci/install-dependencies.sh」にインストールして、すべての依存関係(つまり、パッケージと「非パッケージ」(P4とGit-LFS)の両方)が同じファイルで処理されるようにします。

'gcc-8'ビルドジョブにのみlinux-gccをインストールします。これまでのところ、「linux-clang」ビルドジョブにも不必要にインストールされています。
P4とGit-LFSのバージョンを条件付きで、つまりインストールされている場合にのみ印刷します。この変更により、静的分析およびドキュメントのビルドジョブでさえ「ci/install-dependencies.sh」を使用してパッケージをインストールし始め、これら2つのビルドジョブはどちらもそれらに依存せず、したがってそれらをインストールしません。

この変更は、今後のAzure Pipelines統合のパッチシリーズの暫定バージョンで、いくつかの「apt-get」を実行する場合におそらく有益です。 'ci/install-dependencies.sh'を実行する前に必要なパッケージをインストールするコマンドですが、このパッチでは 'ci/install-dependencies.sh'のみを実行するだけで十分です。

0
VonC