buildingTag () всегда возвращает false - PullRequest
0 голосов
/ 07 мая 2019

Всякий раз, когда я пытаюсь создать условный этап с помощью buildingTag (), этап всегда пропускается, даже если текущий коммит является тегом.Вот мой Jenkinsfile:

pipeline {
  agent {
    docker {
      image 'node:10'
    }

  }
  stages {
    stage('Build') {
      steps {
        sh 'yarn install'
        sh 'node scripts/build.js'
      }
    }
    stage('Lint') {
      steps {
        sh 'yarn lint'
      }
    }
    stage('Deploy') {
      when {
        buildingTag()
      }
      environment {
      }
      steps {
        sh 'node scripts/deploy.js'
        sh 'node scripts/publish.js'
      }
    }
  }
}

1 Ответ

0 голосов
/ 09 июля 2019

Вероятно, из-за этой ошибки:

https://issues.jenkins -ci.org / просмотр / JENKINS-55987

Обходной путь:

            when {
                expression {
                    return !isVersionTag(readCurrentTag())           
                }
            }

с:

def boolean isVersionTag(String tag) {
    echo "checking version tag $tag"

    if (tag == null) {
        return false
    }

    // use your preferred pattern
    def tagMatcher = tag =~ /\d+\.\d+\.\d+/

    return tagMatcher.matches()
}

// workaround https://issues.jenkins-ci.org/browse/JENKINS-55987
def String readCurrentTag() {

    return sh(returnStdout: true, script: "git describe --tags").trim()           
}


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...