2016-08-18 143 views
1

我们在git存储库中使用Jenkinsfile来定义Jenkins CI应该如何执行。在执行Jenkinsfile之前执行代码

在执行由存储库的Jenkinsfile定义的流水线之前是否可以注入一些代码,步骤等?有时我们需要在运行管道之前添加一些步骤。

一个例子是在执行一个行家的工作: 詹金斯文件包含的步骤克隆,构建,测试,安装 因此运行的管道工作将创建一个步骤管道:

cloneFromGit->buildMvn->testMvn->installMvn 

但是我们需要确保所有构建工件(罐子等)进入我们的工件存储库。我们需要的是能够更新/更改Jenkins文件以添加额外的步骤。使用我们需要能够在上面的例子有管道运行下列步骤操作:

cloneFromGit->buildMvn->testMvn->installMvn->pushToArtifactRepository 

侵入式/简单的方法是将pushToArifactRepository - 工序添加到所有的Jenkinsfiles,但是我们确实有(也不需要)控制任何给定的内容Jenkinsfile

回答

1

我可以推荐使用Jenkins Workflow Global Library。在这里,您可以定义不同管道作业之间共享的功能。但是,这需要每个Jenkinsfile都积极地调用“构建后”任务。该任务的实际执行可以隐藏在全局库中,因此Jenkinsfile可以非常简单。

在我使用的例子,我Jenkinsfile S作为仅遵循触发流水线执行:

def pipe = new org.typo3.chefci.v1.Pipeline() 
pipe.execute() 

实际的实现是在central repository

+0

这就是我的想法。我们目前正在使用全球图书馆选择“东西”。我们真的不希望在所有詹金斯文件中强加一个强制性的最后一步,但如果这是唯一的方法,那就这样做吧。 –

+0

我的意思是这个问题实际上并不是[标签:jenkins-pipeline]具体。有例如[全球邮政脚本插件](https://wiki.jenkins-ci.org/display/JENKINS/Global+Post+Script+Plugin)(从未亲自使用过),可以在每次构建后执行您的代码。不知道,如果它也适用于'WorkflowJob'。 – StephenKing

相关问题