You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The plugin validates all step configurations before uploading the pipeline. Invalid steps are automatically skipped with a warning logged to the build output.
78
+
79
+
**A valid step must have:**
80
+
- A `command` or `commands` field (for command steps), OR
81
+
- A `trigger` field (for trigger steps), OR
82
+
- A `group` field with either:
83
+
- An action (`command`, `commands`, or `trigger`) directly on the group, OR
84
+
- Valid nested `steps`
85
+
86
+
**Invalid configurations that will be skipped:**
87
+
88
+
```yaml
89
+
# ❌ Empty step - no action defined
90
+
- path: "app/"
91
+
config:
92
+
label: "Deploy app" # Only has a label, no command/trigger
93
+
94
+
# ❌ Empty group - no action and no nested steps
95
+
- path: "services/"
96
+
config:
97
+
group: "Deploy"
98
+
# Missing: steps array or action
99
+
```
100
+
101
+
**Valid configurations:**
102
+
103
+
```yaml
104
+
# ✅ Valid - has command
105
+
- path: "app/"
106
+
config:
107
+
label: "Deploy app"
108
+
command: "echo deploying"
109
+
110
+
# ✅ Valid - group with nested steps
111
+
- path: "services/"
112
+
config:
113
+
group: "Deploy"
114
+
steps:
115
+
- command: "deploy.sh"
116
+
```
117
+
75
118
#### Plugins in Step Configurations
76
119
77
120
The plugin preserves `plugins:` blocks when specified in command step configurations. This allows you to use Buildkite plugins within your monorepo-watched steps.
@@ -103,8 +146,6 @@ steps:
103
146
104
147
When changes are detected in the watched paths, the plugin generates steps that include the specified plugins. The `plugins:` blocks are preserved exactly as configured.
105
148
106
-
:warning: This plugin may accept configurations that are not valid pipeline steps, this is a known issue to keep its code simple and flexible.
107
-
108
149
```yaml
109
150
steps:
110
151
- label: "Triggering pipelines"
@@ -120,7 +161,7 @@ steps:
120
161
- path: docker/
121
162
config:
122
163
group: docker/**
123
-
steps:
164
+
steps: # Required: groups must have either 'steps' or an action
124
165
- plugins:
125
166
- docker#v5.13.0:
126
167
build: service
@@ -340,6 +381,34 @@ steps:
340
381
341
382
The plugin automatically retries binary downloads up to 3 times with a 5-second delay between attempts. This handles transient network issues when downloading from GitHub.
342
383
384
+
### `verify_checksum` (optional)
385
+
386
+
Default: `false`
387
+
388
+
Enable SHA256 checksum verification for downloaded binaries to enhance security. When enabled, the plugin verifies checksums against those published in the GitHub release, providing protection against compromised artifacts, network attacks, and binary tampering.
389
+
390
+
Checksum verification is performed for:
391
+
- Newly downloaded binaries (fails and deletes binary on mismatch)
392
+
- Cached binaries before reuse (automatically re-downloads on mismatch)
393
+
- Pre-installed binaries when `download: false` (best-effort, non-blocking)
394
+
395
+
To enable checksum verification:
396
+
397
+
```yaml
398
+
steps:
399
+
- label: "Triggering pipelines"
400
+
plugins:
401
+
- monorepo-diff#v1.8.0:
402
+
verify_checksum: true # Recommended for enhanced security
403
+
diff: "git diff --name-only HEAD~1"
404
+
watch:
405
+
- path: "foo-service/"
406
+
config:
407
+
trigger: "deploy-foo-service"
408
+
```
409
+
410
+
If checksums are unavailable for a release or the SHA256 command is not found on the system, the plugin will warn but continue execution (graceful degradation).
411
+
343
412
### `hooks` (optional)
344
413
345
414
Currently supports a list of `commands` you wish to execute after the `watched` pipelines have been triggered
@@ -520,6 +589,41 @@ steps:
520
589
command: "echo deploy-bar"
521
590
```
522
591
592
+
## Troubleshooting
593
+
594
+
### "Skipping invalid step" warnings
595
+
596
+
If you see warnings like `Skipping invalid step: empty step configuration`, check that your step configuration includes:
597
+
598
+
1. For command steps: `command`or `commands` field
599
+
2. For trigger steps: `trigger`field
600
+
3. For group steps: `group`field with either `steps` array or an action
601
+
602
+
**Common issues:**
603
+
604
+
- Forgetting to add `command:` or `trigger:` inside the `config` block
605
+
- Creating empty groups without nested steps
606
+
- Using only metadata fields like `label`, `key`, or `env` without an action
0 commit comments