diff options
author | Kamil Trzciński <ayufan@ayufan.eu> | 2018-08-31 15:20:13 +0200 |
---|---|---|
committer | Kamil Trzciński <ayufan@ayufan.eu> | 2018-08-31 15:20:13 +0200 |
commit | 4561d3981b7915bf955081f7127848fa30024352 (patch) | |
tree | 43cab8c72887f5fe26a5b1b27c686b1d6725d78d | |
parent | f40cf8268cf785e57a37ceb3021840160b280ab7 (diff) | |
download | gitlab-ce-kamil-refactor-ci-builds-v2.tar.gz |
Fix specskamil-refactor-ci-builds-v2
-rw-r--r-- | app/models/ci/build.rb | 1 | ||||
-rw-r--r-- | app/models/ci/build_config.rb | 4 | ||||
-rw-r--r-- | app/services/ci/retry_build_service.rb | 15 |
3 files changed, 18 insertions, 2 deletions
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb index 869fda99f12..fe5554c3959 100644 --- a/app/models/ci/build.rb +++ b/app/models/ci/build.rb @@ -41,6 +41,7 @@ module Ci has_one :metadata, class_name: 'Ci::BuildMetadata' has_one :runner_session, class_name: 'Ci::BuildRunnerSession', validate: true, inverse_of: :build + accepts_nested_attributes_for :config, update_only: true accepts_nested_attributes_for :runner_session delegate :timeout, to: :metadata, prefix: true, allow_nil: true diff --git a/app/models/ci/build_config.rb b/app/models/ci/build_config.rb index bf370d6d977..11ccd797d30 100644 --- a/app/models/ci/build_config.rb +++ b/app/models/ci/build_config.rb @@ -9,6 +9,10 @@ module Ci serialize :yaml_options # rubocop:disable Cop/ActiveRecordSerialize serialize :yaml_variables, Gitlab::Serializer::Ci::Variables # rubocop:disable Cop/ActiveRecordSerialize + def project + build.project + end + def image self.yaml_options[:image] if self.yaml_options end diff --git a/app/services/ci/retry_build_service.rb b/app/services/ci/retry_build_service.rb index 6ceb59e4780..d3ddb7ed874 100644 --- a/app/services/ci/retry_build_service.rb +++ b/app/services/ci/retry_build_service.rb @@ -2,11 +2,13 @@ module Ci class RetryBuildService < ::BaseService - CLONE_ACCESSORS = %i[pipeline project ref tag options commands name + CLONE_ACCESSORS = %i[pipeline project ref tag name allow_failure stage stage_id stage_idx trigger_request - yaml_variables when environment coverage_regex + when environment coverage_regex description tag_list protected].freeze + CONFIG_ACCESSORS = %i[yaml_options yaml_variables].freeze + def execute(build) reprocess!(build).tap do |new_build| build.pipeline.mark_as_processable_after_stage(build.stage_idx) @@ -24,11 +26,20 @@ module Ci raise Gitlab::Access::AccessDeniedError end + unless build.config + raise Gitlab::Access::AccessDeniedError + end + attributes = CLONE_ACCESSORS.map do |attribute| [attribute, build.public_send(attribute)] # rubocop:disable GitlabSecurity/PublicSend end + config_attributes = CONFIG_ACCESSORS.map do |attribute| + [attribute, build.config.public_send(attribute)] # rubocop:disable GitlabSecurity/PublicSend + end + attributes.push([:user, current_user]) + attributes.push([:config_attributes, Hash[config_attributes]]) build.retried = true |