diff --git a/app/services/update_deployment_service.rb b/app/services/update_deployment_service.rb index aa7fcca1e2ab8a05f42d95aca8eae879a3375d0d..78ff5f8654f69825ae9f45aaafd3e3de4e11a747 100644 --- a/app/services/update_deployment_service.rb +++ b/app/services/update_deployment_service.rb @@ -51,3 +51,5 @@ def action environment_options[:action] || 'start' end end + +UpdateDeploymentService.prepend(EE::UpdateDeploymentService) diff --git a/ee/app/services/ee/update_deployment_service.rb b/ee/app/services/ee/update_deployment_service.rb new file mode 100644 index 0000000000000000000000000000000000000000..562e4ada2e8b78ab3f145a8177c68fb4176adcb4 --- /dev/null +++ b/ee/app/services/ee/update_deployment_service.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module EE + module UpdateDeploymentService + extend ::Gitlab::Utils::Override + + override :execute + def execute + super.tap do |deployment| + deployment.project.repository.log_geo_updated_event + end + end + end +end diff --git a/ee/changelogs/unreleased/9227-geo-primary-checksums-are-not-recalculated-after-deployment-refs-are-created.yml b/ee/changelogs/unreleased/9227-geo-primary-checksums-are-not-recalculated-after-deployment-refs-are-created.yml new file mode 100644 index 0000000000000000000000000000000000000000..bff9029829c8630410f3a66e0328c832714c2f54 --- /dev/null +++ b/ee/changelogs/unreleased/9227-geo-primary-checksums-are-not-recalculated-after-deployment-refs-are-created.yml @@ -0,0 +1,5 @@ +--- +title: Geo - Reset the verification checksum after deployment refs are created +merge_request: 10160 +author: +type: fixed diff --git a/ee/spec/services/ee/update_deployment_service_spec.rb b/ee/spec/services/ee/update_deployment_service_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..6a9c9977cd6adf8768816e81e25d29bf375d2b94 --- /dev/null +++ b/ee/spec/services/ee/update_deployment_service_spec.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe UpdateDeploymentService do + include ::EE::GeoHelpers + + let(:primary) { create(:geo_node, :primary) } + let(:project) { create(:project, :repository) } + let(:repository_state) { create(:repository_state, :repository_verified, project: project) } + let!(:deployment) { create(:deployment, :success, project: project) } + + before do + stub_current_geo_node(primary) + end + + subject { described_class.new(deployment) } + + describe '#execute' do + it 'triggers a Geo event about the new deployment ref' do + expect_next_instance_of(Geo::RepositoryUpdatedService) do |service| + expect(service).to receive(:execute) + end + + subject.execute + end + + it 'resets the repository verification checksum' do + expect { subject.execute }.to change { repository_state.reload.repository_verification_checksum }.to(nil) + end + + it 'returns the deployment' do + expect(subject.execute).to eq(deployment) + end + end +end