繁体   English   中英

我应该使用构建用户还是 jenkins 用户来构建项目? 即谁应该拥有 jenkins 中的构建工件?

[英]Should I use a build user or jenkins user for building projects? ie who should own the build artifacts in jenkins?

在 jenkins 中构建大型项目的标准是什么(例如,从一个 repo 构建库和二进制文件的依赖工作的 80Gig)?
如果您将这个大型构建拆分为构建库和其他构建下游应用程序的作业,您应该使用 jenkins 用户来构建项目,还是设置一个单独的构建用户来构建项目?

如果您使用 SSH 转移到远程代理怎么办?
由于这里的/bin/false ,默认情况下不允许 jenkins 用户远程进入另一台主机:

$ grep jenkins /etc/passwd
   jenkins:x:996:992:Jenkins Automation Server:/var/lib/jenkins:/bin/false

那么这是否意味着所有农场作业都以构建用户身份运行,还是应该将此设置更改为/bin/sh以作为 jenkins 用户完成 ssh 会话? 还是只使用设置JNLP代理?

如果你在 jenkins master 上构建库,.o 和二进制文件是否应该作为 jenkins 拥有?
如果您建立在专用的 jenkins master 上,执行者是否应该是设置为使用 build 用户而不是 jenkins 用户的代理?

如果使用 NFS 类型挂载来共享构建工件,那看起来如何?
与前两个问题相关 - 所有本地工作都将在 jenkins 用户下建立所有权。 那么这是否意味着您使用构建用户并使用远程节点到本地主机作为构建用户只是为了使所有工件都具有相同的用户以供所有本地和远程代理使用?

这些可能听起来很愚蠢的问题,但我找不到任何关于谁应该成为构建所有者的指导方针,或者以理智的方式构建一个非常大的单个 git repo 项目的最佳实践是什么(repo 所有者不想拆分代码)由于静态链接进入不同的存储库)

根据我们的经验(非常大的 monorepo,250 多个奴隶):

  1. 我们将多个工作合并为一个大工作,在适用的情况下具有并行阶段,因此可以在不同的奴隶上同时构建独立的东西(以减少时间)。 因此,更容易跟踪失败的原因和原因,并且您将所有工件放在一个地方,并且有一个Jenkinsfile可以跟踪。

  2. 我们所有的奴隶都设置为 JLNP,当他们重新启动时,他们会启动 jenkins-agent。 我们的奴隶没有jenkins用户。

  3. 由于您应该选择所有工件并最终存档它们,最好将奴隶清除到零状态,因此谁拥有它并不重要,您可以随时使用chown更改它。

  4. 在我们这里,NFS 不是一个好主意,因为它会受到网络和磁盘使用的严重限制。 我们将 Docker 注册表用于 Docker 镜像,但如果您不使用 Docker,Artifactory 可能会工作。 minio 将是另一种选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM