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

获取谁触发了管道作业的用户名(手动或 scm 触发器)

公冶智刚
2023-03-14

我的工作有两种方式:

    < li >如果有人提交github repo,则触发作业。 < li >如果有人手动创建作业。

在我的管道中,我需要直接(手动)或间接(SCM提交)获取触发构建的人的姓名/信息。我有以下代码:

node('slave'){
    wrap([$class: 'BuildUser']) {
      return BUILD_USER
    }
} 

这让我使用https://wiki.jenkins-ci.org/display/JENKINS/Build用户Vars插件插件的名称。

这在手动模式下有效,但通过SCM触发时,总是给SCM触发。我如何通过SCM获取提交触发器的人的姓名/信息?

共有1个答案

彭阳朔
2023-03-14

ScmTrigger不保存提交git的用户的信息。您可以使用git命令获取提交的用户:

git log --format='%an <%ae>' GIT_COMMIT_ID
    null

另一种选择是使用git钩子来触发作业,而不是SCM轮询。在这种情况下,您可以将提交器从钩子传递到作业。(例如:https://www.fourkitchens.com/blog/article/trigger-jenkins-builds-pushing-github)

 类似资料:
  • 我们使用quartz调度器创建一个带有触发器名称和触发器组的触发器,它将在15分钟的间隔被触发。 我们希望在任何时间点手动触发时间表。因此,我们所做的就是获取与我们创建的计划相关联的作业的触发键细节,并尝试使用以下API触发作业。 用上面提到的API激发作业时(即尝试手动激发作业)的Quartz日志: 能不能有人请让我知道我们如何才能使时间表是触发与原来的工作相关联的触发器。

  • 问题内容: 如何设置Jenkins作业以触发在变量/参数中动态定义的作业? 我的问题的伪代码: 生成操作“触发/调用在其他项目上生成”以及生成后操作“参数化触发器插件”和“生成其他项目”不允许在参数中定义作业名称。 我似乎没有将GroovyAxis插件与Build多重配置项目一起使用。常规代码似乎不在作业构建环境中运行,而是在作业配置保存期间运行。 我了解您可以通过脚本通过其build-start

  • 我有一个场景,但我有两个项目(a和B),都在Jenkins中配置了多分支管道作业,问题是项目B依赖于项目a。 所以我发现有时候当我在项目A中签入代码时,我也需要在项目A构建后构建项目B。现在,在我开始调查管道构建之前,我将每个分支都有一个作业,然后在Jenkins中为相应的分支触发项目B的适当作业。 我想在Jenkins文件中设置什么,这样当ProjectA/develop执行时,它就会触发Pro

  • 问题内容: 我将Groovy脚本作为Jenkins中Pipeline工作的一部分,如下所示: 由于将标记设置为,因此它并行执行多个其他自由式作业。但是,我希望所有作业完成后才能完成呼叫者作业。目前,Pipeline作业会触发所有作业并在几秒钟后自行完成,这不是我想要的,因为我无法跟踪总时间,而且我无法一次取消所有已触发的作业。 当并行完成所有作业时,如何纠正上述脚本以完成管道作业? 我试图将构建作

  • 我通过jira触发器插件将jenkins作业设置为触发器<但是jenkins作业没有被触发,尽管它从JIRA那里获得了webhook事件。 我检查了如下内容。 Jenkins得到了网络钩子事件。我在詹金斯日志上检查了这个。 我试着为詹金斯设置各种方式,但都失败了。我想知道如何设置jira触发器 > 测试环境 吉拉:6.4.11 我的测试用例是。。。 Jenkins工作设置 选中:向JIRA添加注释

  • 我已经在我的环境中配置了一个发布管道,作为开发- 我的问题是,是否有可能在各个阶段禁用手动部署,比如在测试阶段完成之前,我们不应该部署到uat。 现在,我们将能够手动运行uat阶段,即使开发和测试阶段没有完成或者我们还没有运行这些阶段。