summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2016-06-28 11:16:48 +0000
committerLin Jen-Shin <godfat@godfat.org>2016-06-28 11:16:48 +0000
commit0a294698db01112c407575e690a8a368be6b15f8 (patch)
treeda9cecaebe37d2d982fb45c80d2eefd138d3d78c
parentfe0c59d2e61238e1241be448a37be0e3e702a5ce (diff)
downloadgitlab-ce-0a294698db01112c407575e690a8a368be6b15f8.tar.gz
Just save the size in total rather than individual files
Feedback: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4964#note_12741046
-rw-r--r--app/models/ci/build.rb26
-rw-r--r--db/migrate/20160628085157_add_artifacts_size_to_ci_builds.rb (renamed from db/migrate/20160628085157_add_artifacts_sizes_to_ci_builds.rb)5
-rw-r--r--db/schema.rb3
-rw-r--r--lib/ci/api/builds.rb2
-rw-r--r--spec/requests/ci/api/builds_spec.rb14
5 files changed, 14 insertions, 36 deletions
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index d9544a4a279..2588274355b 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
index bad260b83ea..6e6e9dc3163 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 7a8377f687c..509a2d30f4d 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 93eed4496e4..7bfcc40a9f1 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 fb164c221d0..08ec154dd5d 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