From 249a2c0ea9ebe091183f2a66341960f6b09e6243 Mon Sep 17 00:00:00 2001 From: Mark Lapierre Date: Tue, 11 Dec 2018 12:10:51 -0500 Subject: Wait for push before trying to create a new MR --- qa/qa/resource/merge_request.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/qa/qa/resource/merge_request.rb b/qa/qa/resource/merge_request.rb index 45cb317e0eb..7150098a00a 100644 --- a/qa/qa/resource/merge_request.rb +++ b/qa/qa/resource/merge_request.rb @@ -58,7 +58,10 @@ module QA populate(:target, :source) project.visit! - Page::Project::Show.perform(&:new_merge_request) + Page::Project::Show.perform do |project| + project.wait_for_push + project.new_merge_request + end Page::MergeRequest::New.perform do |page| page.fill_title(@title) page.fill_description(@description) -- cgit v1.2.1 From 320b6d965e59a0d732f516c6d821af7de60e8477 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Mon, 10 Dec 2018 14:25:49 +0100 Subject: Add basic implementation of CI/CD bridge job --- app/models/ci/bridge.rb | 41 ++++++++++++++++++++++++++++++++++ lib/gitlab/ci/status/bridge/common.rb | 27 ++++++++++++++++++++++ lib/gitlab/ci/status/bridge/factory.rb | 15 +++++++++++++ spec/factories/ci/bridge.rb | 17 ++++++++++++++ spec/models/ci/bridge_spec.rb | 25 +++++++++++++++++++++ 5 files changed, 125 insertions(+) create mode 100644 app/models/ci/bridge.rb create mode 100644 lib/gitlab/ci/status/bridge/common.rb create mode 100644 lib/gitlab/ci/status/bridge/factory.rb create mode 100644 spec/factories/ci/bridge.rb create mode 100644 spec/models/ci/bridge_spec.rb diff --git a/app/models/ci/bridge.rb b/app/models/ci/bridge.rb new file mode 100644 index 00000000000..22546d5d659 --- /dev/null +++ b/app/models/ci/bridge.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +module Ci + class Bridge < CommitStatus + include Importable + include AfterCommitQueue + include TokenAuthenticatable + include Gitlab::Utils::StrongMemoize + + belongs_to :project, inverse_of: :builds + + serialize :options # rubocop:disable Cop/ActiveRecordSerialize + validates :ref, presence: true + + before_save :ensure_token + + add_authentication_token_field :token, encrypted: true + + def self.retry(bridge, current_user) + raise NotImplementedError + end + + def tags + [:bridge] + end + + def detailed_status(current_user) + Gitlab::Ci::Status::Bridge::Factory + .new(self, current_user) + .fabricate! + end + + def predefined_variables + raise NotImplementedError + end + + def execute_hooks + raise NotImplementedError + end + end +end diff --git a/lib/gitlab/ci/status/bridge/common.rb b/lib/gitlab/ci/status/bridge/common.rb new file mode 100644 index 00000000000..c6cb620f7a0 --- /dev/null +++ b/lib/gitlab/ci/status/bridge/common.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +module Gitlab + module Ci + module Status + module Bridge + module Common + def label + subject.description + end + + def has_details? + false + end + + def has_action? + false + end + + def details_path + raise NotImplementedError + end + end + end + end + end +end diff --git a/lib/gitlab/ci/status/bridge/factory.rb b/lib/gitlab/ci/status/bridge/factory.rb new file mode 100644 index 00000000000..910de865483 --- /dev/null +++ b/lib/gitlab/ci/status/bridge/factory.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Gitlab + module Ci + module Status + module Bridge + class Factory < Status::Factory + def self.common_helpers + Status::Bridge::Common + end + end + end + end + end +end diff --git a/spec/factories/ci/bridge.rb b/spec/factories/ci/bridge.rb new file mode 100644 index 00000000000..5f83b80ad7b --- /dev/null +++ b/spec/factories/ci/bridge.rb @@ -0,0 +1,17 @@ +FactoryBot.define do + factory :ci_bridge, class: Ci::Bridge do + name ' bridge' + stage 'test' + stage_idx 0 + ref 'master' + tag false + created_at 'Di 29. Okt 09:50:00 CET 2013' + status :success + + pipeline factory: :ci_pipeline + + after(:build) do |bridge, evaluator| + bridge.project ||= bridge.pipeline.project + end + end +end diff --git a/spec/models/ci/bridge_spec.rb b/spec/models/ci/bridge_spec.rb new file mode 100644 index 00000000000..741cdfef1a5 --- /dev/null +++ b/spec/models/ci/bridge_spec.rb @@ -0,0 +1,25 @@ +require 'spec_helper' + +describe Ci::Bridge do + set(:project) { create(:project) } + set(:pipeline) { create(:ci_pipeline, project: project) } + + let(:bridge) do + create(:ci_bridge, pipeline: pipeline) + end + + describe '#tags' do + it 'only has a bridge tag' do + expect(bridge.tags).to eq [:bridge] + end + end + + describe '#detailed_status' do + let(:user) { create(:user) } + let(:status) { bridge.detailed_status(user) } + + it 'returns detailed status object' do + expect(status).to be_a Gitlab::Ci::Status::Success + end + end +end -- cgit v1.2.1 From 4f2685fb7f778f96327e12ee9246090c5edf5eaa Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Wed, 12 Dec 2018 13:49:42 +0100 Subject: Simplify CI/CD bridge class --- app/models/ci/bridge.rb | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/app/models/ci/bridge.rb b/app/models/ci/bridge.rb index 22546d5d659..29aa00a66d9 100644 --- a/app/models/ci/bridge.rb +++ b/app/models/ci/bridge.rb @@ -4,18 +4,11 @@ module Ci class Bridge < CommitStatus include Importable include AfterCommitQueue - include TokenAuthenticatable include Gitlab::Utils::StrongMemoize - belongs_to :project, inverse_of: :builds - - serialize :options # rubocop:disable Cop/ActiveRecordSerialize + belongs_to :project validates :ref, presence: true - before_save :ensure_token - - add_authentication_token_field :token, encrypted: true - def self.retry(bridge, current_user) raise NotImplementedError end -- cgit v1.2.1