Общая библиотека Jenkins pipe - не может найти совпадение при использовании groovy .contains (git ls-remote) - PullRequest
0 голосов
/ 03 октября 2019

В настоящее время возникают проблемы с попыткой сопоставления результатов из git ls-remote. В настоящее время проверяется наличие репо, однако во время тестирования у меня есть 6 репо для тестирования, а один не существуетОднако при запуске кода git ls-remote сообщает, что несуществующее хранилище не найдено, но функция по-прежнему рассматривается как true.

Я пробовал довольно много вещей, включая установку шаблона и выводgit ls-remote в нижний регистр. А также обрезка обоих результатов. Раньше у меня не было «|| true» в конце скрипта, но когда он не нашел репозиторий, он не достигал оператора if.

def is_repository(repository_name)
{
    sshagent(['03876f99-2a9d-4980-b543-f8b478d4f1ec'])
    {
        String repository = sh( script: "git ls-remote git@bitbucket.org:<company_name>/${repository_name}.git || true", returnStdout: true)
        println(repository)
        String pattern = 'and the repository exists.'
        if(repository.contains(pattern))
        {
            println("Repository: " + repository_name + " not found")
            return false
        }
        else
        {
            println("Repository: " + repository_name + " found")
            return true
        }
    }
}

Ожидаемый результат - возвращение falseесли он находит «not found» в выводе git ls-remote.

1 Ответ

0 голосов
/ 03 октября 2019

Это простой. При использовании вызова jenkins sh() вы можете определить returnStdout, но не Stderror, поскольку Stderror просто выводится в журнал и не передается в переменную.

...