summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorKamil Trzciński <ayufan@ayufan.eu>2015-11-13 17:55:16 +0000
committerKamil Trzciński <ayufan@ayufan.eu>2015-11-13 17:55:16 +0000
commiteaf27c6295394562eb734d8a10918f9cac301dbd (patch)
tree53a8104c9adceec0713c0ca53b18762b8f85c481 /app
parentf197b528ff8556d480914c7b5234addbb86b82d3 (diff)
parentfea2f214370420cdb86336881bfbcb24a994f6c6 (diff)
downloadgitlab-ce-eaf27c6295394562eb734d8a10918f9cac301dbd.tar.gz
Merge branch 'builds_feature' into 'master'
Expose builds feature Expose builds feature in project settings (as feature). Enable it by default for a new projects. I deliberately named it builds instead of CI, because we actualy allow to run tests using infrastructure built-in GitLab. I'm free to change it. ![Screen_Shot_2015-11-09_at_16.42.21](/uploads/a8af0a56fc0498688c0428ff22252d9c/Screen_Shot_2015-11-09_at_16.42.21.png) If we are ok, I'll add feature tests for it. /cc @sytses @dzaporozhets See merge request !1767
Diffstat (limited to 'app')
-rw-r--r--app/controllers/projects/application_controller.rb2
-rw-r--r--app/controllers/projects_controller.rb3
-rw-r--r--app/helpers/projects_helper.rb2
-rw-r--r--app/models/ci/project.rb24
-rw-r--r--app/models/project.rb23
-rw-r--r--app/services/git_push_service.rb2
-rw-r--r--app/services/projects/fork_service.rb2
-rw-r--r--app/views/layouts/nav/_project_settings.html.haml2
-rw-r--r--app/views/projects/edit.html.haml11
-rw-r--r--app/views/projects/graphs/_head.html.haml2
10 files changed, 35 insertions, 38 deletions
diff --git a/app/controllers/projects/application_controller.rb b/app/controllers/projects/application_controller.rb
index 519d6d6127e..d3f926b62bc 100644
--- a/app/controllers/projects/application_controller.rb
+++ b/app/controllers/projects/application_controller.rb
@@ -29,7 +29,7 @@ class Projects::ApplicationController < ApplicationController
private
def ci_enabled
- return render_404 unless @project.gitlab_ci?
+ return render_404 unless @project.builds_enabled?
end
def ci_project
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index 00d13a83ce8..30b166334a9 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -213,7 +213,8 @@ class ProjectsController < ApplicationController
params.require(:project).permit(
:name, :path, :description, :issues_tracker, :tag_list,
:issues_enabled, :merge_requests_enabled, :snippets_enabled, :issues_tracker_id, :default_branch,
- :wiki_enabled, :visibility_level, :import_url, :last_activity_at, :namespace_id, :avatar
+ :wiki_enabled, :visibility_level, :import_url, :last_activity_at, :namespace_id, :avatar,
+ :builds_enabled
)
end
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index 5301c2ccf76..690ae2090db 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -117,7 +117,7 @@ module ProjectsHelper
nav_tabs << :merge_requests
end
- if project.gitlab_ci? && can?(current_user, :read_build, project)
+ if project.builds_enabled? && can?(current_user, :read_build, project)
nav_tabs << :builds
end
diff --git a/app/models/ci/project.rb b/app/models/ci/project.rb
index 4e806ca1a68..f81417ba270 100644
--- a/app/models/ci/project.rb
+++ b/app/models/ci/project.rb
@@ -66,30 +66,6 @@ module Ci
class << self
include Ci::CurrentSettings
- def base_build_script
- <<-eos
- git submodule update --init
- ls -la
- eos
- end
-
- def parse(project)
- params = {
- gitlab_id: project.id,
- default_ref: project.default_branch || 'master',
- email_add_pusher: current_application_settings.add_pusher,
- email_only_broken_builds: current_application_settings.all_broken_builds,
- }
-
- project = Ci::Project.new(params)
- project.build_missing_services
- project
- end
-
- def already_added?(project)
- where(gitlab_id: project.id).any?
- end
-
def unassigned(runner)
joins("LEFT JOIN #{Ci::RunnerProject.table_name} ON #{Ci::RunnerProject.table_name}.project_id = #{Ci::Project.table_name}.id " \
"AND #{Ci::RunnerProject.table_name}.runner_id = #{runner.id}").
diff --git a/app/models/project.rb b/app/models/project.rb
index bdb22e49bb5..3e72a9a46a0 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -52,6 +52,7 @@ class Project < ActiveRecord::Base
default_value_for :visibility_level, gitlab_config_features.visibility_level
default_value_for :issues_enabled, gitlab_config_features.issues
default_value_for :merge_requests_enabled, gitlab_config_features.merge_requests
+ default_value_for :builds_enabled, gitlab_config_features.builds
default_value_for :wiki_enabled, gitlab_config_features.wiki
default_value_for :wall_enabled, false
default_value_for :snippets_enabled, gitlab_config_features.snippets
@@ -457,10 +458,6 @@ class Project < ActiveRecord::Base
list.find { |service| service.to_param == name }
end
- def gitlab_ci?
- gitlab_ci_service && gitlab_ci_service.active && gitlab_ci_project.present?
- end
-
def ci_services
services.select { |service| service.category == :ci }
end
@@ -782,9 +779,23 @@ class Project < ActiveRecord::Base
)
end
- def enable_ci
+ # TODO: this should be migrated to Project table,
+ # the same as issues_enabled
+ def builds_enabled
+ gitlab_ci_service && gitlab_ci_service.active
+ end
+
+ def builds_enabled?
+ builds_enabled
+ end
+
+ def builds_enabled=(value)
service = gitlab_ci_service || create_gitlab_ci_service
- service.active = true
+ service.active = value
service.save
end
+
+ def enable_ci
+ self.builds_enabled = true
+ end
end
diff --git a/app/services/git_push_service.rb b/app/services/git_push_service.rb
index 3de7bb9dcaa..ccb6b97858c 100644
--- a/app/services/git_push_service.rb
+++ b/app/services/git_push_service.rb
@@ -60,7 +60,7 @@ class GitPushService
# If CI was disabled but .gitlab-ci.yml file was pushed
# we enable CI automatically
- if !project.gitlab_ci? && gitlab_ci_yaml?(newrev)
+ if !project.builds_enabled? && gitlab_ci_yaml?(newrev)
project.enable_ci
end
diff --git a/app/services/projects/fork_service.rb b/app/services/projects/fork_service.rb
index 46374a3909a..5da1c7afd92 100644
--- a/app/services/projects/fork_service.rb
+++ b/app/services/projects/fork_service.rb
@@ -17,7 +17,7 @@ module Projects
new_project = CreateService.new(current_user, new_params).execute
if new_project.persisted?
- if @project.gitlab_ci?
+ if @project.builds_enabled?
new_project.enable_ci
settings = @project.gitlab_ci_project.attributes.select do |attr_name, value|
diff --git a/app/views/layouts/nav/_project_settings.html.haml b/app/views/layouts/nav/_project_settings.html.haml
index a59939ccd31..377a99e719a 100644
--- a/app/views/layouts/nav/_project_settings.html.haml
+++ b/app/views/layouts/nav/_project_settings.html.haml
@@ -34,7 +34,7 @@
%span
Protected Branches
- - if @project.gitlab_ci?
+ - if @project.builds_enabled?
= nav_link(controller: :runners) do
= link_to namespace_project_runners_path(@project.namespace, @project), title: 'Runners', data: {placement: 'right'} do
= icon('cog fw')
diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml
index afbf88b5507..3ebc175648e 100644
--- a/app/views/projects/edit.html.haml
+++ b/app/views/projects/edit.html.haml
@@ -57,7 +57,16 @@
= f.check_box :merge_requests_enabled
%strong Merge Requests
%br
- %span.descr Submit changes to be merged upstream.
+ %span.descr Submit changes to be merged upstream
+
+ .form-group
+ .col-sm-offset-2.col-sm-10
+ .checkbox
+ = f.label :builds_enabled do
+ = f.check_box :builds_enabled
+ %strong Builds
+ %br
+ %span.descr Test and deploy your changes before merge
.form-group
.col-sm-offset-2.col-sm-10
diff --git a/app/views/projects/graphs/_head.html.haml b/app/views/projects/graphs/_head.html.haml
index e0d06a14bf4..03d0733f913 100644
--- a/app/views/projects/graphs/_head.html.haml
+++ b/app/views/projects/graphs/_head.html.haml
@@ -3,7 +3,7 @@
= link_to 'Contributors', namespace_project_graph_path
= nav_link(action: :commits) do
= link_to 'Commits', commits_namespace_project_graph_path
- - if @project.gitlab_ci?
+ - if @project.builds_enabled?
= nav_link(action: :ci) do
= link_to ci_namespace_project_graph_path do
Continuous Integration