Commit 64bfd9d7 authored by Kamil Trzcinski's avatar Kamil Trzcinski

Remove ci_ prefix from all ci related things

parent 8cdd54cc
...@@ -2,8 +2,8 @@ class Admin::RunnerProjectsController < Admin::ApplicationController ...@@ -2,8 +2,8 @@ class Admin::RunnerProjectsController < Admin::ApplicationController
before_action :project, only: [:create] before_action :project, only: [:create]
def index def index
@runner_projects = project.ci_runner_projects.all @runner_projects = project.runner_projects.all
@runner_project = project.ci_runner_projects.new @runner_project = project.runner_projects.new
end end
def create def create
......
...@@ -8,7 +8,7 @@ class Projects::BuildsController < Projects::ApplicationController ...@@ -8,7 +8,7 @@ class Projects::BuildsController < Projects::ApplicationController
def index def index
@scope = params[:scope] @scope = params[:scope]
@all_builds = project.ci_builds @all_builds = project.builds
@builds = @all_builds.order('created_at DESC') @builds = @all_builds.order('created_at DESC')
@builds = @builds =
case @scope case @scope
...@@ -23,7 +23,7 @@ class Projects::BuildsController < Projects::ApplicationController ...@@ -23,7 +23,7 @@ class Projects::BuildsController < Projects::ApplicationController
end end
def cancel_all 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) redirect_to namespace_project_builds_path(project.namespace, project)
end end
...@@ -76,7 +76,7 @@ class Projects::BuildsController < Projects::ApplicationController ...@@ -76,7 +76,7 @@ class Projects::BuildsController < Projects::ApplicationController
private private
def build def build
@build ||= project.ci_builds.unscoped.find_by!(id: params[:id]) @build ||= project.builds.unscoped.find_by!(id: params[:id])
end end
def artifacts_file def artifacts_file
......
...@@ -18,7 +18,7 @@ class Projects::RunnerProjectsController < Projects::ApplicationController ...@@ -18,7 +18,7 @@ class Projects::RunnerProjectsController < Projects::ApplicationController
end end
def destroy def destroy
runner_project = project.ci_runner_projects.find(params[:id]) runner_project = project.runner_projects.find(params[:id])
runner_project.destroy runner_project.destroy
redirect_to runners_path(project) redirect_to runners_path(project)
......
...@@ -5,9 +5,9 @@ class Projects::RunnersController < Projects::ApplicationController ...@@ -5,9 +5,9 @@ class Projects::RunnersController < Projects::ApplicationController
layout 'project_settings' layout 'project_settings'
def index def index
@runners = project.ci_runners.ordered @runners = project.runners.ordered
@specific_runners = current_user.ci_authorized_runners. @specific_runners = current_user.ci_authorized_runners.
where.not(id: project.ci_runners). where.not(id: project.runners).
ordered.page(params[:page]).per(20) ordered.page(params[:page]).per(20)
@shared_runners = Ci::Runner.shared.active @shared_runners = Ci::Runner.shared.active
@shared_runners_count = @shared_runners.count(:all) @shared_runners_count = @shared_runners.count(:all)
...@@ -60,7 +60,7 @@ class Projects::RunnersController < Projects::ApplicationController ...@@ -60,7 +60,7 @@ class Projects::RunnersController < Projects::ApplicationController
protected protected
def set_runner def set_runner
@runner ||= project.ci_runners.find(params[:id]) @runner ||= project.runners.find(params[:id])
end end
def runner_params def runner_params
......
...@@ -4,18 +4,18 @@ class Projects::TriggersController < Projects::ApplicationController ...@@ -4,18 +4,18 @@ class Projects::TriggersController < Projects::ApplicationController
layout 'project_settings' layout 'project_settings'
def index def index
@triggers = project.ci_triggers @triggers = project.triggers
@trigger = Ci::Trigger.new @trigger = Ci::Trigger.new
end end
def create def create
@trigger = project.ci_triggers.new @trigger = project.triggers.new
@trigger.save @trigger.save
if @trigger.valid? if @trigger.valid?
redirect_to namespace_project_triggers_path(@project.namespace, @project) redirect_to namespace_project_triggers_path(@project.namespace, @project)
else else
@triggers = project.ci_triggers.select(&:persisted?) @triggers = project.triggers.select(&:persisted?)
render :index render :index
end end
end end
...@@ -29,6 +29,6 @@ class Projects::TriggersController < Projects::ApplicationController ...@@ -29,6 +29,6 @@ class Projects::TriggersController < Projects::ApplicationController
private private
def trigger def trigger
@trigger ||= project.ci_triggers.find(params[:id]) @trigger ||= project.triggers.find(params[:id])
end end
end end
...@@ -17,6 +17,6 @@ class Projects::VariablesController < Projects::ApplicationController ...@@ -17,6 +17,6 @@ class Projects::VariablesController < Projects::ApplicationController
private private
def project_params 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
end end
...@@ -65,7 +65,7 @@ module CiStatusHelper ...@@ -65,7 +65,7 @@ module CiStatusHelper
end end
def no_runners_for_project?(project) def no_runners_for_project?(project)
project.ci_runners.blank? && project.runners.blank? &&
Ci::Runner.shared.blank? Ci::Runner.shared.blank?
end end
end end
...@@ -287,7 +287,7 @@ module Ci ...@@ -287,7 +287,7 @@ module Ci
end end
def project_variables def project_variables
project.ci_variables.map do |variable| project.variables.map do |variable|
{ key: variable.key, value: variable.value, public: false } { key: variable.key, value: variable.value, public: false }
end end
end end
......
...@@ -52,7 +52,7 @@ module Ci ...@@ -52,7 +52,7 @@ module Ci
def assign_to(project, current_user = nil) def assign_to(project, current_user = nil)
self.is_shared = false if shared? self.is_shared = false if shared?
self.save self.save
project.ci_runner_projects.create!(runner_id: self.id) project.runner_projects.create!(runner_id: self.id)
end end
def display_name def display_name
......
...@@ -128,15 +128,15 @@ class Project < ActiveRecord::Base ...@@ -128,15 +128,15 @@ class Project < ActiveRecord::Base
has_one :import_data, dependent: :destroy, class_name: "ProjectImportData" 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_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 :builds, class_name: 'Ci::Build', foreign_key: :gl_project_id # the builds are created from the commit_statuses
has_many :ci_builds, class_name: 'Ci::Build', foreign_key: :gl_project_id # the builds are created from the ci_statuses has_many :runner_projects, dependent: :destroy, class_name: 'Ci::RunnerProject', foreign_key: :gl_project_id
has_many :ci_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 :ci_runners, through: :ci_runner_projects, source: :runner, class_name: 'Ci::Runner' has_many :variables, dependent: :destroy, class_name: 'Ci::Variable', foreign_key: :gl_project_id
has_many :ci_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
has_many :ci_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 :name, to: :owner, allow_nil: true, prefix: true
delegate :members, to: :team, prefix: true delegate :members, to: :team, prefix: true
...@@ -822,7 +822,7 @@ class Project < ActiveRecord::Base ...@@ -822,7 +822,7 @@ class Project < ActiveRecord::Base
end end
def any_runners?(&block) def any_runners?(&block)
if ci_runners.active.any?(&block) if runners.active.any?(&block)
return true return true
end end
......
...@@ -134,7 +134,7 @@ class User < ActiveRecord::Base ...@@ -134,7 +134,7 @@ class User < ActiveRecord::Base
has_many :assigned_merge_requests, dependent: :destroy, foreign_key: :assignee_id, class_name: "MergeRequest" 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_many :oauth_applications, class_name: 'Doorkeeper::Application', as: :owner, dependent: :destroy
has_one :abuse_report, 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'
# #
......
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
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 ...@@ -61,6 +61,7 @@ class GitPushService
EventCreateService.new.push(project, user, @push_data) EventCreateService.new.push(project, user, @push_data)
project.execute_hooks(@push_data.dup, :push_hooks) project.execute_hooks(@push_data.dup, :push_hooks)
project.execute_services(@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) ProjectCacheWorker.perform_async(project.id)
end end
......
...@@ -10,6 +10,7 @@ class GitTagPushService ...@@ -10,6 +10,7 @@ class GitTagPushService
EventCreateService.new.push(project, user, @push_data) EventCreateService.new.push(project, user, @push_data)
project.execute_hooks(@push_data.dup, :tag_push_hooks) project.execute_hooks(@push_data.dup, :tag_push_hooks)
project.execute_services(@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) ProjectCacheWorker.perform_async(project.id)
true true
......
...@@ -82,7 +82,7 @@ ...@@ -82,7 +82,7 @@
= project.name_with_namespace = project.name_with_namespace
%td %td
.pull-right .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.hidden_field :runner_id, value: @runner.id
= f.submit 'Enable', class: 'btn btn-xs' = f.submit 'Enable', class: 'btn btn-xs'
= paginate @projects = paginate @projects
......
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
= icon('cubes fw') = icon('cubes fw')
%span %span
Builds 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 - if project_nav_tab? :graphs
= nav_link(controller: %w(graphs)) do = nav_link(controller: %w(graphs)) do
......
...@@ -2,17 +2,17 @@ ...@@ -2,17 +2,17 @@
%ul %ul
%li %li
Total: Total:
%strong= pluralize @project.ci_builds.count(:all), 'build' %strong= pluralize @project.builds.count(:all), 'build'
%li %li
Successful: Successful:
%strong= pluralize @project.ci_builds.success.count(:all), 'build' %strong= pluralize @project.builds.success.count(:all), 'build'
%li %li
Failed: Failed:
%strong= pluralize @project.ci_builds.failed.count(:all), 'build' %strong= pluralize @project.builds.failed.count(:all), 'build'
%li %li
Success ratio: Success ratio:
%strong %strong
#{success_ratio(@project.ci_builds.success, @project.ci_builds.failed)}% #{success_ratio(@project.builds.success, @project.builds.failed)}%
%li %li
Commits covered: Commits covered:
%strong %strong
......
...@@ -15,10 +15,10 @@ ...@@ -15,10 +15,10 @@
- if runner.belongs_to_one_project? - 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' = link_to 'Remove runner', runner_path(runner), data: { confirm: "Are you sure?" }, method: :delete, class: 'btn btn-danger btn-sm'
- else - 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' = 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? - 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.hidden_field :runner_id, value: runner.id
= f.submit 'Enable for this project', class: 'btn btn-sm' = f.submit 'Enable for this project', class: 'btn btn-sm'
.pull-right .pull-right
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
- @project.errors.full_messages.each do |msg| - @project.errors.full_messages.each do |msg|
%li= msg %li= msg
= f.fields_for :ci_variables do |variable_form| = f.fields_for :variables do |variable_form|
.form-group .form-group
= variable_form.label :key, 'Key', class: 'control-label' = variable_form.label :key, 'Key', class: 'control-label'
.col-sm-10 .col-sm-10
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
%hr %hr
%p %p
.clearfix .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 .form-actions
= f.submit 'Save changes', class: 'btn btn-save', return_to: request.original_url = f.submit 'Save changes', class: 'btn btn-save', return_to: request.original_url
...@@ -38,7 +38,7 @@ module Ci ...@@ -38,7 +38,7 @@ module Ci
) )
elsif project = Project.find_by(runners_token: params[:token]) elsif project = Project.find_by(runners_token: params[:token])
# Create a specific runner for project. # Create a specific runner for project.
project.ci_runners.create( project.runners.create(
description: params[:description], description: params[:description],
tag_list: params[:tag_list] tag_list: params[:tag_list]
) )
......
...@@ -16,10 +16,10 @@ module Ci ...@@ -16,10 +16,10 @@ module Ci
def push(from, to, format) def push(from, to, format)
@labels << from.strftime(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). where("? > #{Ci::Build.table_name}.created_at AND #{Ci::Build.table_name}.created_at > ?", to, from).
count(:all) 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). where("? > #{Ci::Build.table_name}.created_at AND #{Ci::Build.table_name}.created_at > ?", to, from).
success.count(:all) success.count(:all)
end end
......
...@@ -37,7 +37,7 @@ describe "Builds" do ...@@ -37,7 +37,7 @@ describe "Builds" do
context "All builds" do context "All builds" do
before 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) visit namespace_project_builds_path(@project.namespace, @project, scope: :all)
end end
......
...@@ -21,9 +21,9 @@ describe "Runners" do ...@@ -21,9 +21,9 @@ describe "Runners" do
@specific_runner = FactoryGirl.create :ci_specific_runner @specific_runner = FactoryGirl.create :ci_specific_runner
@specific_runner2 = FactoryGirl.create :ci_specific_runner @specific_runner2 = FactoryGirl.create :ci_specific_runner
@specific_runner3 = FactoryGirl.create :ci_specific_runner @specific_runner3 = FactoryGirl.create :ci_specific_runner
@project.ci_runners << @specific_runner @project.runners << @specific_runner
@project2.ci_runners << @specific_runner2 @project2.runners << @specific_runner2
@project3.ci_runners << @specific_runner3 @project3.runners << @specific_runner3
visit runners_path(@project) visit runners_path(@project)
end end
...@@ -48,7 +48,7 @@ describe "Runners" do ...@@ -48,7 +48,7 @@ describe "Runners" do
end end
it "disables specific runner for project" do it "disables specific runner for project" do
@project2.ci_runners << @specific_runner @project2.runners << @specific_runner
visit runners_path(@project) visit runners_path(@project)
within ".activated-specific-runners" do within ".activated-specific-runners" do
...@@ -85,7 +85,7 @@ describe "Runners" do ...@@ -85,7 +85,7 @@ describe "Runners" do
@project = FactoryGirl.create :empty_project @project = FactoryGirl.create :empty_project
@project.team << [user, :master] @project.team << [user, :master]
@specific_runner = FactoryGirl.create :ci_specific_runner @specific_runner = FactoryGirl.create :ci_specific_runner
@project.ci_runners << @specific_runner @project.runners << @specific_runner
end end
it "shows runner information" do it "shows runner information" do
......
...@@ -13,16 +13,16 @@ describe 'Triggers' do ...@@ -13,16 +13,16 @@ describe 'Triggers' do
context 'create a trigger' do context 'create a trigger' do
before do before do
click_on 'Add Trigger' click_on 'Add Trigger'
expect(@project.ci_triggers.count).to eq(1) expect(@project.triggers.count).to eq(1)
end end
it 'contains trigger token' do 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 end
it 'revokes the trigger' do it 'revokes the trigger' do
click_on 'Revoke' click_on 'Revoke'
expect(@project.ci_triggers.count).to eq(0) expect(@project.triggers.count).to eq(0)
end end
end end
end end
...@@ -18,7 +18,7 @@ describe "Variables" do ...@@ -18,7 +18,7 @@ describe "Variables" do
click_on "Save changes" click_on "Save changes"
expect(page).to have_content("Variables were successfully updated.") 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 end
end end
...@@ -232,7 +232,7 @@ describe Ci::Build, models: true do ...@@ -232,7 +232,7 @@ describe Ci::Build, models: true do
end end
before do 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 end
it { is_expected.to eq(predefined_variables + yaml_variables + secure_variables) } it { is_expected.to eq(predefined_variables + yaml_variables + secure_variables) }
...@@ -264,7 +264,7 @@ describe Ci::Build, models: true do ...@@ -264,7 +264,7 @@ describe Ci::Build, models: true do
describe :can_be_served? do describe :can_be_served? do
let(:runner) { FactoryGirl.create :ci_specific_runner } let(:runner) { FactoryGirl.create :ci_specific_runner }
before { build.project.ci_runners << runner } before { build.project.runners << runner }
context 'runner without tags' do context 'runner without tags' do
it 'can handle builds without tags' do it 'can handle builds without tags' do
...@@ -307,7 +307,7 @@ describe Ci::Build, models: true do ...@@ -307,7 +307,7 @@ describe Ci::Build, models: true do
let(:runner) { FactoryGirl.create :ci_specific_runner } let(:runner) { FactoryGirl.create :ci_specific_runner }
before do before do
build.project.ci_runners << runner build.project.runners << runner
runner.update_attributes(contacted_at: 1.second.ago) runner.update_attributes(contacted_at: 1.second.ago)
end end
...@@ -344,7 +344,7 @@ describe Ci::Build, models: true do ...@@ -344,7 +344,7 @@ describe Ci::Build, models: true do
let(:runner) { FactoryGirl.create :ci_specific_runner, contacted_at: 1.second.ago } let(:runner) { FactoryGirl.create :ci_specific_runner, contacted_at: 1.second.ago }
before do before do
build.project.ci_runners << runner build.project.runners << runner
runner.save runner.save
end end
......
...@@ -118,8 +118,8 @@ describe Ci::Runner, models: true do ...@@ -118,8 +118,8 @@ describe Ci::Runner, models: true do
runner = FactoryGirl.create(:ci_specific_runner) runner = FactoryGirl.create(:ci_specific_runner)
project = FactoryGirl.create(:empty_project) project = FactoryGirl.create(:empty_project)
project1 = FactoryGirl.create(:empty_project) project1 = FactoryGirl.create(:empty_project)
project.ci_runners << runner project.runners << runner
project1.ci_runners << runner project1.runners << runner
expect(runner.belongs_to_one_project?).to be_falsey expect(runner.belongs_to_one_project?).to be_falsey
end end
...@@ -127,7 +127,7 @@ describe Ci::Runner, models: true do ...@@ -127,7 +127,7 @@ describe Ci::Runner, models: true do
it "returns true" do it "returns true" do
runner = FactoryGirl.create(:ci_specific_runner) runner = FactoryGirl.create(:ci_specific_runner)
project = FactoryGirl.create(:empty_project) project = FactoryGirl.create(:empty_project)
project.ci_runners << runner project.runners << runner
expect(runner.belongs_to_one_project?).to be_truthy expect(runner.belongs_to_one_project?).to be_truthy
end end
......
...@@ -54,13 +54,13 @@ describe Project, models: true do ...@@ -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(:slack_service).dependent(:destroy) }
it { is_expected.to have_one(:pushover_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_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(:commit_statuses) }
it { is_expected.to have_many(:ci_builds) } it { is_expected.to have_many(:ci_commits) }
it { is_expected.to have_many(:ci_runner_projects) } it { is_expected.to have_many(:builds) }
it { is_expected.to have_many(:ci_runners) } it { is_expected.to have_many(:runner_projects) }
it { is_expected.to have_many(:ci_variables) } it { is_expected.to have_many(:runners) }
it { is_expected.to have_many(:ci_triggers) } it { is_expected.to have_many(:variables) }
it { is_expected.to have_many(:triggers) }
end end
describe 'modules' do describe 'modules' do
...@@ -519,7 +519,7 @@ describe Project, models: true do ...@@ -519,7 +519,7 @@ describe Project, models: true do
end end
it 'there is a specific runner' do it 'there is a specific runner' do
project.ci_runners << specific_runner project.runners << specific_runner
expect(project.any_runners?).to be_truthy expect(project.any_runners?).to be_truthy
end end
...@@ -529,7 +529,7 @@ describe Project, models: true do ...@@ -529,7 +529,7 @@ describe Project, models: true do
end end
it 'checks the presence of specific runner' do 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 expect(project.any_runners? { |runner| runner == specific_runner }).to be_truthy
end end
end end
......
...@@ -68,7 +68,7 @@ describe Ci::API::API do ...@@ -68,7 +68,7 @@ describe Ci::API::API do
it "returns variables" do it "returns variables" do
commit = FactoryGirl.create(:ci_commit, project: project) commit = FactoryGirl.create(:ci_commit, project: project)
commit.create_builds('master', false, nil) 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 } post ci_api("/builds/register"), token: runner.token, info: { platform: :darwin }
...@@ -87,7 +87,7 @@ describe Ci::API::API do ...@@ -87,7 +87,7 @@ describe Ci::API::API do
trigger_request = FactoryGirl.create(:ci_trigger_request_with_variables, commit: commit, trigger: trigger) trigger_request = FactoryGirl.create(:ci_trigger_request_with_variables, commit: commit, trigger: trigger)
commit.create_builds('master', false, nil, trigger_request) 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 } post ci_api("/builds/register"), token: runner.token, info: { platform: :darwin }
......
...@@ -34,7 +34,7 @@ describe Ci::API::API do ...@@ -34,7 +34,7 @@ describe Ci::API::API do
before { post ci_api("/runners/register"), token: project.token } before { post ci_api("/runners/register"), token: project.token }
it { expect(response.status).to eq(201) } 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 end
it "should return 403 error if token is invalid" do it "should return 403 error if token is invalid" do
......
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
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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment