gitlab-org--gitlab-foss/app/workers/create_gpg_signature_worker.rb
Stan Hu 3fda119ea3 Make CreateGpgSignatureWorker backwards compatible with original method signature
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.
2018-08-02 16:06:17 -07:00

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