Skip to content
Snippets Groups Projects
Commit 6384c757 authored by Kamil Trzcińśki's avatar Kamil Trzcińśki
Browse files

Expose CI enable option in project features

- Enable CI by default for all new projects
parent 37465f44
No related branches found
No related tags found
No related merge requests found
Showing
with 93 additions and 25 deletions
Loading
Loading
@@ -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
Loading
Loading
Loading
Loading
@@ -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
 
Loading
Loading
Loading
Loading
@@ -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
 
Loading
Loading
Loading
Loading
@@ -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
Loading
Loading
@@ -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
Loading
Loading
@@ -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
Loading
Loading
@@ -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
 
Loading
Loading
Loading
Loading
@@ -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|
Loading
Loading
Loading
Loading
@@ -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')
Loading
Loading
Loading
Loading
@@ -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
Loading
Loading
Loading
Loading
@@ -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
Loading
Loading
@@ -84,6 +84,7 @@ production: &base
merge_requests: true
wiki: true
snippets: false
builds: true
 
## Webhook settings
# Number of seconds to wait for HTTP response after sending webhook HTTP POST request (default: 10)
Loading
Loading
Loading
Loading
@@ -171,6 +171,7 @@ Settings.gitlab.default_projects_features['issues'] = true if Settings.g
Settings.gitlab.default_projects_features['merge_requests'] = true if Settings.gitlab.default_projects_features['merge_requests'].nil?
Settings.gitlab.default_projects_features['wiki'] = true if Settings.gitlab.default_projects_features['wiki'].nil?
Settings.gitlab.default_projects_features['snippets'] = false if Settings.gitlab.default_projects_features['snippets'].nil?
Settings.gitlab.default_projects_features['builds'] = true if Settings.gitlab.default_projects_features['builds'].nil?
Settings.gitlab.default_projects_features['visibility_level'] = Settings.send(:verify_constant, Gitlab::VisibilityLevel, Settings.gitlab.default_projects_features['visibility_level'], Gitlab::VisibilityLevel::PRIVATE)
Settings.gitlab['repository_downloads_path'] = File.join(Settings.shared['path'], 'cache/archive') if Settings.gitlab['repository_downloads_path'].nil?
Settings.gitlab['restricted_signup_domains'] ||= []
Loading
Loading
Loading
Loading
@@ -60,6 +60,7 @@ Parameters:
"path_with_namespace": "diaspora/diaspora-client",
"issues_enabled": true,
"merge_requests_enabled": true,
"builds_enabled": true,
"wiki_enabled": true,
"snippets_enabled": false,
"created_at": "2013-09-30T13: 46: 02Z",
Loading
Loading
@@ -101,6 +102,7 @@ Parameters:
"path_with_namespace": "brightbox/puppet",
"issues_enabled": true,
"merge_requests_enabled": true,
"builds_enabled": true,
"wiki_enabled": true,
"snippets_enabled": false,
"created_at": "2013-09-30T13:46:02Z",
Loading
Loading
@@ -191,6 +193,7 @@ Parameters:
"path_with_namespace": "diaspora/diaspora-project-site",
"issues_enabled": true,
"merge_requests_enabled": true,
"builds_enabled": true,
"wiki_enabled": true,
"snippets_enabled": false,
"created_at": "2013-09-30T13: 46: 02Z",
Loading
Loading
@@ -312,6 +315,7 @@ Parameters:
- `description` (optional) - short project description
- `issues_enabled` (optional)
- `merge_requests_enabled` (optional)
- `builds_enabled` (optional)
- `wiki_enabled` (optional)
- `snippets_enabled` (optional)
- `public` (optional) - if `true` same as setting visibility_level = 20
Loading
Loading
@@ -334,6 +338,7 @@ Parameters:
- `default_branch` (optional) - 'master' by default
- `issues_enabled` (optional)
- `merge_requests_enabled` (optional)
- `builds_enabled` (optional)
- `wiki_enabled` (optional)
- `snippets_enabled` (optional)
- `public` (optional) - if `true` same as setting visibility_level = 20
Loading
Loading
@@ -357,6 +362,7 @@ Parameters:
- `default_branch` (optional)
- `issues_enabled` (optional)
- `merge_requests_enabled` (optional)
- `builds_enabled` (optional)
- `wiki_enabled` (optional)
- `snippets_enabled` (optional)
- `public` (optional) - if `true` same as setting visibility_level = 20
Loading
Loading
Loading
Loading
@@ -62,7 +62,7 @@ module API
expose :owner, using: Entities::UserBasic, unless: ->(project, options) { project.group }
expose :name, :name_with_namespace
expose :path, :path_with_namespace
expose :issues_enabled, :merge_requests_enabled, :wiki_enabled, :snippets_enabled, :created_at, :last_activity_at
expose :issues_enabled, :merge_requests_enabled, :wiki_enabled, :builds_enabled, :snippets_enabled, :created_at, :last_activity_at
expose :creator_id
expose :namespace
expose :forked_from_project, using: Entities::ForkedFromProject, if: lambda{ | project, options | project.forked? }
Loading
Loading
Loading
Loading
@@ -75,6 +75,7 @@ module API
# description (optional) - short project description
# issues_enabled (optional)
# merge_requests_enabled (optional)
# builds_enabled (optional)
# wiki_enabled (optional)
# snippets_enabled (optional)
# namespace_id (optional) - defaults to user namespace
Loading
Loading
@@ -90,6 +91,7 @@ module API
:description,
:issues_enabled,
:merge_requests_enabled,
:builds_enabled,
:wiki_enabled,
:snippets_enabled,
:namespace_id,
Loading
Loading
@@ -117,6 +119,7 @@ module API
# default_branch (optional) - 'master' by default
# issues_enabled (optional)
# merge_requests_enabled (optional)
# builds_enabled (optional)
# wiki_enabled (optional)
# snippets_enabled (optional)
# public (optional) - if true same as setting visibility_level = 20
Loading
Loading
@@ -132,6 +135,7 @@ module API
:default_branch,
:issues_enabled,
:merge_requests_enabled,
:builds_enabled,
:wiki_enabled,
:snippets_enabled,
:public,
Loading
Loading
@@ -172,6 +176,7 @@ module API
# description (optional) - short project description
# issues_enabled (optional)
# merge_requests_enabled (optional)
# builds_enabled (optional)
# wiki_enabled (optional)
# snippets_enabled (optional)
# public (optional) - if true same as setting visibility_level = 20
Loading
Loading
@@ -185,6 +190,7 @@ module API
:default_branch,
:issues_enabled,
:merge_requests_enabled,
:builds_enabled,
:wiki_enabled,
:snippets_enabled,
:public,
Loading
Loading
Loading
Loading
@@ -31,16 +31,20 @@ FactoryGirl.define do
factory :ci_project_without_token, class: Ci::Project do
default_ref 'master'
 
