我目前正在使用Cloudbees Jenkins Core作为我的詹金斯解决方案。
我正在使用Jenkins Pipelines来编写我们的Jenkins作业配置。这些管道存储在GitHub存储库中。创建后,每个Jenkins作业都连接到GitHub Repository,从中提取源代码,这就是Jenkinsfile的存储和Jenkins的读取位置。
下面是一些有关如何配置Jenkins作业的高级照片。
配置这些作业的方式的优势在于,总是从master分支读取Jenkinsfile
。这意味着,如果胭脂开发人员尝试从自己分支中的Jenkinsfile
中删除阶段,则没关系,因为Jenkinsfile
总是从master分支(始终受保护)中读取。
然而,此问题的一个大规模缺点是-开发团队的工程团队和开发人员如何更改Jenkinsfile
?例如,假设开发人员创建了一个名为feature-jenkins-search
的分支,然后他们编辑Jenkinsfile在管道中添加了一个新阶段。每当他们将这些更改推送到GitHub进行测试时,由于总是从master分支读取它们,因此它们无法进行测试吗?意味着devops工程必须直接在master分支上工作? 当然,这不是最好的方法,并且需要设置更好的配置吗?
我们仍然希望提供安全性,以确保开发人员能够避开
答案 0 :(得分:0)
您应该真正研究Jenkins multi-branch pipeline功能。 Jenkins多分支管道允许在Jenkins中创建一个配置项(有点像一个文件夹),该配置项可以检测所有分支并使用Jenkinsfile在GitHub存储库中提取请求,并使用自动创建的作业来构建它们。在Jenkins中配置该多分支管道对象后,您将在GitHub存储库中找到许多工作来构建各种分支和请求请求。
因此,您的开发人员应在GitHub上工作的每个分支中维护一个Jenkinsfile,以在您的Jenkins服务器中构建该分支。
如果条件阶段需要/当每个分支的Jenkinsfile管道中的条件需要时,可以使Jenkinsfile进行分支特定的处理。
您可以锁定master分支,以便其他分支的代码和Jenkinsfile更改只能与批准的PR(拉动请求)合并。 Jenkins与GitHub之间有很好的集成,因此您可以将master分支配置为仅在PR可在Jenkins中构建时才允许PR合并。因此,如果开发人员在要合并到master的分支上向Jenkinsfile添加新的阶段/处理,则应对其进行验证,以免破坏master分支的构建。
Jenkins多分支管道对象中有很多可配置性,用于检测和处理分支,可能有必要进行实验以使其完全适合您团队的需求。如果您在Jenkins中找不到此功能,则可能是因为未安装正确的Jenkins管道和与GitHub相关的插件。
您还可以查看类似的Jenkins功能,称为Jenkins GitHub Organization Folder,该功能允许在GitHub Organization级别检测并构建所有存储库和分支。但是,从入门开始,我建议您首先在单回购级别研究多分支管道。
这些功能在Jenkins pipeline documentation中进行了讨论。我们在内部GitHub和Jenkins服务器上使用了这些功能,并且效果很好。
我想您会发现,如您所见,在master分支中使用单个Jenkinsfile来构建所有分支的想法是行不通的!