summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Trzciński <ayufan@ayufan.eu>2018-11-08 10:34:26 +0100
committerKamil Trzciński <ayufan@ayufan.eu>2018-11-08 11:58:54 +0100
commit036c9c58ba04046241a2183ec98ad84fcfd0a5bf (patch)
tree99f47fe15bd0aff26e8676a70e76755ceefe5fbe
parentb3b9817e5100ae2e827794d87ac6a6649571eddc (diff)
downloadgitlab-ce-036c9c58ba04046241a2183ec98ad84fcfd0a5bf.tar.gz
Limit parallel to 100limit-parallel-to-100
This prevents some of the abusive behaviors, of someone putting 100000 and creating out of memory condition easily
-rw-r--r--doc/ci/yaml/README.md2
-rw-r--r--lib/gitlab/ci/config/entry/job.rb3
-rw-r--r--spec/lib/gitlab/ci/config/entry/job_spec.rb10
3 files changed, 13 insertions, 2 deletions
diff --git a/doc/ci/yaml/README.md b/doc/ci/yaml/README.md
index c827faace33..5cca9d86560 100644
--- a/doc/ci/yaml/README.md
+++ b/doc/ci/yaml/README.md
@@ -1510,7 +1510,7 @@ Possible values for `when` are:
> [Introduced](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/22631) in GitLab 11.5.
`parallel` allows you to configure how many instances of a job to run in
-parallel. This value has to be greater than or equal to two (2).
+parallel. This value has to be greater than or equal to two (2) and less or equal than 50.
This creates N instances of the same job that run in parallel. They're named
sequentially from `job_name 1/N` to `job_name N/N`.
diff --git a/lib/gitlab/ci/config/entry/job.rb b/lib/gitlab/ci/config/entry/job.rb
index 8e8c979f973..c8cb3248fa7 100644
--- a/lib/gitlab/ci/config/entry/job.rb
+++ b/lib/gitlab/ci/config/entry/job.rb
@@ -27,7 +27,8 @@ module Gitlab
validates :tags, array_of_strings: true
validates :allow_failure, boolean: true
validates :parallel, numericality: { only_integer: true,
- greater_than_or_equal_to: 2 }
+ greater_than_or_equal_to: 2,
+ less_than_or_equal_to: 50 }
validates :when,
inclusion: { in: %w[on_success on_failure always manual delayed],
message: 'should be on_success, on_failure, ' \
diff --git a/spec/lib/gitlab/ci/config/entry/job_spec.rb b/spec/lib/gitlab/ci/config/entry/job_spec.rb
index ac9b0c674a5..57d4577a90c 100644
--- a/spec/lib/gitlab/ci/config/entry/job_spec.rb
+++ b/spec/lib/gitlab/ci/config/entry/job_spec.rb
@@ -118,6 +118,16 @@ describe Gitlab::Ci::Config::Entry::Job do
end
end
+ context 'when it is bigger than 50' do
+ let(:config) { { parallel: 51 } }
+
+ it 'returns error about value too high' do
+ expect(entry).not_to be_valid
+ expect(entry.errors)
+ .to include 'job parallel must be less than or equal to 50'
+ end
+ end
+
context 'when it is not an integer' do
let(:config) { { parallel: 1.5 } }