Send credentials array with build data

This commit is contained in:
Tomasz Maczukin 2016-11-20 20:43:50 +01:00
parent 596bbf670c
commit e3fb074022
No known key found for this signature in database
GPG Key ID: 7E9EB2E4B0F625CD
5 changed files with 58 additions and 19 deletions

View File

@ -448,8 +448,19 @@ module Ci
]
end
def credentials
[build_container_registry_credentials].compact
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

View File

@ -1,4 +1,4 @@
---
title: Send registry_url with build data to GitLab Runner
title: Send credentials (currently for registry only) with build data to GitLab Runner
merge_request: 7474
author:

View File

@ -32,6 +32,10 @@ module Ci
expose :artifacts_file, using: ArtifactFile, if: ->(build, _) { build.artifacts? }
end
class BuildCredentials < Grape::Entity
expose :type, :url, :username, :password
end
class BuildDetails < Build
expose :commands
expose :repo_url
@ -51,9 +55,7 @@ module Ci
expose :variables
expose :depends_on_builds, using: Build
expose :registry_url, if: ->(_, _) { Gitlab.config.registry.enabled } do |_|
Gitlab.config.registry.host_port
end
expose :credentials, using: BuildCredentials
end
class Runner < Grape::Entity

View File

@ -0,0 +1,16 @@
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

View File

@ -58,28 +58,38 @@ describe Ci::API::API do
expect { register_builds }.to change { runner.reload.contacted_at }
end
context 'when registry is enabled' do
before do
stub_container_registry_config(enabled: true, host_port: 'registry.example.com:5005')
context 'registry credentials' do
let(:registry_credentials) do
{ 'type' => 'docker-registry',
'url' => 'registry.example.com:5005',
'username' => 'gitlab-ci-token',
'password' => build.token }
end
it 'sends registry_url key' do
register_builds info: { platform: :darwin }
context 'when registry is enabled' do
before do
stub_container_registry_config(enabled: true, host_port: 'registry.example.com:5005')
end
expect(json_response).to have_key('registry_url')
expect(json_response['registry_url']).to eq("registry.example.com:5005")
end
end
it 'sends registry credentials key' do
register_builds info: { platform: :darwin }
context 'when registry is disabled' do
before do
stub_container_registry_config(enabled: false, host_port: 'registry.example.com:5005')
expect(json_response).to have_key('credentials')
expect(json_response['credentials']).to include(registry_credentials)
end
end
it 'does not send registry_url key' do
register_builds info: { platform: :darwin }
context 'when registry is disabled' do
before do
stub_container_registry_config(enabled: false, host_port: 'registry.example.com:5005')
end
expect(json_response).not_to have_key('registry_url')
it 'does not send registry credentials' do
register_builds info: { platform: :darwin }
expect(json_response).to have_key('credentials')
expect(json_response['credentials']).not_to include(registry_credentials)
end
end
end
end