【问题标题】:Write key/value data through Jenkins API通过 Jenkins API 写入 key/value 数据
【发布时间】:2018-04-28 04:02:49
【问题描述】:

我已经将Jenkins API 用于构建管道中的某些任务。现在,有一项任务我想为每个构建保留一些简单的动态数据,比如“50.24”。然后能够在不同的工作中检索这些数据。

更具体地说,我正在寻找这些方面的东西

发布到http://localhost:8080/job/myjob//api/json/store {"代码覆盖率":"50.24"}

然后换一份工作

获取 http://localhost:8080/job/myjob//api/json?code-coverage

一个想法是执行archiveArtifacts 并将其保存到文件中,然后使用 API/文件将其读回。但我想知道是否有插件或简单的方法来为这项工作编写一些数据。

【问题讨论】:

    标签: jenkins groovy jenkins-api


    【解决方案1】:
    • 如果您需要将变量从一个构建发送到另一个构建:

    参数化构建是执行此操作的最简单方法: https://wiki.jenkins.io/display/JENKINS/Parameterized+Build

    网址如下所示:

    http://server/job/myjob/buildWithParameters?PARAMETER=Value
    

    如果您需要共享复杂的数据,您可以将一些文件保存在您的工作区中,然后从另一个构建中使用(发送绝对路径)。

    • 如果您需要重用构建期间计算的简单变量

    我会使用环境变量,在您的流程中更新:

    Jenkinsfile (Declarative Pipeline)
    
    pipeline {
        agent any
    
        environment {
            DISABLE_AUTH = 'true'
            DB_ENGINE    = 'sqlite'
        }
    
        stages {
            stage('Build') {
                steps {
                    sh 'printenv'
                }
            }
        }
    }
    

    那里的所有细节: https://jenkins.io/doc/pipeline/tour/environment/

    • 如果您需要在两个构建之间重用复杂数据

    您有两种情况,即您的构建是否在同一个工作区中。 在同一个工作区中,将您的数据写入文本文件是完全可以的,该文件稍后会被另一个作业重新使用。 如果您的用例是关于从日志中提取测试结果并在以后重新使用它,archiveArtifacts 插件很方便。否则您将不得不自己编写流程。

    如果您的第二份工作正在使用另一个工作区,您将需要提供您的子工作的绝对路径。为了让它复制和处理它。

    【讨论】:

    • 我不会提前知道这些数据。这是在构建期间动态生成的。
    • 我已经更新了我的回复。如果它是您需要的微不足道的数据,我会选择 env 变量。否则我会把它保存在一个 txt 文件中,以后再使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 2018-06-30
    • 1970-01-01
    • 2023-03-16
    • 2012-12-31
    • 2021-04-30
    • 1970-01-01
    相关资源
    最近更新 更多