diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-02-16 08:39:20 +0100 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-02-19 17:24:59 +0100 |
commit | 86a49dfb88c45f241ec2edf1914199993a4563d7 (patch) | |
tree | 2f4c15ba8c3bececbdc740ae97bf406c6e380947 /app/models/ci/build.rb | |
parent | 287cc838ceb4bc1878db7a33eb82d4639d7ed337 (diff) | |
download | gitlab-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.rb | 29 |
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 |