我们有很多很多项目,它们都有自己的Jenkinsfile,它只是执行我们共享库中定义的管道。管道确保所有项目以相同的方式构建、打包和安装。
Project-a/Jenkinsfile
library 'the-shared-library'
buildProject name: 'project-a', buildApi: true, ...
共享库/vars/buildProject。棒极了
def call(Map config) {
pipeline {
// standard stages go here
}
}
我们希望扩展它,以允许在管道期间执行一个额外的阶段,对于某些项目(例如许多项目中的一个)。如果可能的话,我想这样做:
buildProject
像这样的。。。
Project-a/Jenkinsfile
library 'the-shared-library'
def myCustomStage = ... // not sure how
buildProject name: 'project-a', buildApi: true, ..., customStage: myCustomStage
共享库/vars/buildProject。棒极了
def call(Map config) {
def customStage = config.customStage
pipeline {
// standard stages 1 through 3
// if customStage provided, it goes here
// standard stages 5 through 5
}
}
我不确定这里什么是正确的解决方案。
我还没有测试过,但是像这样的东西看起来应该可以工作:
//project-a/Jenkinsfile
library 'the-shared-library'
def myCustomStage = { echo 'Hello' }
buildProject name: 'project-a', buildApi: true, ..., myCustomStage
//the-shared-library/vars/buildProject.groovy
def call(Map config, Closure customStage=null) {
def customStage = config.customStage
pipeline {
// standard stages 1 through 3
// if customStage provided, it goes here
stage('Conditional'){
when{
expression { customStage }
}
steps { script {customStage()} }
// standard stages 5 through 5
}
}
请参见我可以使用闭包来定义詹金斯声明管道中的阶段吗?
现在我需要php-soap扩展,它不在上图中。如何在运行时安装它?或者是否有可能将整个docker配置放在我的管道配置中,whitout从GitHub中提取它?
问题内容: 仅在构建特定分支时,如何运行构建步骤/阶段? 例如,仅在调用分支的情况下才运行部署步骤,而其他所有都保持不变。 问题答案: 在声明性管道语法中执行相同的操作,以下是一些示例: 出现更有效的方法-https: //issues.jenkins- ci.org/browse/JENKINS-41187 另请 参阅- https://jenkins.io/doc/book/pipeline/
仅当构建特定分支时,如何运行构建步骤/阶段? 例如,仅当分支被称为时才运行部署步骤,其他操作保持不变。
我正在编写一个Groovy脚本,其中包含部署terraform的作业。我正在使用作业DSL并使种子作业由JCasC实现,一切正常。然后我有一个包含作业的Groovy文件的存储库。 如果我将Groovy文件保持为单个作业,它就可以正常工作。 然而,我希望能够构建具有构建阶段的管道。我知道我可以把管道写在詹金斯文件中 我有这个作为开始: 但是,我看到了这个错误: 我已经尝试了各种方法,并阅读了一堆文档
我正在尝试创建一个定制的Jenkins管道,它将多个Jenkins作业生成的工件绑定在一起。每个作业都在不同的存储库上运行(基于它们自己的文件)。这些Jenkins文件的阶段完成了创建档案、编译代码等任务。 有人可能会说,我可以使用单个作业中的工件,然后将它们绑定在一起,但问题是这个高级管道将在特定的 ,因此它无法凭空创建存档。 由于我是詹金斯管道公司的新手,您对如何解决这个问题有什么建议吗? 最
我正在使用詹金斯声明管道,不知道是否有任何方法可以定期触发特定阶段。 我的意思是,当我们签出SCM时,管道会触发,但阶段2对我们的一些项目来说太长了。因此,我不想等待这个阶段,我只想每天运行这个阶段,但仍然将这个阶段保存在Jenkins文件中。 有没有办法做到这一点?这样做的最佳方法是什么?