通过Jenkins API写入键/值数据

时间:2018-04-28 04:02:50

标签: jenkins groovy jenkins-api

我已经在我的构建管道中使用Jenkins API来完成某些任务。现在,有一项任务我希望为每个构建保留一些简单的动态数据,例如“50.24”。然后能够在不同的作业中检索此数据。

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

  

POST到http://localhost:8080/job/myjob/ / api / json / store   { “代码覆盖”: “50.24”}

然后在另一份工作中

  

GET   http://localhost:8080/job/myjob/ / API / JSON?代码覆盖

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

1 个答案:

答案 0 :(得分:0)

  • 如果您需要将变量从一个构建发送到另一个构建:

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

网址如下:

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

如果您需要共享复杂数据,可以在工作区中保存一些文件并从另一个版本中使用它(发送绝对路径)。

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

我会去使用环境var,在你的流程中更新:

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插件很方便。否则你将不得不自己编写这个过程。

如果您的第二份工作是使用其他工作区,则需要提供子工作的绝对路径。为了复制和处理它。