【问题标题】:why my bash function does not work in Jenkinsfil为什么我的 bash 函数在 Jenkinsfile 中不起作用
【发布时间】:2020-04-04 15:37:14
【问题描述】:

我写了这个函数

def docker_images(image_name,image_tag){

def curl_image_exists_status_code =

    curl_image_exists_status_code=sh (
    script:""" docker login -u XXXXX -p $$$$$$  2> /dev/null 1>/dev/null
    docker pull XXXXX/'${image_name}':'${image_tag}' > /dev/null && echo "success" || echo 'failed' 
    """,  returnStdout: true)
    echo "${curl_image_exists_status_code}"
    return (curl_image_exists_status_code == 'success')?true: false
    }

但输出是

成功

最后一行返回false curl_image_exists_status_code 的输出应该是成功的,最后一行应该返回 true 但为什么它不起作用?

【问题讨论】:

  • 你在哪里打印docker_images 的返回到标准输出?我看不到null 会打印在哪里。

标签: docker jenkins kubernetes continuous-integration jenkins-pipeline


【解决方案1】:

您需要将 .trim() 添加到 sh 的输出中,如下所示:

def docker_images(image_name,image_tag){

   def curl_image_exists_status_code =

      curl_image_exists_status_code=sh (
      script:""" docker login -u XXXXX -p $$$$$$  2> /dev/null 1>/dev/null
      docker pull XXXXX/'${image_name}':'${image_tag}' > /dev/null && echo "success" || echo 'failed' 
    """,  returnStdout: true).trim() //this will make your output trimmed
      echo "${curl_image_exists_status_code}"
      return (curl_image_exists_status_code == 'success')?true: false
    }

【讨论】:

  • 修剪基本上是去除任何空格并在单词或句子之前和之后输入。这将使“hello world”变为“hello world”,或“hi man”变为“hi man”。所以它会删除前后的空格,而不是中间的空格
【解决方案2】:

试试

def docker_images(image_name,image_tag){

def curl_image_exists_status_code=sh (
    script:""" docker login -u XXXXX -p $$$$$$  2> /dev/null 1>/dev/null
    docker pull XXXXX/'${image_name}':'${image_tag}' > /dev/null && echo "success" || echo 'failed' 
    """,  returnStdout: true)
    echo "${curl_image_exists_status_code}"
    return (curl_image_exists_status_code == 'success')?true: false
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-06
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 2021-12-18
    • 2011-06-23
    • 1970-01-01
    相关资源
    最近更新 更多