云客户?
免费开始>
在MyJFrog >中升级
云有什么新>





要使管道自动化,您需要将它们设置为在发生某些事件时运行。这些事件可能是:

  • 提交到源代码存储库
  • 源代码存储库分支或拉请求
  • 其他外部事件
  • 在一定的时间间隔内

步骤在由资源中的某个更改事件触发时自动执行。您的管道应该构造成这样:当每个步骤对资源进行一些更改时,该更改将触发下一步的执行。通过这种方式,管道的所有步骤将按顺序执行。

触发一个步骤执行:

  1. 在资源中指定触发事件。
  2. 将该资源指定为inputresource一步的。

然后,该资源中指定的更改将自动触发该步骤的运行。当该步骤是管道中的第一步时,它将启动该管道的整个运行。


页面内容


触发Git存储库更改

一个Git源代码存储库由GitRepo资源。方法中指定触发GitRepo的事件buildOn标签组。

触发管道运行最常用的事件是any提交到Git存储库。因此,此标记的值默认为真正的.因此,如果这是您想要触发的唯一事件,那么您不需要指定buildOn标签。

你的GitRepo可以设置为触发其中任何一个buildOn事件:

标签 默认的 事件
提交 真正的 一个新的提交到Git回购
注意w当设置为,则资源未更新,资源版本未创建。
pullRequestCreate 向Git回购发出新的拉取请求
pullRequestClose Git回购的拉取请求被关闭
releaseRequestCreate 向Git repo发出新的发布请求
tagCreate 在Git repo中创建一个新的标记引用

这个示例导致GitRepo在拉请求或释放请求时触发管道的运行。由于commit默认为true,所以必须显式地将其设置为false。

2022世界杯阿根廷预选赛赛程resources:—name: my_source_repo type: GitRepo configuration: gitProvider: myGitHub path: mycompany/myrepository branches: include: master buildOn: commit: false pullRequestCreate: true releaseRequestCreate: true pipelines:—name: pipeline_gitrepo_trigger steps:—name: gitrepo_trigger_step_1 type: Bash configuration: inputResources:—name: my_source_repo execution: onExecute: - printenv #演示的良性操作

跳过Git仓库提交

类的特定提交不应触发任何运行GitRepo资源,包括文本(skipRun)在提交消息中的任何位置,并且该提交不会触发任何运行。

例如,要从GitHub命令行提交更改:

$ git commit -m "[skipRun]修正了注释中的拼写错误" #提交跟踪的更改,但不触发管道。

GitRepo资源仍将被更新,因此对于任何引用该GitRepo资源的Pipelines步骤,它都将是最新版本的存储库。

(skipRun)指令仅抑制a的触发提交事件。GitRepo资源仍然会在其他资源上触发buildOn事件(例如拉请求),如果这些事件被设置为真正的

取消之前对Git存储库更改的运行

默认情况下,当GitRepobuildOn如果一个事件(例如,一个commit)触发了一个已经在队列中或者正在从之前的触发器中运行的管道,那么管道将对该管道的新运行进行排队。新运行在前一次运行完成后执行。

可以对GitRepo资源进行可选配置,以自动取消由同一GitRepo资源触发的任何排队或正在进行的运行。

你的GitRepo可以被设置为取消其中任何一个cancelPendingRunsOn事件:

标签 默认的 事件
newCommit 提交:取消之前对同一分支的运行
标签:先前对相同标签名的运行将被取消
发布:对相同发布名称的先前运行将被取消
pullRequestUpdate 对相同拉取请求号的先前运行将被取消


只有相同类型的更改事件才会取消运行。例如,一次提交将只取消由先前提交到同一分支所触发的运行。


这个例子导致GitRepo在同一个拉请求触发新的运行时取消先前对拉请求的运行。不会为提交触发运行。

2022世界杯阿根廷预选赛赛程resources:—name: my_source_repo type: GitRepo configuration: gitProvider: myGitHub path: mycompany/myrepository branches: include: master buildOn: commit: false pullRequestCreate: true cancelPendingRunsOn: pullRequestUpdate: true pipelines:—name: pipeline_gitrepo_trigger steps:—name: gitrepo_trigger_step_1 type: Bash configuration: inputResources:—name: my_source_repo execution: onExecute: - printenv #演示的良性操作




在Webhook上触发

你可以在从外部来源收到网络钩子时触发执行。

创建一个IncomingWebhook属性配置为使用引入Webhook集成,然后把它包括在input2022世界杯阿根廷预选赛赛程resources要触发的步骤块。来自webhook的任何有效负载都将在资源的环境变量中可用美元res_ < resource_name > _payload,可以写入文件。然后可以使用Read_json实用函数将各个元素从JSON有效负载检索到环境变量中。

2022世界杯阿根廷预选赛赛程resources:—name: incoming_basic_hook type: incoming_webhook configuration: webhookName: in_hook_basic pipelines:—name: incoming_webhook_demo steps:—name: start_by_hook type: Bash configuration: inputResources:—name: incoming_basic_hook execution: onExecute: - echo "job trigger by resource-> $step_triggered_by_resource_name" - echo "$res_incoming_basic_hook_payload" | jq '. "' >有效载荷。$(read_json有效载荷。json my.nested.object)”

在时间表上触发

许多组织的一个常见实践是在非高峰使用时间执行定期的夜间构建。例如,您可能希望在每晚凌晨3:00执行管道的运行。

若要在特定时间或定期间隔触发,请使用Cron触发器资源指定时间或间隔。在此资源中,您可以指定cron表达式字符串。当您指定Cron触发器资源作为inputresource对于管道中的第一步,管道将在该时间或间隔自动开始执行。


这个例子演示了如何使用CronTrigger资源来触发单步管道的执行每5分钟。

2022世界杯阿根廷预选赛赛程resources:—name: cron_trigger type: CronTrigger configuration: interval: '*/5 * * * *' #每隔5分钟管线:—name: pipeline_scheduled_triggers steps:—name: step_1 type: Bash configuration: inputResources:—name: cron_trigger execute: onExecute:—printenv . exe




  • 没有标签
版权所有©2022 JFrog Ltd.