A job with needs keyword is run even if needed job is skipped
When using the keyword
needs, a skipped job trigger execution of those which need it.
Steps to reproduce
Use the following CI configuration:
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.
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
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.