summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Trzciński <ayufan@ayufan.eu>2018-07-30 17:26:56 +0200
committerKamil Trzciński <ayufan@ayufan.eu>2018-08-01 12:25:19 +0200
commit8fe37da6cb648b73e618861b9672eb0cf34247d0 (patch)
treec98d30837a20c31af47b8df99a1111b8152c0eca
parent6f264888d3b3710225f3a3dd65d64fe857198dfb (diff)
downloadgitlab-ce-8fe37da6cb648b73e618861b9672eb0cf34247d0.tar.gz
More clever way for testing runner features
-rw-r--r--app/models/ci/build.rb22
1 files changed, 14 insertions, 8 deletions
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index 6d38f899390..db5ad300a12 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -15,6 +15,10 @@ module Ci
has_many :deployments, as: :deployable
+ RUNNER_FEATURES = {
+ upload_multiple_artifacts: -> (build) { build.publishes_artifacts_reports? }
+ }.freeze
+
has_one :last_deployment, -> { order('deployments.id DESC') }, as: :deployable, class_name: 'Deployment'
has_many :trace_sections, class_name: 'Ci::BuildTraceSection'
has_many :trace_chunks, class_name: 'Ci::BuildTraceChunk', foreign_key: :build_id
@@ -337,12 +341,6 @@ module Ci
{ trace_sections: true }
end
- def runner_required_features
- features = []
- features << :upload_multiple_artifacts if publishes_artifacts_reports?
- features
- end
-
def merge_request
return @merge_request if defined?(@merge_request)
@@ -594,14 +592,22 @@ module Ci
true
end
+ def runner_required_feature_names
+ strong_memoize(:runner_required_feature_names) do
+ RUNNER_FEATURES.select do |feature, method|
+ method.call(self)
+ end.keys
+ end
+ end
+
def supported_runner?(features)
- runner_required_features.all? do |feature_name|
+ runner_required_feature_names.all? do |feature_name|
features&.dig(feature_name)
end
end
def publishes_artifacts_reports?
- options.dig(:artifacts, :reports).any?
+ options&.dig(:artifacts, :reports)&.any?
end
def hide_secrets(trace)