Horde schedule which runs on every submitted change

Hello,

We would like to use a template that runs for every submitted change, while limiting the number of active jobs to one. We currently have the following schedule configuration:

"schedule":
			{
				"enabled": true,
				"maxActive": 1,
				"maxChanges": 1,
				"requireSubmittedChange": true,
				"filter":
				[
					"ContainsCode"
				],
				"patterns":
				[
					{
						"Interval": 5
					}
				],
				"Parameters":
				[
				]
			}

However, it appears that

maxChanges: 1 causes the job to fall behind by one changelist. When multiple changelists are submitted within the interval, one of them is skipped. Even with Interval 1 there can be a build skipped if two CLs are submitted.

What is the best way to ensure that a build runs for every single changelist? Our goal is to run code validation on each submitted changeli

Hello, so please try setting max changes to exceed the maximum number of CL’s you would ever expect in an interval, for example:

"schedule": {
    "enabled": true,
    "maxActive": 1,
    "maxChanges": 50,
    "requireSubmittedChange": true,
    "filter": ["ContainsCode"],
    "patterns": [{ "Interval": 5 }]
}

… with maxChanges: 50, if 10 CLs are submitted between intervals, the scheduler should trigger jobs for all 10 (limited by maxActive). The jobs will queue and run sequentially since maxActive: 1, if you want to parallelize more, can increase the active count, let me know if this helps

Ok, a bit hard to tell not seeing CL’s though that maxActive field at 1 is probably too guarded, and with that in place commits will be skipped to avoid falling hopelessly behind.

Can you try changing to 10 there, if you want to run unbounded, can set to 0.

A few other notes for reference in case these become a factor:

  • Commits filter — If your schedule has “Commits”: [“code”], only CLs with code file changes (.cpp, .h, .cs, etc.) will trigger jobs. Content-only CLs are skipped entirely.
  • Files filter — If specified, only CLs touching matching paths trigger jobs.
  • #skipci in CL description — Any CL with #skipci at the start of a line is always skipped.

Hello, unfortunately this seems to still skip some CLs. This case is without filter.

Config:

{
			"id": "editor-tests",
			"name": "Editor Tests",
			"description": "Runs automated tests within the Unreal Editor.",
			"showUgsBadges": true,
			"showUgsAlerts": true,
			"allowPreflights": true,
			"workflowId": "runtime",
			"arguments":
			[
				"-Script=Game/Build/Graph/V2/BuildProject.xml",
				"-Target=Editor Boot Test"
			],
			"schedule":
			{
				"enabled": true,
				"maxActive": 1,
				"maxChanges": 50,
				"requireSubmittedChange": true,
				"patterns":
				[
					{
						"Interval": 1
					}
				],
				"Parameters":
				[
				]
			}
		},