Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
gitlab-ce
Commits
6384c757
Commit
6384c757
authored
Nov 09, 2015
by
Kamil Trzcinski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Expose CI enable option in project features
- Enable CI by default for all new projects
parent
37465f44
Changes
20
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
93 additions
and
25 deletions
+93
-25
app/controllers/projects/application_controller.rb
app/controllers/projects/application_controller.rb
+1
-1
app/controllers/projects_controller.rb
app/controllers/projects_controller.rb
+2
-1
app/helpers/projects_helper.rb
app/helpers/projects_helper.rb
+1
-1
app/models/project.rb
app/models/project.rb
+17
-6
app/services/git_push_service.rb
app/services/git_push_service.rb
+1
-1
app/services/projects/fork_service.rb
app/services/projects/fork_service.rb
+1
-1
app/views/layouts/nav/_project_settings.html.haml
app/views/layouts/nav/_project_settings.html.haml
+1
-1
app/views/projects/edit.html.haml
app/views/projects/edit.html.haml
+10
-1
app/views/projects/graphs/_head.html.haml
app/views/projects/graphs/_head.html.haml
+1
-1
config/gitlab.yml.example
config/gitlab.yml.example
+1
-0
config/initializers/1_settings.rb
config/initializers/1_settings.rb
+1
-0
doc/api/projects.md
doc/api/projects.md
+6
-0
lib/api/entities.rb
lib/api/entities.rb
+1
-1
lib/api/projects.rb
lib/api/projects.rb
+6
-0
spec/factories/ci/projects.rb
spec/factories/ci/projects.rb
+8
-4
spec/models/project_spec.rb
spec/models/project_spec.rb
+6
-3
spec/requests/api/projects_spec.rb
spec/requests/api/projects_spec.rb
+5
-2
spec/requests/api/services_spec.rb
spec/requests/api/services_spec.rb
+1
-0
spec/services/projects/create_service_spec.rb
spec/services/projects/create_service_spec.rb
+22
-0
spec/services/projects/fork_service_spec.rb
spec/services/projects/fork_service_spec.rb
+1
-1
No files found.
app/controllers/projects/application_controller.rb
View file @
6384c757
...
...
@@ -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
...
...
app/controllers/projects_controller.rb
View file @
6384c757
...
...
@@ -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
...
...
app/helpers/projects_helper.rb
View file @
6384c757
...
...
@@ -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
...
...
app/models/project.rb
View file @
6384c757
...
...
@@ -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
=
tr
ue
service
.
active
=
val
ue
service
.
save
end
def
enable_ci
self
.
builds_enabled
=
true
end
end
app/services/git_push_service.rb
View file @
6384c757
...
...
@@ -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
...
...
app/services/projects/fork_service.rb
View file @
6384c757
...
...
@@ -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
|
...
...
app/views/layouts/nav/_project_settings.html.haml
View file @
6384c757
...
...
@@ -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'
)
...
...
app/views/projects/edit.html.haml
View file @
6384c757
...
...
@@ -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
...
...
app/views/projects/graphs/_head.html.haml
View file @
6384c757
...
...
@@ -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
config/gitlab.yml.example
View file @
6384c757
...
...
@@ -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)
...
...
config/initializers/1_settings.rb
View file @
6384c757
...
...
@@ -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'
]
||=
[]
...
...
doc/api/projects.md
View file @
6384c757
...
...
@@ -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"
,
...
...
@@ -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"
,
...
...
@@ -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"
,
...
...
@@ -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
...
...
@@ -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
...
...
@@ -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
...
...
lib/api/entities.rb
View file @
6384c757
...
...
@@ -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?
}
...
...
lib/api/projects.rb
View file @
6384c757
...
...
@@ -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
...
...
@@ -90,6 +91,7 @@ module API
:description
,
:issues_enabled
,
:merge_requests_enabled
,
:builds_enabled
,
:wiki_enabled
,
:snippets_enabled
,
:namespace_id
,
...
...
@@ -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
...
...
@@ -132,6 +135,7 @@ module API
:default_branch
,
:issues_enabled
,
:merge_requests_enabled
,
:builds_enabled
,
:wiki_enabled
,
:snippets_enabled
,
:public
,
...
...
@@ -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
...
...
@@ -185,6 +190,7 @@ module API
:default_branch
,
:issues_enabled
,
:merge_requests_enabled
,
:builds_enabled
,
:wiki_enabled
,
:snippets_enabled
,
:public
,
...
...
spec/factories/ci/projects.rb
View file @
6384c757
...
...
@@ -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
spec/models/project_spec.rb
View file @
6384c757
...
...
@@ -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
...
...
spec/requests/api/projects_spec.rb
View file @
6384c757
...
...
@@ -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
...
...
spec/requests/api/services_spec.rb
View file @
6384c757
...
...
@@ -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
...
...
spec/services/projects/create_service_spec.rb
View file @
6384c757
...
...
@@ -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
])
...
...
spec/services/projects/fork_service_spec.rb
View file @
6384c757
...
...
@@ -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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment