lib/danger/ci_source/gitlab_ci.rb in danger-5.6.0 vs lib/danger/ci_source/gitlab_ci.rb in danger-5.6.1
- old
+ new
@@ -15,43 +15,50 @@
# ```
# ### Token Setup
#
# Add the `DANGER_GITLAB_API_TOKEN` to your pipeline env variables.
class GitLabCI < CI
+ attr_reader :project_url
+
def self.validates_as_ci?(env)
env.key? "GITLAB_CI"
end
def self.validates_as_pr?(env)
exists = [
- "GITLAB_CI", "CI_PROJECT_ID"
+ "GITLAB_CI", "CI_PROJECT_PATH"
].all? { |x| env[x] }
exists && determine_merge_request_id(env).to_i > 0
end
def self.determine_merge_request_id(env)
return env["CI_MERGE_REQUEST_ID"] if env["CI_MERGE_REQUEST_ID"]
return 0 unless env["CI_COMMIT_SHA"]
- project_id = env["CI_PROJECT_ID"]
+ project_path = env["CI_PROJECT_PATH"]
base_commit = env["CI_COMMIT_SHA"]
client = RequestSources::GitLab.new(nil, env).client
- merge_requests = client.merge_requests(project_id, state: :opened)
+ merge_requests = client.merge_requests(project_path, state: :opened)
merge_request = merge_requests.auto_paginate.find do |mr|
mr.sha == base_commit
end
merge_request.nil? ? 0 : merge_request.iid
end
def initialize(env)
- self.repo_slug = env["CI_PROJECT_ID"]
- self.pull_request_id = self.class.determine_merge_request_id(env)
+ @env = env
+ @repo_slug = env["CI_PROJECT_PATH"]
+ @project_url = env["CI_PROJECT_URL"]
end
def supported_request_sources
@supported_request_sources ||= [Danger::RequestSources::GitLab]
+ end
+
+ def pull_request_id
+ @pull_request_id ||= self.class.determine_merge_request_id(@env)
end
end
end