Remove ci_ prefix from all ci related things
This commit is contained in:
parent
8cdd54cc06
commit
64bfd9d71a
33 changed files with 269 additions and 267 deletions
|
@ -2,8 +2,8 @@ class Admin::RunnerProjectsController < Admin::ApplicationController
|
|||
before_action :project, only: [:create]
|
||||
|
||||
def index
|
||||
@runner_projects = project.ci_runner_projects.all
|
||||
@runner_project = project.ci_runner_projects.new
|
||||
@runner_projects = project.runner_projects.all
|
||||
@runner_project = project.runner_projects.new
|
||||
end
|
||||
|
||||
def create
|
||||
|
|
|
@ -8,7 +8,7 @@ class Projects::BuildsController < Projects::ApplicationController
|
|||
|
||||
def index
|
||||
@scope = params[:scope]
|
||||
@all_builds = project.ci_builds
|
||||
@all_builds = project.builds
|
||||
@builds = @all_builds.order('created_at DESC')
|
||||
@builds =
|
||||
case @scope
|
||||
|
@ -23,7 +23,7 @@ class Projects::BuildsController < Projects::ApplicationController
|
|||
end
|
||||
|
||||
def cancel_all
|
||||
@project.ci_builds.running_or_pending.each(&:cancel)
|
||||
@project.builds.running_or_pending.each(&:cancel)
|
||||
|
||||
redirect_to namespace_project_builds_path(project.namespace, project)
|
||||
end
|
||||
|
@ -76,7 +76,7 @@ class Projects::BuildsController < Projects::ApplicationController
|
|||
private
|
||||
|
||||
def build
|
||||
@build ||= project.ci_builds.unscoped.find_by!(id: params[:id])
|
||||
@build ||= project.builds.unscoped.find_by!(id: params[:id])
|
||||
end
|
||||
|
||||
def artifacts_file
|
||||
|
|
|
@ -18,7 +18,7 @@ class Projects::RunnerProjectsController < Projects::ApplicationController
|
|||
end
|
||||
|
||||
def destroy
|
||||
runner_project = project.ci_runner_projects.find(params[:id])
|
||||
runner_project = project.runner_projects.find(params[:id])
|
||||
runner_project.destroy
|
||||
|
||||
redirect_to runners_path(project)
|
||||
|
|
|
@ -5,9 +5,9 @@ class Projects::RunnersController < Projects::ApplicationController
|
|||
layout 'project_settings'
|
||||
|
||||
def index
|
||||
@runners = project.ci_runners.ordered
|
||||
@runners = project.runners.ordered
|
||||
@specific_runners = current_user.ci_authorized_runners.
|
||||
where.not(id: project.ci_runners).
|
||||
where.not(id: project.runners).
|
||||
ordered.page(params[:page]).per(20)
|
||||
@shared_runners = Ci::Runner.shared.active
|
||||
@shared_runners_count = @shared_runners.count(:all)
|
||||
|
@ -60,7 +60,7 @@ class Projects::RunnersController < Projects::ApplicationController
|
|||
protected
|
||||
|
||||
def set_runner
|
||||
@runner ||= project.ci_runners.find(params[:id])
|
||||
@runner ||= project.runners.find(params[:id])
|
||||
end
|
||||
|
||||
def runner_params
|
||||
|
|
|
@ -4,18 +4,18 @@ class Projects::TriggersController < Projects::ApplicationController
|
|||
layout 'project_settings'
|
||||
|
||||
def index
|
||||
@triggers = project.ci_triggers
|
||||
@triggers = project.triggers
|
||||
@trigger = Ci::Trigger.new
|
||||
end
|
||||
|
||||
def create
|
||||
@trigger = project.ci_triggers.new
|
||||
@trigger = project.triggers.new
|
||||
@trigger.save
|
||||
|
||||
if @trigger.valid?
|
||||
redirect_to namespace_project_triggers_path(@project.namespace, @project)
|
||||
else
|
||||
@triggers = project.ci_triggers.select(&:persisted?)
|
||||
@triggers = project.triggers.select(&:persisted?)
|
||||
render :index
|
||||
end
|
||||
end
|
||||
|
@ -29,6 +29,6 @@ class Projects::TriggersController < Projects::ApplicationController
|
|||
private
|
||||
|
||||
def trigger
|
||||
@trigger ||= project.ci_triggers.find(params[:id])
|
||||
@trigger ||= project.triggers.find(params[:id])
|
||||
end
|
||||
end
|
||||
|
|
|
@ -17,6 +17,6 @@ class Projects::VariablesController < Projects::ApplicationController
|
|||
private
|
||||
|
||||
def project_params
|
||||
params.require(:project).permit({ ci_variables_attributes: [:id, :key, :value, :_destroy] })
|
||||
params.require(:project).permit({ variables_attributes: [:id, :key, :value, :_destroy] })
|
||||
end
|
||||
end
|
||||
|
|
|
@ -65,7 +65,7 @@ module CiStatusHelper
|
|||
end
|
||||
|
||||
def no_runners_for_project?(project)
|
||||
project.ci_runners.blank? &&
|
||||
project.runners.blank? &&
|
||||
Ci::Runner.shared.blank?
|
||||
end
|
||||
end
|
||||
|
|
|
@ -287,7 +287,7 @@ module Ci
|
|||
end
|
||||
|
||||
def project_variables
|
||||
project.ci_variables.map do |variable|
|
||||
project.variables.map do |variable|
|
||||
{ key: variable.key, value: variable.value, public: false }
|
||||
end
|
||||
end
|
||||
|
|
|
@ -52,7 +52,7 @@ module Ci
|
|||
def assign_to(project, current_user = nil)
|
||||
self.is_shared = false if shared?
|
||||
self.save
|
||||
project.ci_runner_projects.create!(runner_id: self.id)
|
||||
project.runner_projects.create!(runner_id: self.id)
|
||||
end
|
||||
|
||||
def display_name
|
||||
|
|
|
@ -128,15 +128,15 @@ class Project < ActiveRecord::Base
|
|||
|
||||
has_one :import_data, dependent: :destroy, class_name: "ProjectImportData"
|
||||
|
||||
has_many :commit_statuses, dependent: :destroy, class_name: 'CommitStatus', foreign_key: :gl_project_id
|
||||
has_many :ci_commits, dependent: :destroy, class_name: 'Ci::Commit', foreign_key: :gl_project_id
|
||||
has_many :ci_statuses, dependent: :destroy, class_name: 'CommitStatus', foreign_key: :gl_project_id
|
||||
has_many :ci_builds, class_name: 'Ci::Build', foreign_key: :gl_project_id # the builds are created from the ci_statuses
|
||||
has_many :ci_runner_projects, dependent: :destroy, class_name: 'Ci::RunnerProject', foreign_key: :gl_project_id
|
||||
has_many :ci_runners, through: :ci_runner_projects, source: :runner, class_name: 'Ci::Runner'
|
||||
has_many :ci_variables, dependent: :destroy, class_name: 'Ci::Variable', foreign_key: :gl_project_id
|
||||
has_many :ci_triggers, dependent: :destroy, class_name: 'Ci::Trigger', foreign_key: :gl_project_id
|
||||
has_many :builds, class_name: 'Ci::Build', foreign_key: :gl_project_id # the builds are created from the commit_statuses
|
||||
has_many :runner_projects, dependent: :destroy, class_name: 'Ci::RunnerProject', foreign_key: :gl_project_id
|
||||
has_many :runners, through: :runner_projects, source: :runner, class_name: 'Ci::Runner'
|
||||
has_many :variables, dependent: :destroy, class_name: 'Ci::Variable', foreign_key: :gl_project_id
|
||||
has_many :triggers, dependent: :destroy, class_name: 'Ci::Trigger', foreign_key: :gl_project_id
|
||||
|
||||
accepts_nested_attributes_for :ci_variables, allow_destroy: true
|
||||
accepts_nested_attributes_for :variables, allow_destroy: true
|
||||
|
||||
delegate :name, to: :owner, allow_nil: true, prefix: true
|
||||
delegate :members, to: :team, prefix: true
|
||||
|
@ -822,7 +822,7 @@ class Project < ActiveRecord::Base
|
|||
end
|
||||
|
||||
def any_runners?(&block)
|
||||
if ci_runners.active.any?(&block)
|
||||
if runners.active.any?(&block)
|
||||
return true
|
||||
end
|
||||
|
||||
|
|
|
@ -134,7 +134,7 @@ class User < ActiveRecord::Base
|
|||
has_many :assigned_merge_requests, dependent: :destroy, foreign_key: :assignee_id, class_name: "MergeRequest"
|
||||
has_many :oauth_applications, class_name: 'Doorkeeper::Application', as: :owner, dependent: :destroy
|
||||
has_one :abuse_report, dependent: :destroy
|
||||
has_many :ci_builds, dependent: :nullify, class_name: 'Ci::Build'
|
||||
has_many :builds, dependent: :nullify, class_name: 'Ci::Build'
|
||||
|
||||
|
||||
#
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
module Ci
|
||||
class CreateCommitService
|
||||
def execute(project, user, params)
|
||||
sha = params[:checkout_sha] || params[:after]
|
||||
origin_ref = params[:ref]
|
||||
|
||||
unless origin_ref && sha.present?
|
||||
return false
|
||||
end
|
||||
|
||||
ref = origin_ref.gsub(/\Arefs\/(tags|heads)\//, '')
|
||||
|
||||
# Skip branch removal
|
||||
if sha == Ci::Git::BLANK_SHA
|
||||
return false
|
||||
end
|
||||
|
||||
tag = origin_ref.start_with?('refs/tags/')
|
||||
commit = project.ensure_ci_commit(sha)
|
||||
unless commit.skip_ci?
|
||||
commit.update_committed!
|
||||
commit.create_builds(ref, tag, user)
|
||||
end
|
||||
|
||||
commit
|
||||
end
|
||||
end
|
||||
end
|
29
app/services/create_commit_builds_service.rb
Normal file
29
app/services/create_commit_builds_service.rb
Normal file
|
@ -0,0 +1,29 @@
|
|||
class CreateCommitBuildsService
|
||||
def execute(project, user, params)
|
||||
return false unless project.builds_enabled?
|
||||
|
||||
sha = params[:checkout_sha] || params[:after]
|
||||
origin_ref = params[:ref]
|
||||
|
||||
unless origin_ref && sha.present?
|
||||
return false
|
||||
end
|
||||
|
||||
ref = origin_ref.gsub(/\Arefs\/(tags|heads)\//, '')
|
||||
|
||||
# Skip branch removal
|
||||
if sha == Ci::Git::BLANK_SHA
|
||||
return false
|
||||
end
|
||||
|
||||
tag = origin_ref.start_with?('refs/tags/')
|
||||
commit = project.ensure_ci_commit(sha)
|
||||
unless commit.skip_ci?
|
||||
commit.update_committed!
|
||||
commit.create_builds(ref, tag, user)
|
||||
end
|
||||
|
||||
commit
|
||||
end
|
||||
end
|
||||
|
|
@ -61,6 +61,7 @@ class GitPushService
|
|||
EventCreateService.new.push(project, user, @push_data)
|
||||
project.execute_hooks(@push_data.dup, :push_hooks)
|
||||
project.execute_services(@push_data.dup, :push_hooks)
|
||||
CreateCommitBuildsService.new.execute(project, @user, @push_data)
|
||||
ProjectCacheWorker.perform_async(project.id)
|
||||
end
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ class GitTagPushService
|
|||
EventCreateService.new.push(project, user, @push_data)
|
||||
project.execute_hooks(@push_data.dup, :tag_push_hooks)
|
||||
project.execute_services(@push_data.dup, :tag_push_hooks)
|
||||
CreateCommitBuildsService.new.execute(project, @user, @push_data)
|
||||
ProjectCacheWorker.perform_async(project.id)
|
||||
|
||||
true
|
||||
|
|
|
@ -82,7 +82,7 @@
|
|||
= project.name_with_namespace
|
||||
%td
|
||||
.pull-right
|
||||
= form_for [:admin, project.namespace, project, project.ci_runner_projects.new] do |f|
|
||||
= form_for [:admin, project.namespace, project, project.runner_projects.new] do |f|
|
||||
= f.hidden_field :runner_id, value: @runner.id
|
||||
= f.submit 'Enable', class: 'btn btn-xs'
|
||||
= paginate @projects
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
= icon('cubes fw')
|
||||
%span
|
||||
Builds
|
||||
%span.count.builds_counter= @project.ci_builds.running_or_pending.count(:all)
|
||||
%span.count.builds_counter= @project.builds.running_or_pending.count(:all)
|
||||
|
||||
- if project_nav_tab? :graphs
|
||||
= nav_link(controller: %w(graphs)) do
|
||||
|
|
|
@ -2,17 +2,17 @@
|
|||
%ul
|
||||
%li
|
||||
Total:
|
||||
%strong= pluralize @project.ci_builds.count(:all), 'build'
|
||||
%strong= pluralize @project.builds.count(:all), 'build'
|
||||
%li
|
||||
Successful:
|
||||
%strong= pluralize @project.ci_builds.success.count(:all), 'build'
|
||||
%strong= pluralize @project.builds.success.count(:all), 'build'
|
||||
%li
|
||||
Failed:
|
||||
%strong= pluralize @project.ci_builds.failed.count(:all), 'build'
|
||||
%strong= pluralize @project.builds.failed.count(:all), 'build'
|
||||
%li
|
||||
Success ratio:
|
||||
%strong
|
||||
#{success_ratio(@project.ci_builds.success, @project.ci_builds.failed)}%
|
||||
#{success_ratio(@project.builds.success, @project.builds.failed)}%
|
||||
%li
|
||||
Commits covered:
|
||||
%strong
|
||||
|
|
|
@ -15,10 +15,10 @@
|
|||
- if runner.belongs_to_one_project?
|
||||
= link_to 'Remove runner', runner_path(runner), data: { confirm: "Are you sure?" }, method: :delete, class: 'btn btn-danger btn-sm'
|
||||
- else
|
||||
- runner_project = @project.ci_runner_projects.find_by(runner_id: runner)
|
||||
- runner_project = @project.runner_projects.find_by(runner_id: runner)
|
||||
= link_to 'Disable for this project', namespace_project_runner_project_path(@project.namespace, @project, runner_project), data: { confirm: "Are you sure?" }, method: :delete, class: 'btn btn-danger btn-sm'
|
||||
- elsif runner.specific?
|
||||
= form_for [@project.namespace, @project, @project.ci_runner_projects.new] do |f|
|
||||
= form_for [@project.namespace, @project, @project.runner_projects.new] do |f|
|
||||
= f.hidden_field :runner_id, value: runner.id
|
||||
= f.submit 'Enable for this project', class: 'btn btn-sm'
|
||||
.pull-right
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
- @project.errors.full_messages.each do |msg|
|
||||
%li= msg
|
||||
|
||||
= f.fields_for :ci_variables do |variable_form|
|
||||
= f.fields_for :variables do |variable_form|
|
||||
.form-group
|
||||
= variable_form.label :key, 'Key', class: 'control-label'
|
||||
.col-sm-10
|
||||
|
@ -34,7 +34,7 @@
|
|||
%hr
|
||||
%p
|
||||
.clearfix
|
||||
= f.link_to_add "Add a variable", :ci_variables, class: 'btn btn-success pull-right'
|
||||
= f.link_to_add "Add a variable", :variables, class: 'btn btn-success pull-right'
|
||||
|
||||
.form-actions
|
||||
= f.submit 'Save changes', class: 'btn btn-save', return_to: request.original_url
|
||||
|
|
|
@ -38,7 +38,7 @@ module Ci
|
|||
)
|
||||
elsif project = Project.find_by(runners_token: params[:token])
|
||||
# Create a specific runner for project.
|
||||
project.ci_runners.create(
|
||||
project.runners.create(
|
||||
description: params[:description],
|
||||
tag_list: params[:tag_list]
|
||||
)
|
||||
|
|
|
@ -16,10 +16,10 @@ module Ci
|
|||
|
||||
def push(from, to, format)
|
||||
@labels << from.strftime(format)
|
||||
@total << project.ci_builds.
|
||||
@total << project.builds.
|
||||
where("? > #{Ci::Build.table_name}.created_at AND #{Ci::Build.table_name}.created_at > ?", to, from).
|
||||
count(:all)
|
||||
@success << project.ci_builds.
|
||||
@success << project.builds.
|
||||
where("? > #{Ci::Build.table_name}.created_at AND #{Ci::Build.table_name}.created_at > ?", to, from).
|
||||
success.count(:all)
|
||||
end
|
||||
|
|
|
@ -37,7 +37,7 @@ describe "Builds" do
|
|||
|
||||
context "All builds" do
|
||||
before do
|
||||
@project.ci_builds.running_or_pending.each(&:success)
|
||||
@project.builds.running_or_pending.each(&:success)
|
||||
visit namespace_project_builds_path(@project.namespace, @project, scope: :all)
|
||||
end
|
||||
|
||||
|
|
|
@ -21,9 +21,9 @@ describe "Runners" do
|
|||
@specific_runner = FactoryGirl.create :ci_specific_runner
|
||||
@specific_runner2 = FactoryGirl.create :ci_specific_runner
|
||||
@specific_runner3 = FactoryGirl.create :ci_specific_runner
|
||||
@project.ci_runners << @specific_runner
|
||||
@project2.ci_runners << @specific_runner2
|
||||
@project3.ci_runners << @specific_runner3
|
||||
@project.runners << @specific_runner
|
||||
@project2.runners << @specific_runner2
|
||||
@project3.runners << @specific_runner3
|
||||
|
||||
visit runners_path(@project)
|
||||
end
|
||||
|
@ -48,7 +48,7 @@ describe "Runners" do
|
|||
end
|
||||
|
||||
it "disables specific runner for project" do
|
||||
@project2.ci_runners << @specific_runner
|
||||
@project2.runners << @specific_runner
|
||||
visit runners_path(@project)
|
||||
|
||||
within ".activated-specific-runners" do
|
||||
|
@ -85,7 +85,7 @@ describe "Runners" do
|
|||
@project = FactoryGirl.create :empty_project
|
||||
@project.team << [user, :master]
|
||||
@specific_runner = FactoryGirl.create :ci_specific_runner
|
||||
@project.ci_runners << @specific_runner
|
||||
@project.runners << @specific_runner
|
||||
end
|
||||
|
||||
it "shows runner information" do
|
||||
|
|
|
@ -13,16 +13,16 @@ describe 'Triggers' do
|
|||
context 'create a trigger' do
|
||||
before do
|
||||
click_on 'Add Trigger'
|
||||
expect(@project.ci_triggers.count).to eq(1)
|
||||
expect(@project.triggers.count).to eq(1)
|
||||
end
|
||||
|
||||
it 'contains trigger token' do
|
||||
expect(page).to have_content(@project.ci_triggers.first.token)
|
||||
expect(page).to have_content(@project.triggers.first.token)
|
||||
end
|
||||
|
||||
it 'revokes the trigger' do
|
||||
click_on 'Revoke'
|
||||
expect(@project.ci_triggers.count).to eq(0)
|
||||
expect(@project.triggers.count).to eq(0)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -18,7 +18,7 @@ describe "Variables" do
|
|||
click_on "Save changes"
|
||||
|
||||
expect(page).to have_content("Variables were successfully updated.")
|
||||
expect(@project.ci_variables.count).to eq(1)
|
||||
expect(@project.variables.count).to eq(1)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -232,7 +232,7 @@ describe Ci::Build, models: true do
|
|||
end
|
||||
|
||||
before do
|
||||
build.project.ci_variables << Ci::Variable.new(key: 'SECRET_KEY', value: 'secret_value')
|
||||
build.project.variables << Ci::Variable.new(key: 'SECRET_KEY', value: 'secret_value')
|
||||
end
|
||||
|
||||
it { is_expected.to eq(predefined_variables + yaml_variables + secure_variables) }
|
||||
|
@ -264,7 +264,7 @@ describe Ci::Build, models: true do
|
|||
describe :can_be_served? do
|
||||
let(:runner) { FactoryGirl.create :ci_specific_runner }
|
||||
|
||||
before { build.project.ci_runners << runner }
|
||||
before { build.project.runners << runner }
|
||||
|
||||
context 'runner without tags' do
|
||||
it 'can handle builds without tags' do
|
||||
|
@ -307,7 +307,7 @@ describe Ci::Build, models: true do
|
|||
let(:runner) { FactoryGirl.create :ci_specific_runner }
|
||||
|
||||
before do
|
||||
build.project.ci_runners << runner
|
||||
build.project.runners << runner
|
||||
runner.update_attributes(contacted_at: 1.second.ago)
|
||||
end
|
||||
|
||||
|
@ -344,7 +344,7 @@ describe Ci::Build, models: true do
|
|||
let(:runner) { FactoryGirl.create :ci_specific_runner, contacted_at: 1.second.ago }
|
||||
|
||||
before do
|
||||
build.project.ci_runners << runner
|
||||
build.project.runners << runner
|
||||
runner.save
|
||||
end
|
||||
|
||||
|
|
|
@ -118,8 +118,8 @@ describe Ci::Runner, models: true do
|
|||
runner = FactoryGirl.create(:ci_specific_runner)
|
||||
project = FactoryGirl.create(:empty_project)
|
||||
project1 = FactoryGirl.create(:empty_project)
|
||||
project.ci_runners << runner
|
||||
project1.ci_runners << runner
|
||||
project.runners << runner
|
||||
project1.runners << runner
|
||||
|
||||
expect(runner.belongs_to_one_project?).to be_falsey
|
||||
end
|
||||
|
@ -127,7 +127,7 @@ describe Ci::Runner, models: true do
|
|||
it "returns true" do
|
||||
runner = FactoryGirl.create(:ci_specific_runner)
|
||||
project = FactoryGirl.create(:empty_project)
|
||||
project.ci_runners << runner
|
||||
project.runners << runner
|
||||
|
||||
expect(runner.belongs_to_one_project?).to be_truthy
|
||||
end
|
||||
|
|
|
@ -54,13 +54,13 @@ describe Project, models: true do
|
|||
it { is_expected.to have_one(:slack_service).dependent(:destroy) }
|
||||
it { is_expected.to have_one(:pushover_service).dependent(:destroy) }
|
||||
it { is_expected.to have_one(:asana_service).dependent(:destroy) }
|
||||
it { is_expected.to have_many(:ci_commits) }
|
||||
it { is_expected.to have_many(:commit_statuses) }
|
||||
it { is_expected.to have_many(:ci_builds) }
|
||||
it { is_expected.to have_many(:ci_runner_projects) }
|
||||
it { is_expected.to have_many(:ci_runners) }
|
||||
it { is_expected.to have_many(:ci_variables) }
|
||||
it { is_expected.to have_many(:ci_triggers) }
|
||||
it { is_expected.to have_many(:ci_commits) }
|
||||
it { is_expected.to have_many(:builds) }
|
||||
it { is_expected.to have_many(:runner_projects) }
|
||||
it { is_expected.to have_many(:runners) }
|
||||
it { is_expected.to have_many(:variables) }
|
||||
it { is_expected.to have_many(:triggers) }
|
||||
end
|
||||
|
||||
describe 'modules' do
|
||||
|
@ -519,7 +519,7 @@ describe Project, models: true do
|
|||
end
|
||||
|
||||
it 'there is a specific runner' do
|
||||
project.ci_runners << specific_runner
|
||||
project.runners << specific_runner
|
||||
expect(project.any_runners?).to be_truthy
|
||||
end
|
||||
|
||||
|
@ -529,7 +529,7 @@ describe Project, models: true do
|
|||
end
|
||||
|
||||
it 'checks the presence of specific runner' do
|
||||
project.ci_runners << specific_runner
|
||||
project.runners << specific_runner
|
||||
expect(project.any_runners? { |runner| runner == specific_runner }).to be_truthy
|
||||
end
|
||||
end
|
||||
|
|
|
@ -68,7 +68,7 @@ describe Ci::API::API do
|
|||
it "returns variables" do
|
||||
commit = FactoryGirl.create(:ci_commit, project: project)
|
||||
commit.create_builds('master', false, nil)
|
||||
project.ci_variables << Ci::Variable.new(key: "SECRET_KEY", value: "secret_value")
|
||||
project.variables << Ci::Variable.new(key: "SECRET_KEY", value: "secret_value")
|
||||
|
||||
post ci_api("/builds/register"), token: runner.token, info: { platform: :darwin }
|
||||
|
||||
|
@ -87,7 +87,7 @@ describe Ci::API::API do
|
|||
|
||||
trigger_request = FactoryGirl.create(:ci_trigger_request_with_variables, commit: commit, trigger: trigger)
|
||||
commit.create_builds('master', false, nil, trigger_request)
|
||||
project.ci_variables << Ci::Variable.new(key: "SECRET_KEY", value: "secret_value")
|
||||
project.variables << Ci::Variable.new(key: "SECRET_KEY", value: "secret_value")
|
||||
|
||||
post ci_api("/builds/register"), token: runner.token, info: { platform: :darwin }
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ describe Ci::API::API do
|
|||
before { post ci_api("/runners/register"), token: project.token }
|
||||
|
||||
it { expect(response.status).to eq(201) }
|
||||
it { expect(project.ci_runners.size).to eq(1) }
|
||||
it { expect(project.runners.size).to eq(1) }
|
||||
end
|
||||
|
||||
it "should return 403 error if token is invalid" do
|
||||
|
|
|
@ -1,172 +0,0 @@
|
|||
require 'spec_helper'
|
||||
|
||||
module Ci
|
||||
describe CreateCommitService, services: true do
|
||||
let(:service) { CreateCommitService.new }
|
||||
let(:project) { FactoryGirl.create(:empty_project) }
|
||||
let(:user) { nil }
|
||||
|
||||
before do
|
||||
stub_ci_commit_to_return_yaml_file
|
||||
end
|
||||
|
||||
describe :execute do
|
||||
context 'valid params' do
|
||||
let(:commit) do
|
||||
service.execute(project, user,
|
||||
ref: 'refs/heads/master',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: [ { message: "Message" } ]
|
||||
)
|
||||
end
|
||||
|
||||
it { expect(commit).to be_kind_of(Commit) }
|
||||
it { expect(commit).to be_valid }
|
||||
it { expect(commit).to be_persisted }
|
||||
it { expect(commit).to eq(project.ci_commits.last) }
|
||||
it { expect(commit.builds.first).to be_kind_of(Build) }
|
||||
end
|
||||
|
||||
context "skip tag if there is no build for it" do
|
||||
it "creates commit if there is appropriate job" do
|
||||
result = service.execute(project, user,
|
||||
ref: 'refs/tags/0_1',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: [ { message: "Message" } ]
|
||||
)
|
||||
expect(result).to be_persisted
|
||||
end
|
||||
|
||||
it "creates commit if there is no appropriate job but deploy job has right ref setting" do
|
||||
config = YAML.dump({ deploy: { deploy: "ls", only: ["0_1"] } })
|
||||
stub_ci_commit_yaml_file(config)
|
||||
|
||||
result = service.execute(project, user,
|
||||
ref: 'refs/heads/0_1',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: [ { message: "Message" } ]
|
||||
)
|
||||
expect(result).to be_persisted
|
||||
end
|
||||
end
|
||||
|
||||
it 'skips commits without .gitlab-ci.yml' do
|
||||
stub_ci_commit_yaml_file(nil)
|
||||
result = service.execute(project, user,
|
||||
ref: 'refs/heads/0_1',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: [ { message: 'Message' } ]
|
||||
)
|
||||
expect(result).to be_persisted
|
||||
expect(result.builds.any?).to be_falsey
|
||||
expect(result.status).to eq('skipped')
|
||||
expect(result.yaml_errors).to be_nil
|
||||
end
|
||||
|
||||
it 'skips commits if yaml is invalid' do
|
||||
message = 'message'
|
||||
allow_any_instance_of(Ci::Commit).to receive(:git_commit_message) { message }
|
||||
stub_ci_commit_yaml_file('invalid: file: file')
|
||||
commits = [{ message: message }]
|
||||
commit = service.execute(project, user,
|
||||
ref: 'refs/tags/0_1',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: commits
|
||||
)
|
||||
expect(commit.builds.any?).to be false
|
||||
expect(commit.status).to eq('failed')
|
||||
expect(commit.yaml_errors).to_not be_nil
|
||||
end
|
||||
|
||||
describe :ci_skip? do
|
||||
let(:message) { "some message[ci skip]" }
|
||||
|
||||
before do
|
||||
allow_any_instance_of(Ci::Commit).to receive(:git_commit_message) { message }
|
||||
end
|
||||
|
||||
it "skips builds creation if there is [ci skip] tag in commit message" do
|
||||
commits = [{ message: message }]
|
||||
commit = service.execute(project, user,
|
||||
ref: 'refs/tags/0_1',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: commits
|
||||
)
|
||||
expect(commit.builds.any?).to be false
|
||||
expect(commit.status).to eq("skipped")
|
||||
end
|
||||
|
||||
it "does not skips builds creation if there is no [ci skip] tag in commit message" do
|
||||
allow_any_instance_of(Ci::Commit).to receive(:git_commit_message) { "some message" }
|
||||
|
||||
commits = [{ message: "some message" }]
|
||||
commit = service.execute(project, user,
|
||||
ref: 'refs/tags/0_1',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: commits
|
||||
)
|
||||
|
||||
expect(commit.builds.first.name).to eq("staging")
|
||||
end
|
||||
|
||||
it "skips builds creation if there is [ci skip] tag in commit message and yaml is invalid" do
|
||||
stub_ci_commit_yaml_file('invalid: file: fiile')
|
||||
commits = [{ message: message }]
|
||||
commit = service.execute(project, user,
|
||||
ref: 'refs/tags/0_1',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: commits
|
||||
)
|
||||
expect(commit.builds.any?).to be false
|
||||
expect(commit.status).to eq("skipped")
|
||||
expect(commit.yaml_errors).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
it "skips build creation if there are already builds" do
|
||||
allow_any_instance_of(Ci::Commit).to receive(:ci_yaml_file) { gitlab_ci_yaml }
|
||||
|
||||
commits = [{ message: "message" }]
|
||||
commit = service.execute(project, user,
|
||||
ref: 'refs/heads/master',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: commits
|
||||
)
|
||||
expect(commit.builds.count(:all)).to eq(2)
|
||||
|
||||
commit = service.execute(project, user,
|
||||
ref: 'refs/heads/master',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: commits
|
||||
)
|
||||
expect(commit.builds.count(:all)).to eq(2)
|
||||
end
|
||||
|
||||
it "creates commit with failed status if yaml is invalid" do
|
||||
stub_ci_commit_yaml_file('invalid: file')
|
||||
|
||||
commits = [{ message: "some message" }]
|
||||
|
||||
commit = service.execute(project, user,
|
||||
ref: 'refs/tags/0_1',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: commits
|
||||
)
|
||||
|
||||
expect(commit.status).to eq("failed")
|
||||
expect(commit.builds.any?).to be false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
171
spec/services/create_commit_builds_service_spec.rb
Normal file
171
spec/services/create_commit_builds_service_spec.rb
Normal file
|
@ -0,0 +1,171 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe CreateCommitBuildsService, services: true do
|
||||
let(:service) { CreateCommitBuildsService.new }
|
||||
let(:project) { FactoryGirl.create(:empty_project) }
|
||||
let(:user) { nil }
|
||||
|
||||
before do
|
||||
stub_ci_commit_to_return_yaml_file
|
||||
end
|
||||
|
||||
describe :execute do
|
||||
context 'valid params' do
|
||||
let(:commit) do
|
||||
service.execute(project, user,
|
||||
ref: 'refs/heads/master',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: [{ message: "Message" }]
|
||||
)
|
||||
end
|
||||
|
||||
it { expect(commit).to be_kind_of(Commit) }
|
||||
it { expect(commit).to be_valid }
|
||||
it { expect(commit).to be_persisted }
|
||||
it { expect(commit).to eq(project.ci_commits.last) }
|
||||
it { expect(commit.builds.first).to be_kind_of(Build) }
|
||||
end
|
||||
|
||||
context "skip tag if there is no build for it" do
|
||||
it "creates commit if there is appropriate job" do
|
||||
result = service.execute(project, user,
|
||||
ref: 'refs/tags/0_1',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: [{ message: "Message" }]
|
||||
)
|
||||
expect(result).to be_persisted
|
||||
end
|
||||
|
||||
it "creates commit if there is no appropriate job but deploy job has right ref setting" do
|
||||
config = YAML.dump({ deploy: { deploy: "ls", only: ["0_1"] } })
|
||||
stub_ci_commit_yaml_file(config)
|
||||
|
||||
result = service.execute(project, user,
|
||||
ref: 'refs/heads/0_1',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: [{ message: "Message" }]
|
||||
)
|
||||
expect(result).to be_persisted
|
||||
end
|
||||
end
|
||||
|
||||
it 'skips commits without .gitlab-ci.yml' do
|
||||
stub_ci_commit_yaml_file(nil)
|
||||
result = service.execute(project, user,
|
||||
ref: 'refs/heads/0_1',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: [{ message: 'Message' }]
|
||||
)
|
||||
expect(result).to be_persisted
|
||||
expect(result.builds.any?).to be_falsey
|
||||
expect(result.status).to eq('skipped')
|
||||
expect(result.yaml_errors).to be_nil
|
||||
end
|
||||
|
||||
it 'skips commits if yaml is invalid' do
|
||||
message = 'message'
|
||||
allow_any_instance_of(Ci::Commit).to receive(:git_commit_message) { message }
|
||||
stub_ci_commit_yaml_file('invalid: file: file')
|
||||
commits = [{ message: message }]
|
||||
commit = service.execute(project, user,
|
||||
ref: 'refs/tags/0_1',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: commits
|
||||
)
|
||||
expect(commit.builds.any?).to be false
|
||||
expect(commit.status).to eq('failed')
|
||||
expect(commit.yaml_errors).to_not be_nil
|
||||
end
|
||||
|
||||
describe :ci_skip? do
|
||||
let(:message) { "some message[ci skip]" }
|
||||
|
||||
before do
|
||||
allow_any_instance_of(Ci::Commit).to receive(:git_commit_message) { message }
|
||||
end
|
||||
|
||||
it "skips builds creation if there is [ci skip] tag in commit message" do
|
||||
commits = [{ message: message }]
|
||||
commit = service.execute(project, user,
|
||||
ref: 'refs/tags/0_1',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: commits
|
||||
)
|
||||
expect(commit.builds.any?).to be false
|
||||
expect(commit.status).to eq("skipped")
|
||||
end
|
||||
|
||||
it "does not skips builds creation if there is no [ci skip] tag in commit message" do
|
||||
allow_any_instance_of(Ci::Commit).to receive(:git_commit_message) { "some message" }
|
||||
|
||||
commits = [{ message: "some message" }]
|
||||
commit = service.execute(project, user,
|
||||
ref: 'refs/tags/0_1',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: commits
|
||||
)
|
||||
|
||||
expect(commit.builds.first.name).to eq("staging")
|
||||
end
|
||||
|
||||
it "skips builds creation if there is [ci skip] tag in commit message and yaml is invalid" do
|
||||
stub_ci_commit_yaml_file('invalid: file: fiile')
|
||||
commits = [{ message: message }]
|
||||
commit = service.execute(project, user,
|
||||
ref: 'refs/tags/0_1',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: commits
|
||||
)
|
||||
expect(commit.builds.any?).to be false
|
||||
expect(commit.status).to eq("skipped")
|
||||
expect(commit.yaml_errors).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
it "skips build creation if there are already builds" do
|
||||
allow_any_instance_of(Ci::Commit).to receive(:ci_yaml_file) { gitlab_ci_yaml }
|
||||
|
||||
commits = [{ message: "message" }]
|
||||
commit = service.execute(project, user,
|
||||
ref: 'refs/heads/master',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: commits
|
||||
)
|
||||
expect(commit.builds.count(:all)).to eq(2)
|
||||
|
||||
commit = service.execute(project, user,
|
||||
ref: 'refs/heads/master',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: commits
|
||||
)
|
||||
expect(commit.builds.count(:all)).to eq(2)
|
||||
end
|
||||
|
||||
it "creates commit with failed status if yaml is invalid" do
|
||||
stub_ci_commit_yaml_file('invalid: file')
|
||||
|
||||
commits = [{ message: "some message" }]
|
||||
|
||||
commit = service.execute(project, user,
|
||||
ref: 'refs/tags/0_1',
|
||||
before: '00000000',
|
||||
after: '31das312',
|
||||
commits: commits
|
||||
)
|
||||
|
||||
expect(commit.status).to eq("failed")
|
||||
expect(commit.builds.any?).to be false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in a new issue