No useful error information when "optional" dependency isn't defined

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

Summary

When a job has a needs field with an optional dependency using needs:parallel:matrix, the pipeline cannot be spawned, and no useful error message is given.

Steps to reproduce

  1. Create a repository with a pipeline that has a job with a needs field using both optional: true and parallel:matrix.
  2. Trigger a pipeline (manually from GitLab UI or via commit)

Example Project

This shows the "child pipeline" version:

https://gitlab.com/kstrand1/ci-parent-child-data-integrity-bug#

What is the current bug behavior?

Instead of spawning the child pipeline and showing a meaningful error (such as "job depends on , but it does not exist"), no pipeline is spawned.

If the problematic job is in the main pipeline for a repo, there is no error message at all; pipelines simply never start, and in the pipeline editor, the "validate" button doesn't appear to do anything.

If the job is in a child pipeline, then the child pipeline is never spawned, and the triggering job shows "data integrity failure" (similar to #424158 (closed)).

What is the expected correct behavior?

One of:

  • the pipeline is created, but an error message shows that the needs configuration is incorrect; or,
  • the pipeline is valid, and the dependency is ignored since it is optional

Output of checks

This bug happens on GitLab.com.

Edited by 🤖 GitLab Bot 🤖