当前位置: 首页 > 知识库问答 >
问题:

Jenkins:我如何知道一个自动过程或者一个用户是否触发了一个构建?

锺离俊雄
2023-03-14

Jenkins中是否有一个环境变量告诉我构建是手动运行还是通过轮询自动触发?

如果自动触发,我的管道就像一个超级按钮,但如果手动运行...它总是失败,所以我想我要编辑管道以检查构建是如何触发的。

共有2个答案

孙文康
2023-03-14

获取工作流运行原因的能力已在2.22版(2018年11月2日)中发布到支持管道的API插件中。JENKINS-41272中请求了该功能。

该版本向currentBuild全局变量添加了几个方法:

getBuildCauses

    Returns a JSON array of build causes for the current build

EXPERIMENTAL - MAY CHANGE getBuildCauses(String causeClass)

    Takes a string representing the fully qualified Cause class and returns a JSON array of build causes filtered by that type for the current build, or an empty JSON array if no causes of the specified type apply to the current build

看答案https://stackoverflow.com/a/53342374/5955565.我在这里复制粘贴了它,因为这个问题首先显示在搜索结果中(不同于如何区分Jenkins管道中的构建触发器)。

另请参见< code > $ { YOUR _ JENKINS _ URL }/pipeline-syntax/globals ,了解currentBuild上可用的最新完整属性列表。

乐正镜
2023-03-14

不幸的是变量< code>env。管道生成中未设置BUILD_CAUSE。有关管道作业,请参见以下示例

if ( currentBuild.rawBuild.getCauses()[0].toString().contains('UserIdCause') ){
    // do steps for manual trigger here
}

可以在此处找到其他可能的原因进行比较。

 类似资料:
  • 这是如何配置Git后提交挂钩的扩展或变体 我的问题是,我不希望每次提交一次构建。相反,我想要的是一次触发一个构建的单个实例。当单个实例正在运行时,新的请求可能会累积,但在当前构建完成后,应该将它们合并到单个新构建中。 显然,触发应该在有意义的相关git版本上,通常来自同一个分支,并且构建应该始终在最靠近HEAD的触发版本上执行(这有意义吗?)。 因此,为了解决这个问题,假设每个人都在努力掌握,我放

  • 问题内容: 我在Java中使用DOM表示形式 如何区分xml标记中是否包含值或是否包含另一个嵌入式标记?例如,我可以拥有: 要么 我想做以下 如何写条件1? 问题答案: 您可以通过遍历子节点列表来测试每个子节点: 然后condition1是。 或者,您可以使用实施测试。但是,如果 是 子元素,这种方法会遍历整个片段您正在测试,并分配大量内存。

  • 我有一个管道Jenkins作业,它按预期工作,配置了“GitHub hook trigger for GITScm polling”选项,以便在任何推送到git存储库时自动构建。 我已经将这个Jenkins URL与多个git回购挂钩,比如< code>repo-A、< code>repo-B、< code>repo-B。< br> Jenkins作业在任何代码推送至这些回购时自动触发。 但是我想

  • 我大部分时间都用在我的计算数论研究上。我输入了以下内容: ,它给出了整数1到100的φ(n)-1的值。这里φ(n。它给出了以下输出: (我排除了一些整数以使问题简短)我想检查这些数字中是否有数字。我该怎么做?

  • 无论是ES6promise还是蓝鸟promise、Qpromise等。 如何测试给定对象是否为Promise?