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]
|
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
|
||||||
|
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
|
|
||||||
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
|
||||||
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
|
||||||
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'
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -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)
|
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
|
||||||
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 @@
|
||||||
= 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 @@
|
||||||
= 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 @@
|
||||||
%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 @@
|
||||||
- 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 @@
|
||||||
- @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 @@
|
||||||
%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
|
||||||
)
|
)
|
||||||
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
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
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
|
||||||
@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
|
||||||
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
|
||||||
@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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
|
|
||||||
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
|
||||||
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
|
||||||
|
|
|
@ -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