AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 922352
Accepted
Husk Rekoms
Husk Rekoms
Asked: 2018-07-18 11:10:11 +0800 CST2018-07-18 11:10:11 +0800 CST 2018-07-18 11:10:11 +0800 CST

詹金斯构建发生在主人而不是奴隶上

  • 772

我一直在通过 Jenkins 进行 android OS 构建自动化,并且存储库很大,构建本身需要相当长的时间。因此,我需要在我的从属服务器上运行,它有更多的能力和可用于构建的线程,而不是将主服务器磁盘空间填满到其他开发人员无法使用它的程度。

当我将第一个构建生成部署到主服务器时,我检查了配置并查看了 Jenkins 的最佳实践。

https://wiki.jenkins.io/display/JENKINS/Jenkins+Best+Practices

如果您有更复杂的安全设置,允许某些用户仅配置作业,但不能管理 Jenkins,您需要阻止他们在主节点上运行构建,否则他们可以不受限制地访问 JENKINS_HOME 目录。您可以通过将执行程序计数设置为零来做到这一点。相反,请确保所有作业都在从属设备上运行。这确保了 jenkins master 可以扩展以支持更多的作业,并且它还可以防止构建意外/恶意地修改 $JENKINS_HOME 上的潜在敏感数据。如果您需要在主服务器上运行一些作业(例如 Jenkins 本身的备份),请使用作业限制插件来限制可以在那里执行的作业。

我注意到我们在 master 上有两个可用的 executor,根据最佳实践,如果你不想在 master 上构建,这应该设置为零。我将其设置为零并重试了我的构建。

主服务器执行器

令我惊讶的是,它仍然建立在主人身上。下面是我的 Jenkins 文件,它暗示要建立在我的奴隶上。

pipeline {
    agent {label 'van-droid'}

    stages {
        stage('Build') {
            steps {
        echo 'Building..'
        sh 'make clean'
        sh 'export USE_CCACHE=1'
        sh 'export CCACHE_DIR=/nvme/.ccache'
        sh './FFTools/make.sh'
             }
        }
    }
}

有人知道发生了什么吗?

jenkins
  • 3 3 个回答
  • 14633 Views

3 个回答

  • Voted
  1. Best Answer
    Husk Rekoms
    2018-07-21T11:02:58+08:002018-07-21T11:02:58+08:00

    好的,所以我能够强制构建到从站的唯一方法是安装节点/标签插件并添加一个参数,说明该项目只能在我请求的特定从站上构建。这似乎是一种更好的方法,因为一些开发人员实际上是在使用 master 来构建某些项目,并且当我将 executors 设置为零时,他们的构建处于挂起状态。

    • 2
  2. Manuel Domínguez Dorado
    2019-07-24T02:13:10+08:002019-07-24T02:13:10+08:00

    你也可以试试

    agent {label '!master'}
    

    这应该避免在主节点中执行作业(通过您分配给主节点的标签更改主节点)。

    • 2
  3. Steven the Easily Amused
    2019-09-01T22:24:18+08:002019-09-01T22:24:18+08:00

    “令我惊讶的是,它仍然建立在大师之上。”

    所有管道构建在主服务器中作为“Flyweight”执行器运行。管道构建实际上是从它们出列的那一刻开始的。

    主执行器和享元执行器上的实际执行

    注意显示的细微差别。

    在此处显示的示例中,Master 有 4 个执行器,它们被编号,并且两个作业实际上在 Master 上运行。另外两个(为清楚起见以黄色突出显示)是“Flyweights” - 也称为 OneOffExecutors,它们会出现一段时间,直到它们被派往其他地方,但它们确实在工作期间运行。您可以使用如下查询查看主服务器上正在运行的内容作为 OneOff 的:

    https://YOUR.JENKINS.URL/computer/(master)/api/python?pretty=true&tree=oneOffExecutors[currentExecutable[fullDisplayName,result,id,url]]&depth=1

    您不必使用 python 渲染,但它比 XML 更容易阅读。

    Flyweight 或“OneOffExecutors”是 master 跟踪和协调管道作业的方式。您可以在上面共享的链接中阅读有关它们的更多信息。

    • 2

相关问题

  • 允许非 root 用户重新启动服务

  • Jenkins Slave 在构建期间离线

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve