3fda119ea3
Older versions of GitPushService push a single commit SHA string to the queue, but Gitaly requires that the parameters sent by CreateGpgSignatureWorker are an array. It's possible to have old workers using this original signature or jobs in the retry queue that would fail if CreateGpgSignatureWorker can't handle the string form.
29 lines
788 B
Ruby
29 lines
788 B
Ruby
# frozen_string_literal: true
|
|
|
|
class CreateGpgSignatureWorker
|
|
include ApplicationWorker
|
|
|
|
def perform(commit_shas, project_id)
|
|
# Older versions of GitPushService may push a single commit ID on the stack.
|
|
# We need this to be backwards compatible.
|
|
commit_shas = Array(commit_shas)
|
|
|
|
return if commit_shas.empty?
|
|
|
|
project = Project.find_by(id: project_id)
|
|
return unless project
|
|
|
|
commits = project.commits_by(oids: commit_shas)
|
|
|
|
return if commits.empty?
|
|
|
|
# This calculates and caches the signature in the database
|
|
commits.each do |commit|
|
|
begin
|
|
Gitlab::Gpg::Commit.new(commit).signature
|
|
rescue => e
|
|
Rails.logger.error("Failed to create signature for commit #{commit.id}. Error: #{e.message}")
|
|
end
|
|
end
|
|
end
|
|
end
|