0

目前在尝试匹配来自 git ls-remote 的结果时遇到问题。目前正在测试是否存在一个 repo,但是在测试期间我有 6 个 repo 来测试一个不存在的 repo。但是在运行代码时, git ls-remote 报告找不到不存在的 repo,但该函数仍被视为 true。

我已经尝试了很多东西,包括将模式和 git ls-remote 的输出设置为小写。以及修剪两个结果。以前我在脚本末尾没有“|| true”,但是当它没有找到一个 repo 时,它在到达 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
        }
    }
}

如果在 git ls-remote 的输出中发现“未找到”,则预期的输出是返回 false。

4

1 回答 1

0

这是一个简单的。使用 jenkinssh()调用时,您可以定义returnStdout但不能StderrorStderror刚刚打印到日志而不是传递给变量那样定义。

于 2019-10-03T10:44:37.943 回答