(workflowData *WorkflowData, markdownPath string)
| 230 | } |
| 231 | |
| 232 | func validateWorkflowConcurrency(workflowData *WorkflowData, markdownPath string) error { |
| 233 | if workflowData.Concurrency == "" { |
| 234 | return nil |
| 235 | } |
| 236 | if err := validateConcurrencyQueueConfiguration(workflowData.Concurrency); err != nil { |
| 237 | return formatCompilerError(markdownPath, "error", "workflow-level concurrency validation failed: "+err.Error(), err) |
| 238 | } |
| 239 | if workflowData.CachedConcurrencyGroupExprSet { |
| 240 | if workflowData.CachedConcurrencyGroupExprErr != nil { |
| 241 | return formatCompilerError(markdownPath, "error", "workflow-level concurrency validation failed: "+workflowData.CachedConcurrencyGroupExprErr.Error(), workflowData.CachedConcurrencyGroupExprErr) |
| 242 | } |
| 243 | return nil |
| 244 | } |
| 245 | groupExpr := extractConcurrencyGroupFromYAML(workflowData.Concurrency) |
| 246 | if groupExpr == "" { |
| 247 | return nil |
| 248 | } |
| 249 | if err := validateConcurrencyGroupExpression(groupExpr); err != nil { |
| 250 | return formatCompilerError(markdownPath, "error", "workflow-level concurrency validation failed: "+err.Error(), err) |
| 251 | } |
| 252 | return nil |
| 253 | } |
| 254 | |
| 255 | func (c *Compiler) emitGeneralToolWarnings(workflowData *WorkflowData, markdownPath string) { |
| 256 | if workflowData.Concurrency != "" && strings.Contains(workflowData.Concurrency, "cancel-in-progress: true") && hasBotSelfCancelRisk(workflowData) { |
no test coverage detected