Merge branch 'get-ci-token-from-ci-projects' into 'master'
Get CI token from ci projects This fixes problem when GitLabCiService had different token than stored in Ci::Project. See merge request !1425
This commit is contained in:
commit
817a60894a
4 changed files with 12 additions and 5 deletions
|
@ -21,8 +21,6 @@
|
||||||
class GitlabCiService < CiService
|
class GitlabCiService < CiService
|
||||||
include Gitlab::Application.routes.url_helpers
|
include Gitlab::Application.routes.url_helpers
|
||||||
|
|
||||||
prop_accessor :token
|
|
||||||
|
|
||||||
after_save :compose_service_hook, if: :activated?
|
after_save :compose_service_hook, if: :activated?
|
||||||
|
|
||||||
def compose_service_hook
|
def compose_service_hook
|
||||||
|
@ -53,6 +51,12 @@ class GitlabCiService < CiService
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def token
|
||||||
|
if project.gitlab_ci_project.present?
|
||||||
|
project.gitlab_ci_project.token
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def get_ci_commit(sha, ref)
|
def get_ci_commit(sha, ref)
|
||||||
Ci::Project.find(project.gitlab_ci_project).commits.find_by_sha_and_ref!(sha, ref)
|
Ci::Project.find(project.gitlab_ci_project).commits.find_by_sha_and_ref!(sha, ref)
|
||||||
end
|
end
|
||||||
|
|
|
@ -10,7 +10,7 @@ module Ci
|
||||||
|
|
||||||
gl_project = ::Project.find(@project.gitlab_id)
|
gl_project = ::Project.find(@project.gitlab_id)
|
||||||
gl_project.build_missing_services
|
gl_project.build_missing_services
|
||||||
gl_project.gitlab_ci_service.update_attributes(active: true, token: @project.token)
|
gl_project.gitlab_ci_service.update_attributes(active: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
if forked_project
|
if forked_project
|
||||||
|
|
|
@ -175,11 +175,14 @@ describe Grack::Auth do
|
||||||
|
|
||||||
context "when a gitlab ci token is provided" do
|
context "when a gitlab ci token is provided" do
|
||||||
let(:token) { "123" }
|
let(:token) { "123" }
|
||||||
|
let(:gitlab_ci_project) { FactoryGirl.create :ci_project, token: token }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
|
project.gitlab_ci_project = gitlab_ci_project
|
||||||
|
project.save
|
||||||
|
|
||||||
gitlab_ci_service = project.build_gitlab_ci_service
|
gitlab_ci_service = project.build_gitlab_ci_service
|
||||||
gitlab_ci_service.active = true
|
gitlab_ci_service.active = true
|
||||||
gitlab_ci_service.token = token
|
|
||||||
gitlab_ci_service.save
|
gitlab_ci_service.save
|
||||||
|
|
||||||
env["HTTP_AUTHORIZATION"] = ActionController::HttpAuthentication::Basic.encode_credentials("gitlab-ci-token", token)
|
env["HTTP_AUTHORIZATION"] = ActionController::HttpAuthentication::Basic.encode_credentials("gitlab-ci-token", token)
|
||||||
|
|
|
@ -89,7 +89,7 @@ describe API::API, api: true do
|
||||||
|
|
||||||
it 'returns projects in the correct order when ci_enabled_first parameter is passed' do
|
it 'returns projects in the correct order when ci_enabled_first parameter is passed' do
|
||||||
[project, project2, project3].each{ |project| project.build_missing_services }
|
[project, project2, project3].each{ |project| project.build_missing_services }
|
||||||
project2.gitlab_ci_service.update(active: true, token: "token")
|
project2.gitlab_ci_service.update(active: true)
|
||||||
get api('/projects', user), { ci_enabled_first: 'true' }
|
get api('/projects', user), { ci_enabled_first: 'true' }
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
expect(json_response).to be_an Array
|
expect(json_response).to be_an Array
|
||||||
|
|
Loading…
Reference in a new issue