diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index d9544a4a279f4e0dd6cc7ed82f2d0c295c7ea52a..2588274355b217f751a54276a257fe6f534a1f75 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -5,7 +5,6 @@ module Ci belongs_to :erased_by, class_name: 'User' serialize :options - serialize :artifacts_sizes, JSON validates :coverage, numericality: true, allow_blank: true validates_presence_of :ref @@ -329,19 +328,13 @@ module Ci artifacts? && artifacts_metadata.exists? end - def artifacts_metadata_sizes - return unless artifacts_metadata? - - entries = new_artifacts_metadata('', recursive: true).find_entries! - - entries.inject({}) do |result, (path, metadata)| - result[path] = metadata[:size] if metadata[:size] - result - end - end - def artifacts_metadata_entry(path, **options) - new_artifacts_metadata(path, **options).to_entry + metadata = Gitlab::Ci::Build::Artifacts::Metadata.new( + artifacts_metadata.path, + path, + **options) + + metadata.to_entry end def erase_artifacts! @@ -387,13 +380,6 @@ module Ci private - def new_artifacts_metadata(path, **options) - Gitlab::Ci::Build::Artifacts::Metadata.new( - artifacts_metadata.path, - path, - **options) - end - def erase_trace! self.trace = nil end diff --git a/db/migrate/20160628085157_add_artifacts_sizes_to_ci_builds.rb b/db/migrate/20160628085157_add_artifacts_size_to_ci_builds.rb similarity index 57% rename from db/migrate/20160628085157_add_artifacts_sizes_to_ci_builds.rb rename to db/migrate/20160628085157_add_artifacts_size_to_ci_builds.rb index bad260b83eae0924ac365004cd6163fb29cdd4ad..6e6e9dc3163849aac7387b5eb73892ea6142e158 100644 --- a/db/migrate/20160628085157_add_artifacts_sizes_to_ci_builds.rb +++ b/db/migrate/20160628085157_add_artifacts_size_to_ci_builds.rb @@ -1,11 +1,10 @@ # See http://doc.gitlab.com/ce/development/migration_style_guide.html # for more information on how to write migrations for GitLab. -class AddArtifactsSizesToCiBuilds < ActiveRecord::Migration +class AddArtifactsSizeToCiBuilds < ActiveRecord::Migration include Gitlab::Database::MigrationHelpers def change - # Or :json if under PostgreSQL? - add_column(:ci_builds, :artifacts_sizes, :text) + add_column(:ci_builds, :artifacts_size, :integer) end end diff --git a/db/schema.rb b/db/schema.rb index 7a8377f687c00aede850a1901fcd3414abdb3646..509a2d30f4d2e5aef744ab3e0fc3f4250e9199f1 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160620115026) do +ActiveRecord::Schema.define(version: 20160628085157) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -163,6 +163,7 @@ ActiveRecord::Schema.define(version: 20160620115026) do t.datetime "erased_at" t.string "environment" t.datetime "artifacts_expire_at" + t.integer "artifacts_size" end add_index "ci_builds", ["commit_id", "stage_idx", "created_at"], name: "index_ci_builds_on_commit_id_and_stage_idx_and_created_at", using: :btree diff --git a/lib/ci/api/builds.rb b/lib/ci/api/builds.rb index 93eed4496e4c3b6175094d4e3b540fec772e32f2..7bfcc40a9f129ed1fa8c9f4249d2815a175803c5 100644 --- a/lib/ci/api/builds.rb +++ b/lib/ci/api/builds.rb @@ -147,7 +147,7 @@ module Ci build.artifacts_file = artifacts build.artifacts_metadata = metadata build.artifacts_expire_in = params['expire_in'] - build.artifacts_sizes = build.artifacts_metadata_sizes + build.artifacts_size = artifacts.size if build.save present(build, with: Entities::BuildDetails) diff --git a/spec/requests/ci/api/builds_spec.rb b/spec/requests/ci/api/builds_spec.rb index fb164c221d02431cb2ccec4afee9b5b108239060..08ec154dd5de2d8c81e4f193aa6fa12fdadd1787 100644 --- a/spec/requests/ci/api/builds_spec.rb +++ b/spec/requests/ci/api/builds_spec.rb @@ -344,14 +344,11 @@ describe Ci::API::API do context 'should post artifacts file and metadata file' do let!(:artifacts) { file_upload } - let!(:metadata) do - fixture_file_upload( - Rails.root + 'spec/fixtures/ci_build_artifacts_metadata.gz') - end + let!(:metadata) { file_upload2 } let(:stored_artifacts_file) { build.reload.artifacts_file.file } let(:stored_metadata_file) { build.reload.artifacts_metadata.file } - let(:stored_artifacts_sizes) { build.reload.artifacts_sizes } + let(:stored_artifacts_size) { build.reload.artifacts_size } before do post(post_url, post_data, headers_with_token) @@ -369,12 +366,7 @@ describe Ci::API::API do expect(response).to have_http_status(201) expect(stored_artifacts_file.original_filename).to eq(artifacts.original_filename) expect(stored_metadata_file.original_filename).to eq(metadata.original_filename) - expect(stored_artifacts_sizes).to eq( - 'ci_artifacts.txt' => 27, - 'other_artifacts_0.1.2/another-subdirectory/banana_sample.gif' => 71759, - 'other_artifacts_0.1.2/doc_sample.txt' => 1314, - 'rails_sample.jpg' => 35255, - 'tests_encoding/utf8 test dir ✓/regular_file_2' => 7) + expect(stored_artifacts_size).to eq(71759) end end