有没有办法在保留阶段功能的同时模块化 Jenkinsfile?

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

我有一个巨大的 Jenkinsfile,我需要对其进行模块化以提高可维护性,所以我想做的是将构建、测试和部署单独到单独的文件中,但每个文件都有多个阶段,我不想失去显示每个阶段的功能在 Jenkins 上并轻松检查他们的错误。

示例:

 stages {
        stage('Clone') {}
        stage('Pre Build Clean') {}
        stage('Copy Requirements') {}
        stage('Build') {}
        }

我想将所有这些移至

build.groovy
并通过

调用它
stage('Build') {
    steps {
        script {
            build.buildApp()
        }
    }
}

同时保持对Jenkins的舞台看法。这可能吗或者有更好的方法吗?

jenkins groovy continuous-integration jenkins-pipeline jenkins-groovy
1个回答
0
投票

您可以通过将阶段代码托管在外部文件中来实现此目的。

// build.groovy


def buildStages() {
    return [
        stage('Build 1') {
            // Do not use steps directive here
            println 'Build 1'
        },
        stage('Build 2') {
            println 'Build 2'
        },
    ]
}

return this

您可以调用Jenkinsfile中添加的功能

pipeline {
    agent any
    stages {
        stage('Import lib'){
            steps {
                script {
                    buildLib = load 'jenkinsfiles/build.groovy'
                }
            }
        }
        stage('Build') {
            steps {
                script {
                    buildLib.buildStages()
                }
            }
        }
    }
}

请注意,将添加父阶段。它可能不适合您不维护舞台视图的需要。 阶段视图应该看起来像 enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.