【问题标题】:Return result of python script in Jenkins pipelineJenkins管道中python脚本的返回结果
【发布时间】:2021-12-08 14:43:24
【问题描述】:

我有一个 jenkins 管道,其中有 2 个阶段:

pipelien {
  agent {label 'master'}
  stages ('stage 1') {
    stage {
      steps {
        sh "python3 script.py" //this script returns value {"status": "ok"}
      }
    }
    stage ('stage 2') {
      // Do something with the response JSON from script.py
    }
  }
}

问题是我做不到。我有什么尝试:

  1. 将结果传递给环境变量,但由于某种原因 Jenkins 无法识别它。也许我在这里做错了什么?
  2. 播放 script.py 的解析标准输出不是一个选项,因为此脚本会打印大量日志

剩下的唯一选择是创建一个文件来存储该 JSON,然后在下一步中读取该文件,但这很丑。

有什么想法吗?

【问题讨论】:

  • 您可能应该将 Python 脚本重构为 Jenkins Pipeline 原生实现的东西。
  • 你的意思是使用 Groovy 吗?不幸的是,这不是一个选项,因为我们在 JVM(特定服务的 SDK)中没有这样的库
  • @Aladin 为什么考虑将结果写入文件然后读取它是一个丑陋的解决方案?这是一种通用方法,可用于多种用途。
  • 好吧,我花了一些时间才意识到这可能是我们唯一的“干净”解决方案,因为我们在这里讨论的是不同的流程。

标签: python shell jenkins jenkins-pipeline pipeline


【解决方案1】:

最后我们选择创建文件并将消息存储在那里。 我们将文件名作为参数传递给 python 脚本并记录所有内容。 然后我们在作业成功后删除所有工作区。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2021-06-05
    • 2018-11-10
    • 1970-01-01
    相关资源
    最近更新 更多