summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-12-12 06:07:42 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2019-12-12 06:07:42 +0000
commit8e22ef10e4f9c6d1ef2411aa26ddd0658e2f1461 (patch)
tree1ffd5ffed59b0f752fc358524f4d2170f6694cb9 /lib
parent2ccde70b80730fd52f75797e7d711748fb5b769b (diff)
downloadgitlab-ce-8e22ef10e4f9c6d1ef2411aa26ddd0658e2f1461.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib')
-rw-r--r--lib/feature/gitaly.rb1
-rw-r--r--lib/gitlab/ci/config/entry/job.rb9
-rw-r--r--lib/gitlab/ci/pipeline/seed/build.rb2
-rw-r--r--lib/gitlab/ci/pipeline/seed/build/resource_group.rb40
-rw-r--r--lib/gitlab/ci/yaml_processor.rb1
-rw-r--r--lib/gitlab/import_export/import_export.yml2
6 files changed, 51 insertions, 4 deletions
diff --git a/lib/feature/gitaly.rb b/lib/feature/gitaly.rb
index 4f503377a77..625db1fce32 100644
--- a/lib/feature/gitaly.rb
+++ b/lib/feature/gitaly.rb
@@ -8,7 +8,6 @@ class Feature
SERVER_FEATURE_FLAGS =
%w[
inforef_uploadpack_cache
- get_all_lfs_pointers_go
get_tag_messages_go
filter_shas_with_signatures_go
].freeze
diff --git a/lib/gitlab/ci/config/entry/job.rb b/lib/gitlab/ci/config/entry/job.rb
index eea59ecb937..860ceae2ab8 100644
--- a/lib/gitlab/ci/config/entry/job.rb
+++ b/lib/gitlab/ci/config/entry/job.rb
@@ -16,7 +16,8 @@ module Gitlab
ALLOWED_KEYS = %i[tags script only except rules type image services
allow_failure type stage when start_in artifacts cache
dependencies before_script needs after_script variables
- environment coverage retry parallel extends interruptible timeout].freeze
+ environment coverage retry parallel extends interruptible timeout
+ resource_group].freeze
REQUIRED_BY_NEEDS = %i[stage].freeze
@@ -48,6 +49,7 @@ module Gitlab
validates :dependencies, array_of_strings: true
validates :extends, array_of_strings_or_string: true
validates :rules, array_of_hashes: true
+ validates :resource_group, type: String
end
validates :start_in, duration: { limit: '1 week' }, if: :delayed?
@@ -156,7 +158,7 @@ module Gitlab
attributes :script, :tags, :allow_failure, :when, :dependencies,
:needs, :retry, :parallel, :extends, :start_in, :rules,
- :interruptible, :timeout
+ :interruptible, :timeout, :resource_group
def self.matching?(name, config)
!name.to_s.start_with?('.') &&
@@ -236,7 +238,8 @@ module Gitlab
artifacts: artifacts_value,
after_script: after_script_value,
ignore: ignored?,
- needs: needs_defined? ? needs_value : nil }
+ needs: needs_defined? ? needs_value : nil,
+ resource_group: resource_group }
end
end
end
diff --git a/lib/gitlab/ci/pipeline/seed/build.rb b/lib/gitlab/ci/pipeline/seed/build.rb
index 590c7f4d1dd..98b4b4593e0 100644
--- a/lib/gitlab/ci/pipeline/seed/build.rb
+++ b/lib/gitlab/ci/pipeline/seed/build.rb
@@ -18,6 +18,7 @@ module Gitlab
@seed_attributes = attributes
@previous_stages = previous_stages
@needs_attributes = dig(:needs_attributes)
+ @resource_group_key = attributes.delete(:resource_group_key)
@using_rules = attributes.key?(:rules)
@using_only = attributes.key?(:only)
@@ -78,6 +79,7 @@ module Gitlab
else
::Ci::Build.new(attributes).tap do |job|
job.deployment = Seed::Deployment.new(job).to_resource
+ job.resource_group = Seed::Build::ResourceGroup.new(job, @resource_group_key).to_resource
end
end
end
diff --git a/lib/gitlab/ci/pipeline/seed/build/resource_group.rb b/lib/gitlab/ci/pipeline/seed/build/resource_group.rb
new file mode 100644
index 00000000000..100eb1d4084
--- /dev/null
+++ b/lib/gitlab/ci/pipeline/seed/build/resource_group.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Ci
+ module Pipeline
+ module Seed
+ class Build
+ class ResourceGroup < Seed::Base
+ include Gitlab::Utils::StrongMemoize
+
+ attr_reader :build, :resource_group_key
+
+ def initialize(build, resource_group_key)
+ @build = build
+ @resource_group_key = resource_group_key
+ end
+
+ def to_resource
+ return unless Feature.enabled?(:ci_resource_group, build.project)
+ return unless resource_group_key.present?
+
+ resource_group = build.project.resource_groups
+ .safe_find_or_create_by(key: expanded_resource_group_key)
+
+ resource_group if resource_group.persisted?
+ end
+
+ private
+
+ def expanded_resource_group_key
+ strong_memoize(:expanded_resource_group_key) do
+ ExpandVariables.expand(resource_group_key, -> { build.simple_variables })
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/ci/yaml_processor.rb b/lib/gitlab/ci/yaml_processor.rb
index 833c545fc5b..6f1ab79064a 100644
--- a/lib/gitlab/ci/yaml_processor.rb
+++ b/lib/gitlab/ci/yaml_processor.rb
@@ -44,6 +44,7 @@ module Gitlab
interruptible: job[:interruptible],
rules: job[:rules],
cache: job[:cache],
+ resource_group_key: job[:resource_group],
options: {
image: job[:image],
services: job[:services],
diff --git a/lib/gitlab/import_export/import_export.yml b/lib/gitlab/import_export/import_export.yml
index 2fd4f18b756..f822e931bdb 100644
--- a/lib/gitlab/import_export/import_export.yml
+++ b/lib/gitlab/import_export/import_export.yml
@@ -203,6 +203,8 @@ excluded_attributes:
- :artifacts_metadata_store
- :artifacts_size
- :commands
+ - :resource_group_id
+ - :waiting_for_resource_at
push_event_payload:
- :event_id
project_badges: