当前位置: 首页 > 面试题库 >

如何在Jenkins Pipeline中区分构建触发器

萧芷阳
2023-03-14
问题内容

我希望根据我的构建触发方式向我的Jenkinsfile添加一个条件阶段。目前,我们的设置是通过以下方式触发的:

  1. 分支索引中获取的git repo更改
  2. 用户使用用户界面中的“立即构建”按钮手动触发构建。

有什么方法可以运行不同的流水线步骤,具体取决于其中哪些操作触发了构建?


问题答案:

以下代码可以确定用户是否已启动管道或计时器/其他触发器:

def isStartedByUser = currentBuild.rawBuild.getCause(hudson.model.Cause$UserIdCause) != null


 类似资料:
  • 我希望在我的Jenkinsfile中添加一个条件阶段,该阶段根据构建的触发方式运行。目前,我们设置为构建由以下方式触发: 对 git 存储库的更改,这些更改是在分支索引中选取的 用户使用 UI 中的“立即生成”按钮手动触发生成。 是否有任何方法可以根据这些操作中的哪些操作触发了构建来运行不同的管道步骤?

  • 问题内容: 我有三个管道项目,项目a,项目b和项目c。project-c需要一个参数。成功完成project-a或project- b时,我想触发带有参数的project-c的构建。 我可以在管道中使用以下代码在project-a和project-b中执行此操作: 但这需要两名执行者。我希望project-a或project-b在使用参数运行project-c之前完全完成。 问题答案: 您的管道很

  • 问题内容: 我为作业配置了两个构建触发器(轮询SCM和FStrigger- MonitorFiles),比如说轮询计划为每日轮询(@daily),现在,如果轮询SCM检测到更改或FStrigger- MonitorFiles这样做是正常行为,则触发构建。 但是,如果两个都检测到更改,则每次触发器尝试触发构建时都会触发两次构建,那么我该如何实现每天将上述两个触发器的结果组合在一起并且仅触发/不触发一

  • 我有一个Jenkins管道作业(不是多分支管道),管道内的逻辑之一是,当gitlab scm上有一个合并请求时,我想基于触发此生成的合并请求的源分支构建一些东西。 我的问题是,在Jenkinsfile中,我如何动态地获取这个源分支,签出代码,并创建一个工作区,以便在这个分支上运行构建?

  • 在freestyle作业中,在stage Build trigger上有一个名为“GitHub hook trigger for GITScm polling”的选项。 屏幕截图如下: 与gitlab配置中的webhook一起使用”http://myjenkins/gitlab/notify_commit“它工作正常,这意味着在将某些内容推送到存储库时将自动触发生成。但为什么在多分支管道中只有一个

  • 我正在尝试弄清楚如何确定是什么导致构建从脚本化Jenkinsfile中运行。原因是我在docker容器中有一个脚本,我想在cron作业中运行它,所以当cron作业触发时,我只希望它运行容器,但当我推送更改时,我希望它检查代码、重建容器、运行静态代码分析、运行测试等。在cron运行中不需要所有这些。 我如何能得到原因?我尝试了< code > current build . get causes()