Skip to content
Snippets Groups Projects

Persist source sha and target sha for merge pipelines

Merged Shinya Maeda requested to merge persist-source-sha-and-target-sha-for-pipelines into master
All threads resolved!
13 files
+ 279
7
Compare changes
  • Side-by-side
  • Inline
Files
13
+ 34
0
@@ -191,6 +191,22 @@ class Pipeline < ActiveRecord::Base
.sort_by_merge_request_pipelines
end
scope :triggered_by_merge_request, -> (merge_request) do
where(source: :merge_request, merge_request: merge_request)
end
scope :detached_merge_request_pipelines, -> (merge_request) do
triggered_by_merge_request(merge_request).where(target_sha: nil)
end
scope :merge_request_pipelines, -> (merge_request) do
triggered_by_merge_request(merge_request).where.not(target_sha: nil)
end
scope :mergeable_merge_request_pipelines, -> (merge_request) do
triggered_by_merge_request(merge_request).where(target_sha: merge_request.target_branch_sha)
end
# Returns the pipelines in descending order (= newest first), optionally
# limited to a number of references.
#
@@ -624,6 +640,8 @@ def predefined_variables
variables.append(key: 'CI_COMMIT_DESCRIPTION', value: git_commit_description.to_s)
if merge_request? && merge_request
variables.append(key: 'CI_MERGE_REQUEST_SOURCE_BRANCH_SHA', value: source_sha.to_s)
variables.append(key: 'CI_MERGE_REQUEST_TARGET_BRANCH_SHA', value: target_sha.to_s)
variables.concat(merge_request.predefined_variables)
end
end
@@ -708,6 +726,22 @@ def default_branch?
ref == project.default_branch
end
def triggered_by_merge_request?
merge_request? && merge_request_id.present?
end
def detached_merge_request_pipeline?
triggered_by_merge_request? && target_sha.nil?
end
def merge_request_pipeline?
triggered_by_merge_request? && target_sha.present?
end
def mergeable_merge_request_pipeline?
triggered_by_merge_request? && target_sha == merge_request.target_branch_sha
end
private
def ci_yaml_from_repo
Loading