A job with needs keyword is run even if needed job is skipped
### Summary When using the keyword `needs`, a skipped job trigger execution of those which need it. ### Steps to reproduce Use the following CI configuration: ```yaml stages: - check - build - test lint: stage: check script: - echo "static check on code" - exit 1 docker_ci_image: stage: build script: - echo "build & push docker image" unittest: stage: test script: - echo "run test using docker image" needs: - docker_ci_image ``` In a general way, it happen if a job in a previous stage of a needed one fail, leading it to be marked as skipped. ### Example Project https://gitlab.com/Tassatux/ci-test An example of failing pipeline: https://gitlab.com/Tassatux/ci-test/pipelines/79899004 ### What is the current *bug* behavior? When a job mentioned with `needs` keyword is skipped (`docker_ci_image` in previous example) due to a previous failing stage for instance, all jobs that need it are run. ### What is the expected *correct* behavior? Jobs that need the skipped one (`unittest` in previous example) should be skipped too, as they will in traditional stage-based pipeline. ### Relevant logs and/or screenshots ![image](/uploads/1b296525632782d999d620f94ef9b4af/image.png) ![image](/uploads/b4aebb7e782058e06b789c2685235b8b/image.png) ### Output of checks This bug happens on GitLab.com ---- I'm not sure this should be considered as a bug, but it's the behavior I excepted when reading the DAG documentation. There no really a big impact on my use case, as the Docker image I except in later jobs didn't exist so the job fail early, I have multiple failed jobs instead of one and others skipped in classical pipeline.
issue