Commit 33e134f0 authored by David Fernandez's avatar David Fernandez

Merge branch 'debian_plug_sign' into 'master'

Plug Debian SignDistributionService in GenerateDistributionService

See merge request gitlab-org/gitlab!66907
parents 21630e88 4457d342
...@@ -161,28 +161,37 @@ module Packages ...@@ -161,28 +161,37 @@ module Packages
end end
def generate_release def generate_release
@distribution.file = CarrierWaveStringFile.new(release_header + release_sums) @distribution.key || @distribution.create_key(GenerateDistributionKeyService.new.execute)
@distribution.file = CarrierWaveStringFile.new(release_content)
@distribution.file_signature = SignDistributionService.new(@distribution, release_content, detach: true).execute
@distribution.signed_file = CarrierWaveStringFile.new(
SignDistributionService.new(@distribution, release_content).execute
)
@distribution.updated_at = release_date @distribution.updated_at = release_date
@distribution.save! @distribution.save!
end end
def release_header def release_content
strong_memoize(:release_header) do strong_memoize(:release_content) do
[ release_header + release_sums
%w[origin label suite version codename].map do |attribute|
rfc822_field(attribute.capitalize, @distribution.attributes[attribute])
end,
rfc822_field('Date', release_date.to_formatted_s(:rfc822)),
valid_until_field,
rfc822_field('NotAutomatic', !@distribution.automatic, !@distribution.automatic),
rfc822_field('ButAutomaticUpgrades', @distribution.automatic_upgrades, !@distribution.automatic && @distribution.automatic_upgrades),
rfc822_field('Architectures', @distribution.architectures.map { |architecture| architecture.name }.sort.join(' ')),
rfc822_field('Components', @distribution.components.map { |component| component.name }.sort.join(' ')),
rfc822_field('Description', @distribution.description)
].flatten.compact.join('')
end end
end end
def release_header
[
%w[origin label suite version codename].map do |attribute|
rfc822_field(attribute.capitalize, @distribution.attributes[attribute])
end,
rfc822_field('Date', release_date.to_formatted_s(:rfc822)),
valid_until_field,
rfc822_field('NotAutomatic', !@distribution.automatic, !@distribution.automatic),
rfc822_field('ButAutomaticUpgrades', @distribution.automatic_upgrades, !@distribution.automatic && @distribution.automatic_upgrades),
rfc822_field('Architectures', @distribution.architectures.map { |architecture| architecture.name }.sort.join(' ')),
rfc822_field('Components', @distribution.components.map { |component| component.name }.sort.join(' ')),
rfc822_field('Description', @distribution.description)
].flatten.compact.join('')
end
def release_date def release_date
strong_memoize(:release_date) do strong_memoize(:release_date) do
Time.now.utc Time.now.utc
......
...@@ -5,10 +5,10 @@ module Packages ...@@ -5,10 +5,10 @@ module Packages
class SignDistributionService class SignDistributionService
include Gitlab::Utils::StrongMemoize include Gitlab::Utils::StrongMemoize
def initialize(distribution, content, params: {}) def initialize(distribution, content, detach: false)
@distribution = distribution @distribution = distribution
@content = content @content = content
@params = params @detach = detach
end end
def execute def execute
...@@ -16,7 +16,7 @@ module Packages ...@@ -16,7 +16,7 @@ module Packages
sig_mode = GPGME::GPGME_SIG_MODE_CLEAR sig_mode = GPGME::GPGME_SIG_MODE_CLEAR
sig_mode = GPGME::GPGME_SIG_MODE_DETACH if @params[:detach] sig_mode = GPGME::GPGME_SIG_MODE_DETACH if @detach
Gitlab::Gpg.using_tmp_keychain do Gitlab::Gpg.using_tmp_keychain do
GPGME::Ctx.new( GPGME::Ctx.new(
......
...@@ -12,13 +12,7 @@ RSpec.describe Packages::Debian::GenerateDistributionService do ...@@ -12,13 +12,7 @@ RSpec.describe Packages::Debian::GenerateDistributionService do
context "for #{container_type}" do context "for #{container_type}" do
include_context 'with Debian distribution', container_type include_context 'with Debian distribution', container_type
context 'with Debian components and architectures' do it_behaves_like 'Generate Debian Distribution and component files'
it_behaves_like 'Generate Debian Distribution and component files'
end
context 'without components and architectures' do
it_behaves_like 'Generate minimal Debian Distribution'
end
end end
end end
end end
......
...@@ -6,12 +6,11 @@ RSpec.describe Packages::Debian::SignDistributionService do ...@@ -6,12 +6,11 @@ RSpec.describe Packages::Debian::SignDistributionService do
let_it_be(:group) { create(:group, :public) } let_it_be(:group) { create(:group, :public) }
let(:content) { FFaker::Lorem.paragraph } let(:content) { FFaker::Lorem.paragraph }
let(:params) { {} } let(:service) { described_class.new(distribution, content, detach: detach) }
let(:service) { described_class.new(distribution, content, params: params) }
shared_examples 'Sign Distribution' do |container_type, detach: false| shared_examples 'Sign Distribution' do |container_type, detach: false|
context "for #{container_type} detach=#{detach}" do context "for #{container_type} detach=#{detach}" do
let(:params) { { detach: detach } } let(:detach) { detach }
if container_type == :group if container_type == :group
let_it_be(:distribution) { create('debian_group_distribution', container: group) } let_it_be(:distribution) { create('debian_group_distribution', container: group) }
......
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