【问题标题】:Travis sudo is disabledTravis sudo 已禁用
【发布时间】:2018-11-17 07:42:48
【问题描述】:

我想使用apt 来安装一些软件包进行测试,但是由于禁用了sudo,它失败了。我在测试输出中发现了以下内容:

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

输出似乎来自this line in travic-ci,但在.travis.yml 中将paranoid_mode 设置为false 不起作用。

如何启用 sudo 访问?

PS:我正在使用私人仓库。

编辑:运行sudo apt-get update -qq 时,由于sudo: must be setuid root,以下.travis.yml 将失败

language: python
python:
  - "3.4"

before_install:
  - sudo apt-get update -qq

script:
  - nosetests

设置sudo: true 和/或paranoid_mode: false 不起作用。

【问题讨论】:

标签: travis-ci


【解决方案1】:

在我们基于 Docker 的架构上关闭了 Sudo 访问,这将在两种情况下使用:

  • 存储库选择在其 .travis.yml 文件中使用 sudo: false(我们还需要启用它)
  • 关于我们的教育计划(请参阅http://education.travis-ci.com

由于 LXC/Docker 层的某些安全问题,目前不允许在我们基于 Docker 的架构上运行的构建进行 sudo 访问。我们希望这个问题能在不久的将来得到解决,但不幸的是,这个问题不是我们自己能解决的。

我们也在努力改进 Firefox 插件,它目前使用 sudo 本身,但不应该。一旦发生这种情况,我们将在我们的博客上发布。

【讨论】:

  • 这很可悲,所以我们学生用户已经成为某种 Beta 测试员。如果您可以将此注释放在文档页面的某个位置,那就太好了。我需要很长时间才能找出问题所在。
  • 对令人困惑的消息感到抱歉。我们的教育计划的登录页面上提到了此限制。请参阅education.travis-ci.com 我们将考虑将其添加到我们的文档页面中,并将其作为构建日志输出的一部分更好地传达。
  • 别担心,他们在这件事上一败涂地。现在需要sudo。 -- blog.travis-ci.com/…
【解决方案2】:

要扩展现有答案,如果您输入 .travis.yml:

sudo: required

Travis 应该将您的构建切换为使用他们的“标准基础架构”(而不是他们的“基于容器的基础架构”),然后您可以使用 sudo。

参考文献:

2018 年 11 月更新

基于容器的基础架构似乎正在被弃用。来自docs

目前正在弃用基于容器的基础架构。请 通过 sudo 使用完全虚拟化的基础设施:需要 而是。

【讨论】:

    【解决方案3】:

    如“Combining The Linux Infrastructures”中所述

    展望未来,我们将逐步退出基于容器的环境,转而支持完全基于虚拟机的构建环境。

    使用基于容器的基础架构的人将是唯一受影响的人,并且此过渡将缓慢推出,具体取决于您是否在 .travis.yml 中指定 sudo: false

    这在 Git 2.20(2018 年第四季度)中有说明,其中:

    Travis CI 将很快弃用由ce59dff 中的sudo: false 启用的基于容器的基础架构(Git 2.8.0,2016 年 1 月)。

    参见SZEDER Gábor (szeder)commit 0f0c511(2018 年 11 月 1 日)。
    (由 Junio C Hamano -- gitster -- 合并于 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))都在同一个文件中处理。

    仅在“linux-gcc”构建作业中安装gcc-8;到目前为止,它也不必要地安装在“linux-clang”构建作业中。
    有条件地打印 P4 和 Git-LFS 的版本,即仅在它们已安装时打印;通过此更改,甚至静态分析和文档构建作业也开始使用“ci/install-dependencies.sh” 安装软件包,这两个构建作业都不依赖于和 因此安装这些。

    此更改可能有利于即将推出的 Azure Pipelines integration 该补丁系列的初步版本在运行“ci/install-dependencies.sh”之前运行几个“apt-get”命令来安装必要的软件包,但有了这个补丁,只运行“ci/install-dependencies.sh”就足够了。

    【讨论】:

      猜你喜欢
      • 2015-12-22
      • 2014-10-24
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-13
      相关资源
      最近更新 更多