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

问题描述 投票:0回答:1

[[在jenkins中构建大型项目的标准是什么(例如,从一个回购中构建库和二进制文件的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代理?

如果您在詹金斯主机上构建库,那么.o和二进制文件是否应归詹金斯所有?

如果您在专用的jenkins主服务器上进行构建,应该将执行者设置为代理以使用build用户而不是jenkins用户吗?

如果使用NFS类型的安装来共享构建工件,看起来如何?

与前面两个问题有关-所有本地工作都将在jenkins用户的帮助下建立所有权。因此,这是否意味着您使用一个构建用户,并使用远程节点作为构建用户使用localhost,只是为了使所有工件都具有同一用户供所有本地和远程代理使用?[这些听起来可能是愚蠢的问题,但我找不到关于谁应该是构建所有者或以明智的方式制作非常大的单个git repo项目构建的最佳实践的任何准则

(repo所有者不想由于静态链接,将代码分为不同的存储库)。

jenkins build jenkins-pipeline remote-access
1个回答
0
投票
根据我们的经验(超大型monorepo,250多名奴隶):

  1. 我们将多个作业合并为一个大作业,并在适用的情况下采用并行的阶段,因此可以在不同的从属服务器上同时构建独立的对象(以节省时间)。因此,更容易跟踪失败的原因和原因,并且将所有工件都放在一个位置,并且要遵循一个Jenkinsfile
  2. 我们所有的从属都设置为JLNP,并且当它们重新启动时,它们会启动jenkins-agent。我们的奴隶上没有jenkins用户。
  3. 由于您应该选择所有工件并最终进行归档,最好将从属设备清理为零状态,谁拥有该设备都没关系,您可以始终使用chown对其进行更改。 >

  4. 对于我们来说,NFS并不是一个好主意,因为它会受到网络和磁盘使用的严重限制。我们将Docker注册表用于Docker映像,但是如果您不使用Docker,Artifactory可能会起作用。 minio是另一种选择。
© www.soinside.com 2019 - 2024. All rights reserved.