Уменьшить уровни отступов Jenkinsfile - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь использовать сценарий 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 голосов
/ 19 сентября 2018

Вы можете использовать синтаксис декларативного конвейера .По моему мнению, это намного лучше читается и менее уродливо.Вот попытка

pipline {
    agent any

    envrionment {
        aaa = "bbb"
    }

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

Но я должен признать, что это все еще довольно много отступов.

0 голосов
/ 19 сентября 2018

Как и в других языках, если уровень отступа становится слишком глубоким, попробуйте извлечь некоторый код как функции.

Например, я могу извлечь этап сборки как функцию:

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'
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...