Commit ea9e89a6 authored by Dylan Griffith's avatar Dylan Griffith

Merge branch 'cat-fix-orphaned-jobartifacts-including-pipelines' into 'master'

Ensure cleanup job artifacts task does not include pipeline artifacts

See merge request gitlab-org/gitlab!81022
parents dc8e4cf6 1a36a02c
...@@ -99,6 +99,9 @@ module Gitlab ...@@ -99,6 +99,9 @@ module Gitlab
# ^--+--+- components of hashed storage project path # ^--+--+- components of hashed storage project path
cmd += %w[-mindepth 6 -maxdepth 6] cmd += %w[-mindepth 6 -maxdepth 6]
# Intentionally exclude pipeline artifacts which match the same path
cmd += %w[-not -path */pipelines/*]
# Artifact directories are named on their ID # Artifact directories are named on their ID
cmd += %w[-type d] cmd += %w[-type d]
......
...@@ -34,10 +34,33 @@ RSpec.describe Gitlab::Cleanup::OrphanJobArtifactFiles do ...@@ -34,10 +34,33 @@ RSpec.describe Gitlab::Cleanup::OrphanJobArtifactFiles do
cleanup.run! cleanup.run!
end end
it 'finds artifacts on disk' do it 'finds job artifacts on disk' do
artifact = create(:ci_job_artifact, :archive) artifact = create(:ci_job_artifact, :archive)
artifact_directory = artifact.file.relative_path.to_s.split('/')[0...6].join('/')
cleaned = []
expect(cleanup).to receive(:find_artifacts).and_wrap_original do |original_method, *args, &block|
original_method.call(*args) { |dir| cleaned << dir }
end
cleanup.run!
expect(cleaned).to include(/#{artifact_directory}/)
end
it 'does not find pipeline artifacts on disk' do
artifact = create(:ci_pipeline_artifact, :with_coverage_report)
# using 0...6 to match the -min/maxdepth 6 strictly, since this is one directory
# deeper than job artifacts, and .dirname would not match
artifact_directory = artifact.file.relative_path.to_s.split('/')[0...6].join('/')
expect(cleanup).to receive(:find_artifacts).and_wrap_original do |original_method, *args, &block|
# this can either _not_ yield at all, or yield with any other file
# except the one that we're explicitly excluding
original_method.call(*args) { |path| expect(path).not_to match(artifact_directory) }
end
expect(cleanup).to receive(:find_artifacts).and_yield(artifact.file.path)
cleanup.run! cleanup.run!
end end
......
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