summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-10-15 12:06:06 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2019-10-15 12:06:06 +0000
commitfc96671f817239041ba2747af835a8d5d9aa3739 (patch)
tree19c7f650c869033760850b0d0edd4fb0a10968c4 /lib
parent3d13802bc2c9400ea33defdd43bff6d904ee9c4d (diff)
downloadgitlab-ce-fc96671f817239041ba2747af835a8d5d9aa3739.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib')
-rw-r--r--lib/gitlab/ci/pipeline/seed/build.rb4
-rw-r--r--lib/gitlab/ci/pipeline/seed/deployment.rb53
-rw-r--r--lib/gitlab/ci/pipeline/seed/environment.rb38
3 files changed, 94 insertions, 1 deletions
diff --git a/lib/gitlab/ci/pipeline/seed/build.rb b/lib/gitlab/ci/pipeline/seed/build.rb
index 1f6b3853069..fc9c540088b 100644
--- a/lib/gitlab/ci/pipeline/seed/build.rb
+++ b/lib/gitlab/ci/pipeline/seed/build.rb
@@ -73,7 +73,9 @@ module Gitlab
if bridge?
::Ci::Bridge.new(attributes)
else
- ::Ci::Build.new(attributes)
+ ::Ci::Build.new(attributes).tap do |job|
+ job.deployment = Seed::Deployment.new(job).to_resource
+ end
end
end
end
diff --git a/lib/gitlab/ci/pipeline/seed/deployment.rb b/lib/gitlab/ci/pipeline/seed/deployment.rb
new file mode 100644
index 00000000000..238cd845a0e
--- /dev/null
+++ b/lib/gitlab/ci/pipeline/seed/deployment.rb
@@ -0,0 +1,53 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Ci
+ module Pipeline
+ module Seed
+ class Deployment < Seed::Base
+ attr_reader :job, :environment
+
+ def initialize(job)
+ @job = job
+ @environment = Seed::Environment.new(@job)
+ end
+
+ def to_resource
+ return job.deployment if job.deployment
+ return unless job.starts_environment?
+
+ deployment = ::Deployment.new(attributes)
+ deployment.environment = environment.to_resource
+
+ # If there is a validation error on environment creation, such as
+ # the name contains invalid character, the job will fall back to a
+ # non-environment job.
+ return unless deployment.valid? && deployment.environment.valid?
+
+ deployment.cluster_id =
+ deployment.environment.deployment_platform&.cluster_id
+
+ # Allocate IID for deployments.
+ # This operation must be outside of transactions of pipeline creations.
+ deployment.ensure_project_iid!
+
+ deployment
+ end
+
+ private
+
+ def attributes
+ {
+ project: job.project,
+ user: job.user,
+ ref: job.ref,
+ tag: job.tag,
+ sha: job.sha,
+ on_stop: job.on_stop
+ }
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/ci/pipeline/seed/environment.rb b/lib/gitlab/ci/pipeline/seed/environment.rb
new file mode 100644
index 00000000000..813a9e9e399
--- /dev/null
+++ b/lib/gitlab/ci/pipeline/seed/environment.rb
@@ -0,0 +1,38 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Ci
+ module Pipeline
+ module Seed
+ class Environment < Seed::Base
+ attr_reader :job
+
+ def initialize(job)
+ @job = job
+ end
+
+ def to_resource
+ find_environment || ::Environment.new(attributes)
+ end
+
+ private
+
+ def find_environment
+ job.project.environments.find_by_name(expanded_environment_name)
+ end
+
+ def expanded_environment_name
+ job.expanded_environment_name
+ end
+
+ def attributes
+ {
+ project: job.project,
+ name: expanded_environment_name
+ }
+ end
+ end
+ end
+ end
+ end
+end