Make `needs:` require the job it refers to by default
Summary
Currently, needs: is a weak requirement. It means that if needed job is not present,
we will ignore it and the job will run anyway.
Most people would expect needs: to be strong requirement, meaning that if a needed
job does not exist (due to only/except rules), the job that needs it should also
not run.
Today: Example
build-a:
only: [master]
test-a:
needs: [build-a]
The test-a will be created when pushed to non-master.
After: Example
The test-a will not be created, as it requires the build-a to function.
Edited by Jason Yavorsky