summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Maczukin <tomasz@maczukin.pl>2016-11-21 16:02:08 +0100
committerTomasz Maczukin <tomasz@maczukin.pl>2016-11-21 17:28:17 +0100
commit9a3603b1dfb172cd20ce3277aeff6bff4645093f (patch)
tree0004db92d03c7fc13e508128c211a139af673b26
parente3fb0740228219433a4623dc0b9325785e23ae16 (diff)
downloadgitlab-ce-feature/send-registry-address-with-build-payload.tar.gz
Add Gitlab::Ci::Build::Credentials module with build credentials abstractionfeature/send-registry-address-with-build-payload
-rw-r--r--app/models/ci/build.rb9
-rw-r--r--lib/gitlab/ci/build/credentials.rb16
-rw-r--r--lib/gitlab/ci/build/credentials/base.rb13
-rw-r--r--lib/gitlab/ci/build/credentials/docker_registry.rb24
-rw-r--r--lib/gitlab/ci/build/credentials/factory.rb27
-rw-r--r--spec/requests/ci/api/builds_spec.rb2
6 files changed, 66 insertions, 25 deletions
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index ac3fff3fb0c..7403a46969f 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -449,18 +449,11 @@ module Ci
end
def credentials
- [build_container_registry_credentials].compact
+ Gitlab::Ci::Build::Credentials::Factory.new(self).create!
end
private
- def build_container_registry_credentials
- return unless Gitlab.config.registry.enabled
-
- Gitlab::Ci::Build::Credentials.new('docker-registry', Gitlab.config.registry.host_port,
- 'gitlab-ci-token', token)
- end
-
def update_artifacts_size
self.artifacts_size = if artifacts_file.exists?
artifacts_file.size
diff --git a/lib/gitlab/ci/build/credentials.rb b/lib/gitlab/ci/build/credentials.rb
deleted file mode 100644
index 14f9e8d7244..00000000000
--- a/lib/gitlab/ci/build/credentials.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-module Gitlab
- module Ci
- module Build
- class Credentials
- attr_accessor :type, :url, :username, :password
-
- def initialize(type, url, username, password)
- @type = type
- @url = url
- @username = username
- @password = password
- end
- end
- end
- end
-end
diff --git a/lib/gitlab/ci/build/credentials/base.rb b/lib/gitlab/ci/build/credentials/base.rb
new file mode 100644
index 00000000000..29a7a27c963
--- /dev/null
+++ b/lib/gitlab/ci/build/credentials/base.rb
@@ -0,0 +1,13 @@
+module Gitlab
+ module Ci
+ module Build
+ module Credentials
+ class Base
+ def type
+ self.class.name.demodulize.underscore
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/ci/build/credentials/docker_registry.rb b/lib/gitlab/ci/build/credentials/docker_registry.rb
new file mode 100644
index 00000000000..9301320d936
--- /dev/null
+++ b/lib/gitlab/ci/build/credentials/docker_registry.rb
@@ -0,0 +1,24 @@
+module Gitlab
+ module Ci
+ module Build
+ module Credentials
+ class DockerRegistry < Base
+ attr_reader :username, :password
+
+ def initialize(build)
+ @username = 'gitlab-ci-token'
+ @password = build.token
+ end
+
+ def url
+ Gitlab.config.registry.host_port
+ end
+
+ def present?
+ Gitlab.config.registry.enabled
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/ci/build/credentials/factory.rb b/lib/gitlab/ci/build/credentials/factory.rb
new file mode 100644
index 00000000000..65b84037407
--- /dev/null
+++ b/lib/gitlab/ci/build/credentials/factory.rb
@@ -0,0 +1,27 @@
+module Gitlab
+ module Ci
+ module Build
+ module Credentials
+ class Factory
+ PROVIDERS = [
+ DockerRegistry,
+ ]
+
+ def initialize(build)
+ @build = build
+ end
+
+ def create!
+ credentials.select(&:present?)
+ end
+
+ private
+
+ def credentials
+ PROVIDERS.map { |provider| provider.new(@build) }
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/spec/requests/ci/api/builds_spec.rb b/spec/requests/ci/api/builds_spec.rb
index c5e498601e6..f11aa656a06 100644
--- a/spec/requests/ci/api/builds_spec.rb
+++ b/spec/requests/ci/api/builds_spec.rb
@@ -60,7 +60,7 @@ describe Ci::API::API do
context 'registry credentials' do
let(:registry_credentials) do
- { 'type' => 'docker-registry',
+ { 'type' => 'docker_registry',
'url' => 'registry.example.com:5005',
'username' => 'gitlab-ci-token',
'password' => build.token }