gl_project factory: :empty_project
shared_runners_enabled false
 
factory :ci_project do
token 'iPWx6WM4lhHNedGfBpPJNP'
end
 
factory :ci_public_project do
public true
initialize_with do
# TODO:
# this is required, because builds_enabled is initialized when Project is created
# and this create gitlab_ci_project if builds is set to true
# here we take created gitlab_ci_project and update it's attributes
ci_project = create(:empty_project).ensure_gitlab_ci_project
ci_project.update_attributes(attributes)
ci_project
end
end
end
Loading
Loading
@@ -415,12 +415,15 @@ describe Project do
it { expect(project.ci_commit(commit.sha)).to eq(commit) }
end
 
describe :enable_ci do
describe :builds_enabled do
let(:project) { create :project }
 
before { project.enable_ci }
before { project.builds_enabled = true }
 
it { expect(project.gitlab_ci?).to be_truthy }
subject { project.builds_enabled }
it { is_expected.to eq(project.gitlab_ci_service.active) }
it { expect(project.builds_enabled?).to be_truthy }
it { expect(project.gitlab_ci_project).to be_a(Ci::Project) }
end
 
Loading
Loading
Loading
Loading
@@ -88,8 +88,11 @@ describe API::API, api: true do
end
 
it 'returns projects in the correct order when ci_enabled_first parameter is passed' do
[project, project2, project3].each{ |project| project.build_missing_services }
project2.gitlab_ci_service.update(active: true)
[project, project2, project3].each do |project|
project.builds_enabled = false
project.build_missing_services
end
project2.builds_enabled = true
get api('/projects', user), { ci_enabled_first: 'true' }
expect(response.status).to eq(200)
expect(json_response).to be_an Array
Loading
Loading
Loading
Loading
@@ -46,6 +46,7 @@ describe API::API, api: true do
delete api("/projects/#{project.id}/services/#{dashed_service}", user)
 
expect(response.status).to eq(200)
project.send(service_method).reload
expect(project.send(service_method).activated?).to be_falsey
end
end
Loading
Loading
Loading
Loading
@@ -70,6 +70,28 @@ describe Projects::CreateService do
end
end
 
context 'builds_enabled global setting' do
let(:project) { create_project(@user, @opts) }
subject { project.builds_enabled? }
context 'global builds_enabled false does not enable CI by default' do
before do
@opts.merge!(builds_enabled: false)
end
it { is_expected.to be_falsey }
end
context 'global builds_enabled true does enable CI by default' do
before do
@opts.merge!(builds_enabled: true)
end
it { is_expected.to be_truthy }
end
end
context 'restricted visibility level' do
before do
stub_application_setting(restricted_visibility_levels: [Gitlab::VisibilityLevel::PUBLIC])
Loading
Loading
Loading
Loading
@@ -46,7 +46,7 @@ describe Projects::ForkService do
it "fork and enable CI for fork" do
@from_project.enable_ci
@to_project = fork_project(@from_project, @to_user)
expect(@to_project.gitlab_ci?).to be_truthy
expect(@to_project.builds_enabled?).to be_truthy
end
end
end
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment