0

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

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

发布到http://localhost:8080/job/myjob/ /api/json/store {"code-coverage":"50.24"}

然后换了一份工作

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

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

4

1 回答 1

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

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

URL 如下所示:

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 插件很方便。否则,您将不得不自己编写流程。

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

于 2018-04-28T10:57:48.530 回答