降低Jenkinsfile的缩进级别

时间:2018-09-19 02:09:20

标签: jenkins jenkins-pipeline

我正在尝试将Jenkins脚本化管道用于我们的项目。 但是我发现丑陋的代码使很多缩进。

例如:

throttle('xxx') {
  node('yyy') {
    try {
      stage('build') {
        withEnv(['aaa=bbb']) {
          if (foo == bar) {
            dir('/my/dir') {
               echo 'Building project'
            }
          }
        }
      }
    } catch (Exception e) {
      ...
    }
  }
}

如果我使用更多if或closure或其他语句,则缩进级别会更深。有什么办法可以减少它?

谢谢

2 个答案:

答案 0 :(得分:0)

与其他语言一样,如果压痕级别变得太深,请尝试提取 一些代码作为函数。

对于该示例,我可以将构建阶段提取为一个函数:

throttle('xxx') {
  node('yyy') {
    try {
      stage('build') {
        build()
      }
    } catch (Exception e) {
      ...
    }
  }
}

def build() {
  withEnv(['aaa=bbb']) {
    if (foo == bar) {
      dir('/my/dir') {
        echo 'Building project'
      }
    }
  }
}

答案 1 :(得分:0)

您可以使用Declarative Pipeline syntax。我认为这是更好的可读性和更丑陋的方式。这是尝试

pipline {
    agent any

    envrionment {
        aaa = "bbb"
    }

    stage("build") {
        when { expression { foo == bar } }
        steps {
            throttle('xxx') {
                dir('/my/dir') {
                    echo 'Building project'
                }
            }
        }
        post {
            failure {
                //...
            }
        }
    }
}

但是我必须承认,缩进仍然很多。

相关问题