Commit 871de0f1 authored by Kamil Trzcinski's avatar Kamil Trzcinski

Rename artifacts_* to legacy_artifacts_*

parent e2242cdf
...@@ -46,8 +46,8 @@ module Ci ...@@ -46,8 +46,8 @@ module Ci
scope :manual_actions, ->() { where(when: :manual, status: COMPLETED_STATUSES + [:manual]) } scope :manual_actions, ->() { where(when: :manual, status: COMPLETED_STATUSES + [:manual]) }
scope :ref_protected, -> { where(protected: true) } scope :ref_protected, -> { where(protected: true) }
mount_uploader :artifacts_file, ArtifactUploader mount_uploader :legacy_artifacts_file, LegacyArtifactUploader, mount_on: :artifacts_file
mount_uploader :artifacts_metadata, ArtifactUploader mount_uploader :legacy_artifacts_metadata, LegacyArtifactUploader, mount_on: :artifacts_metadata
acts_as_taggable acts_as_taggable
......
...@@ -3,11 +3,15 @@ ...@@ -3,11 +3,15 @@
# Meant to be prepended so the interface can stay the same # Meant to be prepended so the interface can stay the same
module ArtifactMigratable module ArtifactMigratable
def artifacts_file def artifacts_file
job_archive&.file || super job_archive&.file || legacy_artifacts_file
end
def artifacts_file?
job_archive&.file? || legacy_artifacts_file?
end end
def artifacts_metadata def artifacts_metadata
job_metadata&.file || super job_metadata&.file || legacy_artifacts_metadata
end end
def artifacts? def artifacts?
...@@ -19,14 +23,14 @@ module ArtifactMigratable ...@@ -19,14 +23,14 @@ module ArtifactMigratable
end end
def artifacts_file_changed? def artifacts_file_changed?
job_archive&.file_changed? || super job_archive&.file_changed? || attribute_changed?(:artifacts_file)
end end
def remove_artifacts_file! def remove_artifacts_file!
if job_archive if job_archive
job_archive.destroy job_archive.destroy
else else
super remove_legacy_artifacts_file!
end end
end end
...@@ -34,7 +38,7 @@ module ArtifactMigratable ...@@ -34,7 +38,7 @@ module ArtifactMigratable
if job_metadata if job_metadata
job_metadata.destroy job_metadata.destroy
else else
super remove_legacy_artifacts_metadata!
end end
end end
......
...@@ -9,30 +9,22 @@ class JobArtifactUploader < GitlabUploader ...@@ -9,30 +9,22 @@ class JobArtifactUploader < GitlabUploader
File.join(self.local_artifacts_store, 'tmp/uploads/') File.join(self.local_artifacts_store, 'tmp/uploads/')
end end
def initialize(artifact, _field)
@artifact = artifact
end
def size def size
return super if @artifact.size.nil? return super if model.size.nil?
@artifact.size
end
def store_dir model.size
File.join(self.class.local_artifacts_store, default_path)
end end
private private
def default_path def default_path
creation_date = @artifact.created_at.utc.strftime('%Y_%m_%d') creation_date = model.created_at.utc.strftime('%Y_%m_%d')
File.join(disk_hash[0..1], disk_hash[2..3], disk_hash, File.join(disk_hash[0..1], disk_hash[2..3], disk_hash,
creation_date, @artifact.job_id.to_s, @artifact.id.to_s) creation_date, model.job_id.to_s, model.id.to_s)
end end
def disk_hash def disk_hash
@disk_hash ||= Digest::SHA2.hexdigest(@artifact.project_id.to_s) @disk_hash ||= Digest::SHA2.hexdigest(model.project_id.to_s)
end end
end end
class ArtifactUploader < GitlabUploader class LegacyArtifactUploader < GitlabUploader
storage :file storage :file
attr_reader :job, :field def self.local_store_path
def self.local_artifacts_store
Gitlab.config.artifacts.path Gitlab.config.artifacts.path
end end
...@@ -11,29 +9,25 @@ class ArtifactUploader < GitlabUploader ...@@ -11,29 +9,25 @@ class ArtifactUploader < GitlabUploader
File.join(self.local_artifacts_store, 'tmp/uploads/') File.join(self.local_artifacts_store, 'tmp/uploads/')
end end
def initialize(job, field)
@job, @field = job, field
end
def store_dir def store_dir
default_local_path default_local_path
end end
def cache_dir def cache_dir
File.join(self.class.local_artifacts_store, 'tmp/cache') File.join(self.class.local_store_path, 'tmp/cache')
end end
def work_dir def work_dir
File.join(self.class.local_artifacts_store, 'tmp/work') File.join(self.class.local_store_path, 'tmp/work')
end end
private private
def default_local_path def default_local_path
File.join(self.class.local_artifacts_store, default_path) File.join(self.class.local_store_path, default_path)
end end
def default_path def default_path
File.join(job.created_at.utc.strftime('%Y_%m'), job.project_id.to_s, job.id.to_s) File.join(model.created_at.utc.strftime('%Y_%m'), model.project_id.to_s, model.id.to_s)
end end
end end
...@@ -124,11 +124,11 @@ class Gitlab::Seeder::Pipelines ...@@ -124,11 +124,11 @@ class Gitlab::Seeder::Pipelines
return unless %w[build test].include?(build.stage) return unless %w[build test].include?(build.stage)
artifacts_cache_file(artifacts_archive_path) do |file| artifacts_cache_file(artifacts_archive_path) do |file|
build.artifacts_file = file build.job_artifacts.build(project: build.project, file_type: :archive, file: file)
end end
artifacts_cache_file(artifacts_metadata_path) do |file| artifacts_cache_file(artifacts_metadata_path) do |file|
build.artifacts_metadata = file build.job_artifacts.build(project: build.project, file_type: :metadata, file: file)
end end
end end
......
...@@ -44,8 +44,8 @@ class Spinach::Features::ProjectPages < Spinach::FeatureSteps ...@@ -44,8 +44,8 @@ class Spinach::Features::ProjectPages < Spinach::FeatureSteps
project: @project, project: @project,
pipeline: pipeline, pipeline: pipeline,
ref: 'HEAD', ref: 'HEAD',
artifacts_file: fixture_file_upload(Rails.root + 'spec/fixtures/pages.zip'), legacy_artifacts_file: fixture_file_upload(Rails.root + 'spec/fixtures/pages.zip'),
artifacts_metadata: fixture_file_upload(Rails.root + 'spec/fixtures/pages.zip.meta') legacy_artifacts_metadata: fixture_file_upload(Rails.root + 'spec/fixtures/pages.zip.meta')
) )
result = ::Projects::UpdatePagesService.new(@project, build).execute result = ::Projects::UpdatePagesService.new(@project, build).execute
......
...@@ -37,13 +37,13 @@ module SharedBuilds ...@@ -37,13 +37,13 @@ module SharedBuilds
step 'recent build has artifacts available' do step 'recent build has artifacts available' do
artifacts = Rails.root + 'spec/fixtures/ci_build_artifacts.zip' artifacts = Rails.root + 'spec/fixtures/ci_build_artifacts.zip'
archive = fixture_file_upload(artifacts, 'application/zip') archive = fixture_file_upload(artifacts, 'application/zip')
@build.update_attributes(artifacts_file: archive) @build.update_attributes(legacy_artifacts_file: archive)
end end
step 'recent build has artifacts metadata available' do step 'recent build has artifacts metadata available' do
metadata = Rails.root + 'spec/fixtures/ci_build_artifacts_metadata.gz' metadata = Rails.root + 'spec/fixtures/ci_build_artifacts_metadata.gz'
gzip = fixture_file_upload(metadata, 'application/x-gzip') gzip = fixture_file_upload(metadata, 'application/x-gzip')
@build.update_attributes(artifacts_metadata: gzip) @build.update_attributes(legacy_artifacts_metadata: gzip)
end end
step 'recent build has a build trace' do step 'recent build has a build trace' do
......
...@@ -3,7 +3,7 @@ require 'backup/files' ...@@ -3,7 +3,7 @@ require 'backup/files'
module Backup module Backup
class Artifacts < Files class Artifacts < Files
def initialize def initialize
super('artifacts', ArtifactUploader.local_artifacts_store) super('artifacts', LegacyArtifactUploader.local_store_path)
end end
def create_files_dir def create_files_dir
......
...@@ -58,7 +58,7 @@ module Gitlab ...@@ -58,7 +58,7 @@ module Gitlab
end end
def artifact_upload_ok def artifact_upload_ok
{ TempPath: ArtifactUploader.artifacts_upload_path } { TempPath: LegacyArtifactUploader.artifacts_upload_path }
end end
def send_git_blob(repository, blob) def send_git_blob(repository, blob)
......
...@@ -154,6 +154,17 @@ FactoryGirl.define do ...@@ -154,6 +154,17 @@ FactoryGirl.define do
runner factory: :ci_runner runner factory: :ci_runner
end end
trait :legacy_artifacts do
after(:create) do |build, _|
build.update!(
legacy_artifacts_file: fixture_file_upload(
Rails.root.join('spec/fixtures/ci_build_artifacts.zip'), 'application/zip'),
legacy_artifacts_metadata: fixture_file_upload(
Rails.root.join('spec/fixtures/ci_build_artifacts_metadata.gz'), 'application/x-gzip')
)
end
end
trait :artifacts do trait :artifacts do
after(:create) do |build| after(:create) do |build|
create(:ci_job_artifact, job: build) create(:ci_job_artifact, job: build)
......
...@@ -89,7 +89,7 @@ describe 'Commits' do ...@@ -89,7 +89,7 @@ describe 'Commits' do
context 'Download artifacts' do context 'Download artifacts' do
before do before do
build.update_attributes(artifacts_file: artifacts_file) build.update_attributes(legacy_artifacts_file: artifacts_file)
end end
it do it do
...@@ -146,7 +146,7 @@ describe 'Commits' do ...@@ -146,7 +146,7 @@ describe 'Commits' do
context "when logged as reporter" do context "when logged as reporter" do
before do before do
project.team << [user, :reporter] project.team << [user, :reporter]
build.update_attributes(artifacts_file: artifacts_file) build.update_attributes(legacy_artifacts_file: artifacts_file)
visit pipeline_path(pipeline) visit pipeline_path(pipeline)
end end
...@@ -168,7 +168,7 @@ describe 'Commits' do ...@@ -168,7 +168,7 @@ describe 'Commits' do
project.update( project.update(
visibility_level: Gitlab::VisibilityLevel::INTERNAL, visibility_level: Gitlab::VisibilityLevel::INTERNAL,
public_builds: false) public_builds: false)
build.update_attributes(artifacts_file: artifacts_file) build.update_attributes(legacy_artifacts_file: artifacts_file)
visit pipeline_path(pipeline) visit pipeline_path(pipeline)
end end
......
...@@ -28,14 +28,14 @@ feature 'Mini Pipeline Graph', :js do ...@@ -28,14 +28,14 @@ feature 'Mini Pipeline Graph', :js do
let(:artifacts_file2) { fixture_file_upload(Rails.root + 'spec/fixtures/dk.png', 'image/png') } let(:artifacts_file2) { fixture_file_upload(Rails.root + 'spec/fixtures/dk.png', 'image/png') }
before do before do
create(:ci_build, pipeline: pipeline, artifacts_file: artifacts_file1) create(:ci_build, pipeline: pipeline, legacy_artifacts_file: artifacts_file1)
create(:ci_build, pipeline: pipeline, when: 'manual') create(:ci_build, pipeline: pipeline, when: 'manual')
end end
it 'avoids repeated database queries' do it 'avoids repeated database queries' do
before = ActiveRecord::QueryRecorder.new { visit_merge_request(:json) } before = ActiveRecord::QueryRecorder.new { visit_merge_request(:json) }
create(:ci_build, pipeline: pipeline, artifacts_file: artifacts_file2) create(:ci_build, pipeline: pipeline, legacy_artifacts_file: artifacts_file2)
create(:ci_build, pipeline: pipeline, when: 'manual') create(:ci_build, pipeline: pipeline, when: 'manual')
after = ActiveRecord::QueryRecorder.new { visit_merge_request(:json) } after = ActiveRecord::QueryRecorder.new { visit_merge_request(:json) }
......
...@@ -187,7 +187,7 @@ feature 'Jobs' do ...@@ -187,7 +187,7 @@ feature 'Jobs' do
context "Download artifacts" do context "Download artifacts" do
before do before do
job.update_attributes(artifacts_file: artifacts_file) job.update_attributes(legacy_artifacts_file: artifacts_file)
visit project_job_path(project, job) visit project_job_path(project, job)
end end
...@@ -198,7 +198,7 @@ feature 'Jobs' do ...@@ -198,7 +198,7 @@ feature 'Jobs' do
context 'Artifacts expire date' do context 'Artifacts expire date' do
before do before do
job.update_attributes(artifacts_file: artifacts_file, job.update_attributes(legacy_artifacts_file: artifacts_file,
artifacts_expire_at: expire_at) artifacts_expire_at: expire_at)
visit project_job_path(project, job) visit project_job_path(project, job)
...@@ -422,14 +422,14 @@ feature 'Jobs' do ...@@ -422,14 +422,14 @@ feature 'Jobs' do
describe "GET /:project/jobs/:id/download" do describe "GET /:project/jobs/:id/download" do
before do before do
job.update_attributes(artifacts_file: artifacts_file) job.update_attributes(legacy_artifacts_file: artifacts_file)
visit project_job_path(project, job) visit project_job_path(project, job)
click_link 'Download' click_link 'Download'
end end
context "Build from other project" do context "Build from other project" do
before do before do
job2.update_attributes(artifacts_file: artifacts_file) job2.update_attributes(legacy_artifacts_file: artifacts_file)
visit download_project_job_artifacts_path(project, job2) visit download_project_job_artifacts_path(project, job2)
end end
......
...@@ -22,8 +22,8 @@ describe Projects::UpdatePagesService do ...@@ -22,8 +22,8 @@ describe Projects::UpdatePagesService do
end end
before do before do
build.update_attributes(artifacts_file: file) build.update_attributes(legacy_artifacts_file: file)
build.update_attributes(artifacts_metadata: metadata) build.update_attributes(legacy_artifacts_metadata: metadata)
end end
describe 'pages artifacts' do describe 'pages artifacts' do
...@@ -75,12 +75,12 @@ describe Projects::UpdatePagesService do ...@@ -75,12 +75,12 @@ describe Projects::UpdatePagesService do
it 'fails if sha on branch is not latest' do it 'fails if sha on branch is not latest' do
pipeline.update_attributes(sha: 'old_sha') pipeline.update_attributes(sha: 'old_sha')
build.update_attributes(artifacts_file: file) build.update_attributes(legacy_artifacts_file: file)
expect(execute).not_to eq(:success) expect(execute).not_to eq(:success)
end end
it 'fails for empty file fails' do it 'fails for empty file fails' do
build.update_attributes(artifacts_file: empty_file) build.update_attributes(legacy_artifacts_file: empty_file)
expect(execute).not_to eq(:success) expect(execute).not_to eq(:success)
end end
end end
...@@ -97,7 +97,7 @@ describe Projects::UpdatePagesService do ...@@ -97,7 +97,7 @@ describe Projects::UpdatePagesService do
end end
it 'fails for invalid archive' do it 'fails for invalid archive' do
build.update_attributes(artifacts_file: invalid_file) build.update_attributes(legacy_artifacts_file: invalid_file)
expect(execute).not_to eq(:success) expect(execute).not_to eq(:success)
end end
...@@ -108,8 +108,8 @@ describe Projects::UpdatePagesService do ...@@ -108,8 +108,8 @@ describe Projects::UpdatePagesService do
file = fixture_file_upload(Rails.root + 'spec/fixtures/pages.zip') file = fixture_file_upload(Rails.root + 'spec/fixtures/pages.zip')
metafile = fixture_file_upload(Rails.root + 'spec/fixtures/pages.zip.meta') metafile = fixture_file_upload(Rails.root + 'spec/fixtures/pages.zip.meta')
build.update_attributes(artifacts_file: file) build.update_attributes(legacy_artifacts_file: file)
build.update_attributes(artifacts_metadata: metafile) build.update_attributes(legacy_artifacts_metadata: metafile)
allow(build).to receive(:artifacts_metadata_entry) allow(build).to receive(:artifacts_metadata_entry)
.and_return(metadata) .and_return(metadata)
......
require 'rails_helper' require 'rails_helper'
describe ArtifactUploader do describe LegacyArtifactUploader do
set(:job) { create(:ci_build) } set(:job) { create(:ci_build) }
let(:uploader) { described_class.new(job, :artifacts_file) } let(:uploader) { described_class.new(job, :artifacts_file) }
let(:path) { Gitlab.config.artifacts.path } let(:path) { Gitlab.config.artifacts.path }
......
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