summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinya Maeda <shinya@gitlab.com>2017-11-27 18:59:03 +0900
committerShinya Maeda <shinya@gitlab.com>2017-12-06 15:53:59 +0900
commitfba38b51b761cdc5edb964dc90eea051a33aab3e (patch)
tree71817e01fbe9fde44d796a3e19f5bbc6da023e01
parentf5bfedc6122e00ed1182ad7caaeb7636eeebebe1 (diff)
downloadgitlab-ce-fba38b51b761cdc5edb964dc90eea051a33aab3e.tar.gz
Add feature flag
-rw-r--r--app/models/ci/build.rb2
-rw-r--r--doc/ci/yaml/README.md19
2 files changed, 19 insertions, 2 deletions
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index 9c44e9ef5fd..cf666f86841 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -485,6 +485,8 @@ module Ci
end
def validates_dependencies!
+ return unless Feature.enabled?('ci_validates_dependencies')
+
dependencies.tap do |deps|
# When `dependencies` keyword is given and depended jobs are skipped by `only` keyword
if options[:dependencies]&.any? && deps.empty?
diff --git a/doc/ci/yaml/README.md b/doc/ci/yaml/README.md
index f5391ff0768..ea151853f50 100644
--- a/doc/ci/yaml/README.md
+++ b/doc/ci/yaml/README.md
@@ -1106,8 +1106,7 @@ Note that `artifacts` from all previous [stages](#stages) are passed by default.
To use this feature, define `dependencies` in context of the job and pass
a list of all previous jobs from which the artifacts should be downloaded.
You can only define jobs from stages that are executed before the current one.
-An error will be shown if you define jobs from the current stage or next ones,
-or there are no depended jobs with artifacts in previous stages.
+An error will be shown if you define jobs from the current stage or next ones.
Defining an empty array will skip downloading any artifacts for that job.
The status of the previous job is not considered when using `dependencies`, so
if it failed or it is a manual job that was not run, no error occurs.
@@ -1154,6 +1153,22 @@ deploy:
script: make deploy
```
+### Validations for `dependencies` keyword
+
+> Introduced in GitLab 10.3
+
+`dependencies` keyword doesn't check the depended `artifacts` strictly. Therefore
+they do not fail even though it falls into the following conditions.
+
+1. A depended `artifacts` has been [erased](https://docs.gitlab.com/ee/api/jobs.html#erase-a-job).
+1. A depended `artifacts` has been [expired](https://docs.gitlab.com/ee/ci/yaml/#artifacts-expire_in).
+
+To validate those conditions, you can flip the feature flag from a rails console:
+
+```
+Feature.enable('ci_validates_dependencies')
+```
+
### before_script and after_script
It's possible to overwrite the globally defined `before_script` and `after_script`: