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
の設定は機能しません。
DockerベースのアーキテクチャではSudoアクセスがオフになっています。これは、次の2つのコンテキストで使用されます。
Sudo: false
を使用することを選択します(さらに、私たちの側でオンにする必要があります)現在、Dockerベースのアーキテクチャで実行されているビルドは、LXC/Dockerレイヤーの特定のセキュリティ上の懸念により、Sudoアクセスを許可できません。これが近い将来修正されることを願っていますが、残念ながらこの問題は私たちの手に負えません。
また、現在Sudo自体を使用しているFirefoxアドオンの改善にも取り組んでいますが、使用すべきではありません。これが発生したら、ブログに投稿します。
既存の回答を拡張するには、.travis.ymlを入力した場合:
Sudo: required
Travisは、(「コンテナベースのインフラストラクチャ」ではなく)「標準インフラストラクチャ」を使用するようにビルドを切り替える必要があります。そうすれば、Sudoを使用できます。
参照:
https://docs.travis-ci.com/user/workers/standard-infrastructure
https://docs.travis-ci.com/user/workers/container-based-infrastructure/
コンテナベースのインフラストラクチャは非推奨になりつつあるようです。 docs から:
コンテナベースのインフラストラクチャは現在非推奨です。代わりに、Sudo:requiredを介して完全に仮想化されたインフラストラクチャを使用してください。
「 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
'のみを実行するだけで十分です。