Stage-level play all button in a child pipeline doesn't move all manual jobs into pending state

Summary

 
This seems to be intermittent. In a child pipeline where all jobs in a stage are manual, clicking the play button on the stage level (ie play all) doesn't move all jobs into pending state. Some (random number) of jobs sometimes stay in manual state.
 

Steps to reproduce

  1. Add a .gitlab-ci.yml that has a trigger job to create a child pipeline. Example:
stages:
    - validate
    - universal
    - compile-and-package
variables:
  RUN_PIPELINE: bakery-workflow

bakery-workflow:
    stage: universal
    trigger:
        include: <subfolder>/.gitlab-ci.yml
        strategy: depend
        forward:
            pipeline_variables: true
    rules:
        - if: $RUN_PIPELINE == "bakery-workflow" && $CI_COMMIT_BRANCH == "main"
  1.  In the child pipeline, have a stage where all jobs are manual.

 
/.gitlab-ci.yml:
 

workflow:
  name: BAKERY-WORKFLOW

default:
    tags:
        - chocolate-mixer

stages:
    - freeze-recipe
    - bakery-morning-shift
    - morning-quality-check
    - bakery-afternoon-shift

.bakery-process:
    before_script:
        - echo "setting PATH"
    script:
        - echo "deploy-platform -g"

.bakery-morning-shift:
    extends: .bakery-process
    stage: bakery-morning-shift

morning-bake:
    extends: .bakery-morning-shift
    environment:
        name: bakery/kitchen/downtown/morning

freeze-recipe:
    stage: freeze-recipe
    artifacts:
        reports:
            dotenv: myenv.env
        paths:
            - myenv.env
    script:
        - echo "TEST_VAR=TEST_VAL" >> myenv.env
    rules:
        - if: $CI_COMMIT_BRANCH == "main"
    environment:
        name: bakery/all

include:
    - 'bakery/process/.gitlab-ci-location-jobs.yml'

 
platform/deploy/.gitlab-ci-tenant-jobs.yml:
 

.bakery-afternoon-shift:
    extends: .bakery-process
    needs:
    - morning-bake
    - freeze-recipe
    rules:
    - when: manual
    stage: bakery-afternoon-shift
    variables:
        FF_TIMESTAMPS: true

croissant-station:
    extends: .bakery-afternoon-shift
    environment:
        name: bakery/croissant-station

# Add 10 more jobs that extends the same hidden job with a different environment.name

 

  1. Run a job, once downstream pipeline is created click the child pipeline id to open it.
  2. On the child pipeline page, on the top of the bakery-afternoon-shift stage, click the play button to play all manual jobs.
  3. Observe that some jobs started (pending status), but some are still in manual state.

What is the current bug behavior?

 Stage-level play all button doesn't start all manual jobs. Manual jobs don't move to Pending state, stay in manual state (showing the gear icon)
 

What is the expected correct behavior?

 All manual jobs in that stage should go into Pending state first then start running. Like this:
 

Output of checks

 This bug happens on GitLab.com
  

Possible fixes

Patch release information for backports

 If the bug fix needs to be backported in a patch release to a version
under the maintenance policy, please follow the steps on the
patch release runbook for GitLab engineers.
 
Refer to the internal "Release Information" dashboard
for information about the next patch release, including the targeted versions, expected release date, and current status.
 

High-severity bug remediation

 To remediate high-severity issues requiring an internal release for single-tenant SaaS instances,
refer to the internal release process for engineers.
  

Edited by Gerardo Gutierrez