在执行 Jenkinsfile 之前执行代码
Execute code prior to execution of the Jenkinsfile
我们在 git 存储库中使用 Jenkinsfile
s 来定义 Jenkins CI 应该如何执行。
是否可以在执行存储库 Jenkinsfile
定义的管道之前注入一些代码、步骤等?有时我们需要在 运行 管道之前添加一些步骤。
正在执行 Maven 作业的示例:
Jenkins 文件包含克隆、构建、测试、安装步骤
因此,运行宁管道作业将创建具有以下步骤的管道:
cloneFromGit->buildMvn->testMvn->installMvn
但是,我们需要确保所有构建工件(jar 等)都进入我们的工件存储库。我们需要的是 update/change Jenkinsfile 添加额外步骤的能力。使用上面的例子我们需要能够让管道运行这些步骤:
cloneFromGit->buildMvn->testMvn->installMvn->pushToArtifactRepository
intrusive/easy 方法是将 pushToArifactRepository
步骤添加到所有 Jenkinsfiles,但是我们确实(也不想)控制任何给定 Jenkinsfile
的内容。
我可以推荐使用Jenkins Workflow Global Library。在这里,您可以定义在不同管道作业之间共享的功能。然而,这需要每个 Jenkinsfile
主动调用那个 "post build" 任务。该任务的实际实现可以隐藏在全局库中,因此 Jenkinsfile
可以非常简单。
在我使用的示例中,我的 Jenkinsfile
仅触发管道执行,如下所示:
def pipe = new org.typo3.chefci.v1.Pipeline()
pipe.execute()
实际实现在central repository。
我们在 git 存储库中使用 Jenkinsfile
s 来定义 Jenkins CI 应该如何执行。
是否可以在执行存储库 Jenkinsfile
定义的管道之前注入一些代码、步骤等?有时我们需要在 运行 管道之前添加一些步骤。
正在执行 Maven 作业的示例: Jenkins 文件包含克隆、构建、测试、安装步骤 因此,运行宁管道作业将创建具有以下步骤的管道:
cloneFromGit->buildMvn->testMvn->installMvn
但是,我们需要确保所有构建工件(jar 等)都进入我们的工件存储库。我们需要的是 update/change Jenkinsfile 添加额外步骤的能力。使用上面的例子我们需要能够让管道运行这些步骤:
cloneFromGit->buildMvn->testMvn->installMvn->pushToArtifactRepository
intrusive/easy 方法是将 pushToArifactRepository
步骤添加到所有 Jenkinsfiles,但是我们确实(也不想)控制任何给定 Jenkinsfile
的内容。
我可以推荐使用Jenkins Workflow Global Library。在这里,您可以定义在不同管道作业之间共享的功能。然而,这需要每个 Jenkinsfile
主动调用那个 "post build" 任务。该任务的实际实现可以隐藏在全局库中,因此 Jenkinsfile
可以非常简单。
在我使用的示例中,我的 Jenkinsfile
仅触发管道执行,如下所示:
def pipe = new org.typo3.chefci.v1.Pipeline()
pipe.execute()
实际实现在central repository。