Commit 817a6089 authored by Robert Speicher's avatar Robert Speicher

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
parents 83c9752e 04c4445a
...@@ -21,8 +21,6 @@ ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment