summaryrefslogtreecommitdiff
path: root/app/models/ci/build.rb
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-02-16 08:39:20 +0100
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-02-19 17:24:59 +0100
commit86a49dfb88c45f241ec2edf1914199993a4563d7 (patch)
tree2f4c15ba8c3bececbdc740ae97bf406c6e380947 /app/models/ci/build.rb
parent287cc838ceb4bc1878db7a33eb82d4639d7ed337 (diff)
downloadgitlab-ce-86a49dfb88c45f241ec2edf1914199993a4563d7.tar.gz
Move build erasable implementation from concern to model
Discussion: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/2560#note_3659905
Diffstat (limited to 'app/models/ci/build.rb')
-rw-r--r--app/models/ci/build.rb29
1 files changed, 28 insertions, 1 deletions
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index 9172a46b35f..e97d32e2c0b 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -38,12 +38,12 @@
module Ci
class Build < CommitStatus
include Gitlab::Application.routes.url_helpers
- include Build::Erasable
LAZY_ATTRIBUTES = ['trace']
belongs_to :runner, class_name: 'Ci::Runner'
belongs_to :trigger_request, class_name: 'Ci::TriggerRequest'
+ belongs_to :erased_by, class_name: 'User'
serialize :options
@@ -367,6 +367,33 @@ module Ci
Gitlab::Ci::Build::Artifacts::Metadata.new(artifacts_metadata.path, path, **options).to_entry
end
+ def erase(opts = {})
+ return false unless erasable?
+
+ remove_artifacts_file!
+ remove_artifacts_metadata!
+ erase_trace!
+ update_erased!(opts[:erased_by])
+ end
+
+ def erasable?
+ complete? && (artifacts? || has_trace?)
+ end
+
+ def erased?
+ !self.erased_at.nil?
+ end
+
+ private
+
+ def erase_trace!
+ self.trace = nil
+ end
+
+ def update_erased!(user = nil)
+ self.update(erased_by: user, erased_at: Time.now)
+ end
+
private
def yaml_variables