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
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Boxiang Sun
gitlab-ce
Commits
6a70c060
Commit
6a70c060
authored
May 12, 2016
by
James Lopez
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of gitlab.com:gitlab-org/gitlab-ce into fix/import-data-issue
parents
bade0ed6
95163307
Changes
30
Show whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
438 additions
and
111 deletions
+438
-111
CHANGELOG
CHANGELOG
+9
-0
app/assets/javascripts/user_tabs.js.coffee
app/assets/javascripts/user_tabs.js.coffee
+8
-1
app/controllers/admin/runners_controller.rb
app/controllers/admin/runners_controller.rb
+1
-1
app/controllers/projects/hooks_controller.rb
app/controllers/projects/hooks_controller.rb
+4
-2
app/controllers/projects/runners_controller.rb
app/controllers/projects/runners_controller.rb
+1
-1
app/controllers/snippets_controller.rb
app/controllers/snippets_controller.rb
+1
-1
app/controllers/users_controller.rb
app/controllers/users_controller.rb
+22
-0
app/helpers/events_helper.rb
app/helpers/events_helper.rb
+0
-9
app/helpers/projects_helper.rb
app/helpers/projects_helper.rb
+2
-2
app/models/ci/runner.rb
app/models/ci/runner.rb
+2
-1
app/models/hooks/web_hook.rb
app/models/hooks/web_hook.rb
+1
-1
app/views/admin/runners/show.html.haml
app/views/admin/runners/show.html.haml
+3
-19
app/views/layouts/header/_default.html.haml
app/views/layouts/header/_default.html.haml
+3
-2
app/views/projects/commits/_commits.html.haml
app/views/projects/commits/_commits.html.haml
+1
-1
app/views/projects/runners/_form.html.haml
app/views/projects/runners/_form.html.haml
+25
-0
app/views/projects/runners/edit.html.haml
app/views/projects/runners/edit.html.haml
+1
-25
app/views/users/show.html.haml
app/views/users/show.html.haml
+6
-0
config/routes.rb
config/routes.rb
+14
-18
doc/install/installation.md
doc/install/installation.md
+1
-1
doc/integration/cas.md
doc/integration/cas.md
+11
-8
doc/update/8.7-to-8.8.md
doc/update/8.7-to-8.8.md
+154
-0
doc/web_hooks/web_hooks.md
doc/web_hooks/web_hooks.md
+13
-0
features/steps/project/hooks.rb
features/steps/project/hooks.rb
+1
-1
lib/banzai/filter/wiki_link_filter.rb
lib/banzai/filter/wiki_link_filter.rb
+8
-3
lib/gitlab/metrics/instrumentation.rb
lib/gitlab/metrics/instrumentation.rb
+0
-2
spec/controllers/users_controller_spec.rb
spec/controllers/users_controller_spec.rb
+22
-0
spec/lib/banzai/filter/wiki_link_filter_spec.rb
spec/lib/banzai/filter/wiki_link_filter_spec.rb
+85
-0
spec/lib/gitlab/metrics/instrumentation_spec.rb
spec/lib/gitlab/metrics/instrumentation_spec.rb
+0
-6
spec/models/hooks/web_hook_spec.rb
spec/models/hooks/web_hook_spec.rb
+2
-2
spec/routing/routing_spec.rb
spec/routing/routing_spec.rb
+37
-4
No files found.
CHANGELOG
View file @
6a70c060
Please view this file on the master branch, on stable branches it's out of date.
Please view this file on the master branch, on stable branches it's out of date.
v 8.8.0 (unreleased)
v 8.8.0 (unreleased)
- Snippets tab under user profile. !4001 (Long Nguyen)
- Fix error when using link to uploads in global snippets
- Fix error when using link to uploads in global snippets
- Assign labels and milestone to target project when moving issue. !3934 (Long Nguyen)
- Assign labels and milestone to target project when moving issue. !3934 (Long Nguyen)
- Use a case-insensitive comparison in sanitizing URI schemes
- Use a case-insensitive comparison in sanitizing URI schemes
...
@@ -31,10 +32,12 @@ v 8.8.0 (unreleased)
...
@@ -31,10 +32,12 @@ v 8.8.0 (unreleased)
- Backport GitHub Enterprise import support from EE
- Backport GitHub Enterprise import support from EE
- Create tags using Rugged for performance reasons. !3745
- Create tags using Rugged for performance reasons. !3745
- API: Expose Issue#user_notes_count. !3126 (Anton Popov)
- API: Expose Issue#user_notes_count. !3126 (Anton Popov)
- Don't show forks button when user can't view forks
- Files over 5MB can only be viewed in their raw form, files over 1MB without highlighting !3718
- Files over 5MB can only be viewed in their raw form, files over 1MB without highlighting !3718
- Add support for supressing text diffs using .gitattributes on the default branch (Matt Oakes)
- Add support for supressing text diffs using .gitattributes on the default branch (Matt Oakes)
- Add eager load paths to help prevent dependency load issues in Sidekiq workers. !3724
- Add eager load paths to help prevent dependency load issues in Sidekiq workers. !3724
- Added multiple colors for labels in dropdowns when dups happen.
- Added multiple colors for labels in dropdowns when dups happen.
- Always group commits by server timezone, not commit timestamp
- Improve description for the Two-factor Authentication sign-in screen. (Connor Shea)
- Improve description for the Two-factor Authentication sign-in screen. (Connor Shea)
- API support for the 'since' and 'until' operators on commit requests (Paco Guzman)
- API support for the 'since' and 'until' operators on commit requests (Paco Guzman)
- Fix Gravatar hint in user profile when Gravatar is disabled. !3988 (Artem Sidorenko)
- Fix Gravatar hint in user profile when Gravatar is disabled. !3988 (Artem Sidorenko)
...
@@ -42,6 +45,12 @@ v 8.8.0 (unreleased)
...
@@ -42,6 +45,12 @@ v 8.8.0 (unreleased)
- Fix unintentional filtering bug in issues sorted by milestone due (Takuya Noguchi)
- Fix unintentional filtering bug in issues sorted by milestone due (Takuya Noguchi)
- Fix adding a todo for private group members (Ahmad Sherif)
- Fix adding a todo for private group members (Ahmad Sherif)
- Bump ace-rails-ap gem version from 2.0.1 to 4.0.2 which upgrades Ace Editor from 1.1.2 to 1.2.3
- Bump ace-rails-ap gem version from 2.0.1 to 4.0.2 which upgrades Ace Editor from 1.1.2 to 1.2.3
- Total method execution timings are no longer tracked
v 8.7.5
- Fix relative links in wiki pages. !4050
- Fix always showing build notification message when switching between merge requests !4086
- Fix an issue when filtering merge requests with more than one label. !3886
v 8.7.6
v 8.7.6
- Fix external imports not finding the import data
- Fix external imports not finding the import data
...
...
app/assets/javascripts/user_tabs.js.coffee
View file @
6a70c060
...
@@ -26,6 +26,10 @@
...
@@ -26,6 +26,10 @@
# Personal projects
# Personal projects
# </a>
# </a>
# </li>
# </li>
# <li class="snippets-tab">
# <a data-action="snippets" data-target="#snippets" data-toggle="tab" href="/u/username/snippets">
# </a>
# </li>
# </ul>
# </ul>
#
#
# <div class="tab-content">
# <div class="tab-content">
...
@@ -41,6 +45,9 @@
...
@@ -41,6 +45,9 @@
# <div class="tab-pane" id="projects">
# <div class="tab-pane" id="projects">
# Projects content
# Projects content
# </div>
# </div>
# <div class="tab-pane" id="snippets">
# Snippets content
# </div>
# </div>
# </div>
#
#
# <div class="loading-status">
# <div class="loading-status">
...
@@ -100,7 +107,7 @@ class @UserTabs
...
@@ -100,7 +107,7 @@ class @UserTabs
if
action
is
'activity'
if
action
is
'activity'
@
loadActivities
(
source
)
@
loadActivities
(
source
)
if
action
in
[
'groups'
,
'contributed'
,
'projects'
]
if
action
in
[
'groups'
,
'contributed'
,
'projects'
,
'snippets'
]
@
loadTab
(
source
,
action
)
@
loadTab
(
source
,
action
)
loadTab
:
(
source
,
action
)
->
loadTab
:
(
source
,
action
)
->
...
...
app/controllers/admin/runners_controller.rb
View file @
6a70c060
...
@@ -58,6 +58,6 @@ class Admin::RunnersController < Admin::ApplicationController
...
@@ -58,6 +58,6 @@ class Admin::RunnersController < Admin::ApplicationController
end
end
def
runner_params
def
runner_params
params
.
require
(
:runner
).
permit
(
:token
,
:description
,
:tag_list
,
:active
)
params
.
require
(
:runner
).
permit
(
Ci
::
Runner
::
FORM_EDITABLE
)
end
end
end
end
app/controllers/projects/hooks_controller.rb
View file @
6a70c060
...
@@ -27,8 +27,10 @@ class Projects::HooksController < Projects::ApplicationController
...
@@ -27,8 +27,10 @@ class Projects::HooksController < Projects::ApplicationController
if
!
@project
.
empty_repo?
if
!
@project
.
empty_repo?
status
,
message
=
TestHookService
.
new
.
execute
(
hook
,
current_user
)
status
,
message
=
TestHookService
.
new
.
execute
(
hook
,
current_user
)
if
status
if
status
&&
status
>=
200
&&
status
<
400
flash
[
:notice
]
=
'Hook successfully executed.'
flash
[
:notice
]
=
"Hook executed successfully: HTTP
#{
status
}
"
elsif
status
flash
[
:alert
]
=
"Hook executed successfully but returned HTTP
#{
status
}
#{
message
}
"
else
else
flash
[
:alert
]
=
"Hook execution failed:
#{
message
}
"
flash
[
:alert
]
=
"Hook execution failed:
#{
message
}
"
end
end
...
...
app/controllers/projects/runners_controller.rb
View file @
6a70c060
...
@@ -64,6 +64,6 @@ class Projects::RunnersController < Projects::ApplicationController
...
@@ -64,6 +64,6 @@ class Projects::RunnersController < Projects::ApplicationController
end
end
def
runner_params
def
runner_params
params
.
require
(
:runner
).
permit
(
:description
,
:tag_list
,
:active
)
params
.
require
(
:runner
).
permit
(
Ci
::
Runner
::
FORM_EDITABLE
)
end
end
end
end
app/controllers/snippets_controller.rb
View file @
6a70c060
...
@@ -10,7 +10,7 @@ class SnippetsController < ApplicationController
...
@@ -10,7 +10,7 @@ class SnippetsController < ApplicationController
# Allow destroy snippet
# Allow destroy snippet
before_action
:authorize_admin_snippet!
,
only:
[
:destroy
]
before_action
:authorize_admin_snippet!
,
only:
[
:destroy
]
skip_before_action
:authenticate_user!
,
only:
[
:index
,
:
user_index
,
:
show
,
:raw
]
skip_before_action
:authenticate_user!
,
only:
[
:index
,
:show
,
:raw
]
layout
'snippets'
layout
'snippets'
respond_to
:html
respond_to
:html
...
...
app/controllers/users_controller.rb
View file @
6a70c060
...
@@ -58,6 +58,19 @@ class UsersController < ApplicationController
...
@@ -58,6 +58,19 @@ class UsersController < ApplicationController
end
end
end
end
def
snippets
load_snippets
respond_to
do
|
format
|
format
.
html
{
render
'show'
}
format
.
json
do
render
json:
{
html:
view_to_html_string
(
"snippets/_snippets"
,
collection:
@snippets
)
}
end
end
end
def
calendar
def
calendar
calendar
=
contributions_calendar
calendar
=
contributions_calendar
@timestamps
=
calendar
.
timestamps
@timestamps
=
calendar
.
timestamps
...
@@ -116,6 +129,15 @@ class UsersController < ApplicationController
...
@@ -116,6 +129,15 @@ class UsersController < ApplicationController
@groups
=
JoinedGroupsFinder
.
new
(
user
).
execute
(
current_user
)
@groups
=
JoinedGroupsFinder
.
new
(
user
).
execute
(
current_user
)
end
end
def
load_snippets
@snippets
=
SnippetsFinder
.
new
.
execute
(
current_user
,
filter: :by_user
,
user:
user
,
scope:
params
[
:scope
]
).
page
(
params
[
:page
])
end
def
projects_for_current_user
def
projects_for_current_user
ProjectsFinder
.
new
.
execute
(
current_user
)
ProjectsFinder
.
new
.
execute
(
current_user
)
end
end
...
...
app/helpers/events_helper.rb
View file @
6a70c060
...
@@ -39,15 +39,6 @@ module EventsHelper
...
@@ -39,15 +39,6 @@ module EventsHelper
end
end
end
end
def
icon_for_event
{
EventFilter
.
push
=>
'upload'
,
EventFilter
.
merged
=>
'check-square-o'
,
EventFilter
.
comments
=>
'comments'
,
EventFilter
.
team
=>
'user'
,
}
end
def
event_preposition
(
event
)
def
event_preposition
(
event
)
if
event
.
push?
||
event
.
commented?
||
event
.
target
if
event
.
push?
||
event
.
commented?
||
event
.
target
"at"
"at"
...
...
app/helpers/projects_helper.rb
View file @
6a70c060
...
@@ -138,10 +138,10 @@ module ProjectsHelper
...
@@ -138,10 +138,10 @@ module ProjectsHelper
private
private
def
get_project_nav_tabs
(
project
,
current_user
)
def
get_project_nav_tabs
(
project
,
current_user
)
nav_tabs
=
[
:home
,
:forks
]
nav_tabs
=
[
:home
]
if
!
project
.
empty_repo?
&&
can?
(
current_user
,
:download_code
,
project
)
if
!
project
.
empty_repo?
&&
can?
(
current_user
,
:download_code
,
project
)
nav_tabs
<<
[
:files
,
:commits
,
:network
,
:graphs
]
nav_tabs
<<
[
:files
,
:commits
,
:network
,
:graphs
,
:forks
]
end
end
if
project
.
repo_exists?
&&
can?
(
current_user
,
:read_merge_request
,
project
)
if
project
.
repo_exists?
&&
can?
(
current_user
,
:read_merge_request
,
project
)
...
...
app/models/ci/runner.rb
View file @
6a70c060
...
@@ -3,7 +3,8 @@ module Ci
...
@@ -3,7 +3,8 @@ module Ci
extend
Ci
::
Model
extend
Ci
::
Model
LAST_CONTACT_TIME
=
5
.
minutes
.
ago
LAST_CONTACT_TIME
=
5
.
minutes
.
ago
AVAILABLE_SCOPES
=
[
'specific'
,
'shared'
,
'active'
,
'paused'
,
'online'
]
AVAILABLE_SCOPES
=
%w[specific shared active paused online]
FORM_EDITABLE
=
%i[description tag_list active]
has_many
:builds
,
class_name:
'Ci::Build'
has_many
:builds
,
class_name:
'Ci::Build'
has_many
:runner_projects
,
dependent: :destroy
,
class_name:
'Ci::RunnerProject'
has_many
:runner_projects
,
dependent: :destroy
,
class_name:
'Ci::RunnerProject'
...
...
app/models/hooks/web_hook.rb
View file @
6a70c060
...
@@ -38,7 +38,7 @@ class WebHook < ActiveRecord::Base
...
@@ -38,7 +38,7 @@ class WebHook < ActiveRecord::Base
basic_auth:
auth
)
basic_auth:
auth
)
end
end
[
(
response
.
code
>=
200
&&
response
.
code
<
300
),
ActionView
::
Base
.
full_sanitizer
.
sanitize
(
response
.
to_s
)
]
[
response
.
code
,
response
.
to_s
]
rescue
SocketError
,
OpenSSL
::
SSL
::
SSLError
,
Errno
::
ECONNRESET
,
Errno
::
ECONNREFUSED
,
Net
::
OpenTimeout
=>
e
rescue
SocketError
,
OpenSSL
::
SSL
::
SSLError
,
Errno
::
ECONNRESET
,
Errno
::
ECONNREFUSED
,
Net
::
OpenTimeout
=>
e
logger
.
error
(
"WebHook Error =>
#{
e
}
"
)
logger
.
error
(
"WebHook Error =>
#{
e
}
"
)
[
false
,
e
.
to_s
]
[
false
,
e
.
to_s
]
...
...
app/views/admin/runners/show.html.haml
View file @
6a70c060
...
@@ -22,25 +22,9 @@
...
@@ -22,25 +22,9 @@
%h4
This runner will process builds only from ASSIGNED projects
%h4
This runner will process builds only from ASSIGNED projects
%p
You can't make this a shared runner.
%p
You can't make this a shared runner.
%hr
%hr
=
form_for
@runner
,
url:
admin_runner_path
(
@runner
),
html:
{
class:
'form-horizontal'
}
do
|
f
|
.form-group
.append-bottom-20
=
label_tag
:token
,
class:
'control-label'
do
=
render
'/projects/runners/form'
,
runner:
@runner
,
runner_form_url:
admin_runner_path
(
@runner
)
Token
.col-sm-10
=
f
.
text_field
:token
,
class:
'form-control'
,
readonly:
true
.form-group
=
label_tag
:description
,
class:
'control-label'
do
Description
.col-sm-10
=
f
.
text_field
:description
,
class:
'form-control'
.form-group
=
label_tag
:tag_list
,
class:
'control-label'
do
Tags
.col-sm-10
=
f
.
text_field
:tag_list
,
value:
@runner
.
tag_list
.
to_s
,
class:
'form-control'
.help-block
You can setup builds to only use runners with specific tags
.form-actions
=
f
.
submit
'Save'
,
class:
'btn btn-save'
.row
.row
.col-md-6
.col-md-6
...
...
app/views/layouts/header/_default.html.haml
View file @
6a70c060
...
@@ -27,6 +27,7 @@
...
@@ -27,6 +27,7 @@
%li
%li
=
link_to
dashboard_todos_path
,
title:
'Todos'
,
data:
{
toggle:
'tooltip'
,
placement:
'bottom'
,
container:
'body'
}
do
=
link_to
dashboard_todos_path
,
title:
'Todos'
,
data:
{
toggle:
'tooltip'
,
placement:
'bottom'
,
container:
'body'
}
do
=
icon
(
'bell fw'
)
=
icon
(
'bell fw'
)
-
unless
todos_pending_count
==
0
%span
.badge.todos-pending-count
%span
.badge.todos-pending-count
=
todos_pending_count
=
todos_pending_count
-
if
current_user
.
can_create_project?
-
if
current_user
.
can_create_project?
...
...
app/views/projects/commits/_commits.html.haml
View file @
6a70c060
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
-
commits
,
hidden
=
limited_commits
(
@commits
)
-
commits
,
hidden
=
limited_commits
(
@commits
)
-
commits
.
group_by
{
|
c
|
c
.
committed_date
.
to_date
}.
sort
.
reverse
.
each
do
|
day
,
commits
|
-
commits
.
group_by
{
|
c
|
c
.
committed_date
.
in_time_zone
.
to_date
}.
sort
.
reverse
.
each
do
|
day
,
commits
|
.row.commits-row
.row.commits-row
.col-md-2.hidden-xs.hidden-sm
.col-md-2.hidden-xs.hidden-sm
%h5
.commits-row-date
%h5
.commits-row-date
...
...
app/views/projects/runners/_form.html.haml
0 → 100644
View file @
6a70c060
=
form_for
runner
,
url:
runner_form_url
,
html:
{
class:
'form-horizontal'
}
do
|
f
|
.form-group
=
label
:active
,
"Active"
,
class:
'control-label'
.col-sm-10
.checkbox
=
f
.
check_box
:active
%span
.light
Paused runners don't accept new builds
.form-group
=
label_tag
:token
,
class:
'control-label'
do
Token
.col-sm-10
=
f
.
text_field
:token
,
class:
'form-control'
,
readonly:
true
.form-group
=
label_tag
:description
,
class:
'control-label'
do
Description
.col-sm-10
=
f
.
text_field
:description
,
class:
'form-control'
.form-group
=
label_tag
:tag_list
,
class:
'control-label'
do
Tags
.col-sm-10
=
f
.
text_field
:tag_list
,
value:
runner
.
tag_list
.
to_s
,
class:
'form-control'
.help-block
You can setup jobs to only use runners with specific tags
.form-actions
=
f
.
submit
'Save changes'
,
class:
'btn btn-save'
app/views/projects/runners/edit.html.haml
View file @
6a70c060
...
@@ -2,28 +2,4 @@
...
@@ -2,28 +2,4 @@
%h4
Runner ##{@runner.id}
%h4
Runner ##{@runner.id}
%hr
%hr
=
form_for
@runner
,
url:
runner_path
(
@runner
),
html:
{
class:
'form-horizontal'
}
do
|
f
|
=
render
'form'
,
runner:
@runner
,
runner_form_url:
runner_path
(
@runner
)
.form-group
=
label
:active
,
"Active"
,
class:
'control-label'
.col-sm-10
.checkbox
=
f
.
check_box
:active
%span
.light
Paused runners don't accept new builds
.form-group
=
label_tag
:token
,
class:
'control-label'
do
Token
.col-sm-10
=
f
.
text_field
:token
,
class:
'form-control'
,
readonly:
true
.form-group
=
label_tag
:description
,
class:
'control-label'
do
Description
.col-sm-10
=
f
.
text_field
:description
,
class:
'form-control'
.form-group
=
label_tag
:tag_list
,
class:
'control-label'
do
Tags
.col-sm-10
=
f
.
text_field
:tag_list
,
value:
@runner
.
tag_list
.
to_s
,
class:
'form-control'
.help-block
You can setup jobs to only use runners with specific tags
.form-actions
=
f
.
submit
'Save changes'
,
class:
'btn btn-save'
app/views/users/show.html.haml
View file @
6a70c060
...
@@ -81,6 +81,9 @@
...
@@ -81,6 +81,9 @@
%li
.projects-tab
%li
.projects-tab
=
link_to
user_projects_path
,
data:
{
target:
'div#projects'
,
action:
'projects'
,
toggle:
'tab'
}
do
=
link_to
user_projects_path
,
data:
{
target:
'div#projects'
,
action:
'projects'
,
toggle:
'tab'
}
do
Personal projects
Personal projects
%li
.snippets-tab
=
link_to
user_snippets_path
,
data:
{
target:
'div#snippets'
,
action:
'snippets'
,
toggle:
'tab'
}
do
Snippets
%div
{
class:
container_class
}
%div
{
class:
container_class
}
.tab-content
.tab-content
...
@@ -104,6 +107,9 @@
...
@@ -104,6 +107,9 @@
#projects
.tab-pane
#projects
.tab-pane
-
# This tab is always loaded via AJAX
-
# This tab is always loaded via AJAX
#snippets
.tab-pane
-
# This tab is always loaded via AJAX
.loading-status
.loading-status
=
spinner
=
spinner
...
...
config/routes.rb
View file @
6a70c060
...
@@ -91,7 +91,8 @@ Rails.application.routes.draw do
...
@@ -91,7 +91,8 @@ Rails.application.routes.draw do
end
end
end
end
get
'/s/:username'
=>
'snippets#index'
,
as: :user_snippets
,
constraints:
{
username:
/.*/
}
get
'/s/:username'
,
to:
redirect
(
'/u/%{username}/snippets'
),
constraints:
{
username:
/[a-zA-Z.0-9_\-]+(?<!\.atom)/
}
#
#
# Invites
# Invites
...
@@ -342,23 +343,18 @@ Rails.application.routes.draw do
...
@@ -342,23 +343,18 @@ Rails.application.routes.draw do
end
end
end
end
get
'u/:username/calendar'
=>
'users#calendar'
,
as: :user_calendar
,
scope
(
path:
'u/:username'
,
constraints:
{
username:
/.*/
}
as: :user
,
constraints:
{
username:
/[a-zA-Z.0-9_\-]+(?<!\.atom)/
},
get
'u/:username/calendar_activities'
=>
'users#calendar_activities'
,
as: :user_calendar_activities
,
controller: :users
)
do
constraints:
{
username:
/.*/
}
get
:calendar
get
:calendar_activities
get
'u/:username/groups'
=>
'users#groups'
,
as: :user_groups
,
get
:groups
constraints:
{
username:
/.*/
}
get
:projects
get
:contributed
,
as: :contributed_projects
get
'u/:username/projects'
=>
'users#projects'
,
as: :user_projects
,
get
:snippets
constraints:
{
username:
/.*/
}
get
'/'
,
action: :show
end
get
'u/:username/contributed'
=>
'users#contributed'
,
as: :user_contributed_projects
,
constraints:
{
username:
/.*/
}
get
'/u/:username'
=>
'users#show'
,
as: :user
,
constraints:
{
username:
/[a-zA-Z.0-9_\-]+(?<!\.atom)/
}
#
#
# Dashboard Area
# Dashboard Area
...
...
doc/install/installation.md
View file @
6a70c060
...
@@ -269,7 +269,7 @@ sudo usermod -aG redis git
...
@@ -269,7 +269,7 @@ sudo usermod -aG redis git
### Clone the Source
### Clone the Source
# Clone GitLab repository
# Clone GitLab repository
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 8-
7
-stable gitlab
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 8-
8
-stable gitlab
**Note:**
You can change
`8-7-stable`
to
`master`
if you want the
*bleeding edge*
version, but never install master on a production server!
**Note:**
You can change
`8-7-stable`
to
`master`
if you want the
*bleeding edge*
version, but never install master on a production server!
...
...
doc/integration/cas.md
View file @
6a70c060
...
@@ -27,18 +27,19 @@ To enable the CAS OmniAuth provider you must register your application with your
...
@@ -27,18 +27,19 @@ To enable the CAS OmniAuth provider you must register your application with your
```ruby
```ruby
gitlab_rails['omniauth_providers'] = [
gitlab_rails['omniauth_providers'] = [
{
{
name:
"cas3",
"name"=>
"cas3",
label:
"cas",
"label"=>
"cas",
args:
{
"args"=>
{
url:
'CAS_SERVER',
"url"=>
'CAS_SERVER',
login_url:
'/CAS_PATH/login',
"login_url"=>
'/CAS_PATH/login',
service_validate_url:
'/CAS_PATH/p3/serviceValidate',
"service_validate_url"=>
'/CAS_PATH/p3/serviceValidate',
logout_url: '/CAS_PATH/logout'} }
"logout_url"=> '/CAS_PATH/logout'
}
}
}
}
]
]
```
```
For installations from source:
For installations from source:
```
```
...
@@ -57,6 +58,8 @@ To enable the CAS OmniAuth provider you must register your application with your
...
@@ -57,6 +58,8 @@ To enable the CAS OmniAuth provider you must register your application with your
1.
Save the configuration file.
1.
Save the configuration file.
1.
Run
`gitlab-ctl reconfigure`
for the omnibus package.
1.
Restart GitLab for the changes to take effect.
1.
Restart GitLab for the changes to take effect.
On the sign in page there should now be a CAS tab in the sign in form.
On the sign in page there should now be a CAS tab in the sign in form.
doc/update/8.7-to-8.8.md
0 → 100644
View file @
6a70c060
# From 8.7 to 8.8
Make sure you view this update guide from the tag (version) of GitLab you would
like to install. In most cases this should be the highest numbered production
tag (without rc in it). You can select the tag in the version dropdown at the
top left corner of GitLab (below the menu bar).
If the highest number stable branch is unclear please check the
[
GitLab Blog
](
https://about.gitlab.com/blog/archives.html
)
for installation
guide links by version.
### 1. Stop server
sudo service gitlab stop
### 2. Backup
```
bash
cd
/home/git/gitlab
sudo
-u
git
-H
bundle
exec
rake gitlab:backup:create
RAILS_ENV
=
production
```
### 3. Get latest code
```
bash
sudo
-u
git
-H
git fetch
--all
sudo
-u
git
-H
git checkout
--
db/schema.rb
# local changes will be restored automatically
```
For GitLab Community Edition:
```
bash
sudo
-u
git
-H
git checkout 8-8-stable
```
OR
For GitLab Enterprise Edition:
```
bash
sudo
-u
git
-H
git checkout 8-8-stable-ee
```
### 4. Update gitlab-shell
```
bash
cd
/home/git/gitlab-shell
sudo
-u
git
-H
git fetch
--all
--tags
sudo
-u
git
-H
git checkout v2.7.2
```
### 5. Update gitlab-workhorse
Install and compile gitlab-workhorse. This requires
[
Go 1.5
](
https://golang.org/dl
)
which should already be on your system from
GitLab 8.1.
```
bash
cd
/home/git/gitlab-workhorse
sudo
-u
git
-H
git fetch
--all
sudo
-u
git
-H
git checkout v0.7.1
sudo
-u
git
-H
make
```
### 6. Install libs, migrations, etc.
```
bash
cd
/home/git/gitlab
# MySQL installations (note: the line below states '--without postgres')
sudo
-u
git
-H
bundle
install
--without
postgres development
test
--deployment
# PostgreSQL installations (note: the line below states '--without mysql')
sudo
-u
git
-H
bundle
install
--without
mysql development
test
--deployment
# Optional: clean up old gems
sudo
-u
git
-H
bundle clean
# Run database migrations
sudo
-u
git
-H
bundle
exec
rake db:migrate
RAILS_ENV
=
production
# Clean up assets and cache
sudo
-u
git
-H
bundle
exec
rake assets:clean assets:precompile cache:clear
RAILS_ENV
=
production
```
### 7. Update configuration files
#### Git configuration
Disable
`git gc --auto`
because GitLab runs
`git gc`
for us already.
```
sh
sudo
-u
git
-H
git config
--global
gc.auto 0
```
#### Nginx configuration
Ensure you're still up-to-date with the latest NGINX configuration changes:
```
sh
# For HTTPS configurations
git diff origin/8-7-stable:lib/support/nginx/gitlab-ssl origin/8-8-stable:lib/support/nginx/gitlab-ssl
# For HTTP configurations
git diff origin/8-7-stable:lib/support/nginx/gitlab origin/8-8-stable:lib/support/nginx/gitlab
```
If you are using Apache instead of NGINX please see the updated [Apache templates].
Also note that because Apache does not support upstreams behind Unix sockets you
will need to let gitlab-workhorse listen on a TCP port. You can do this
via [/etc/default/gitlab].
[
Apache templates
]:
https://gitlab.com/gitlab-org/gitlab-recipes/tree/master/web-server/apache
[
/etc/default/gitlab
]:
https://gitlab.com/gitlab-org/gitlab-ce/blob/8-8-stable/lib/support/init.d/gitlab.default.example#L37
#### Init script
Ensure you're still up-to-date with the latest init script changes:
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
### 8. Start application
sudo service gitlab start
sudo service nginx restart
### 9. Check application status
Check if GitLab and its environment are configured correctly:
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
To make sure you didn't miss anything run a more thorough check:
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
If all items are green, then congratulations, the upgrade is complete!
## Things went south? Revert to previous version (8.6)
### 1. Revert the code to the previous version
Follow the
[
upgrade guide from 8.6 to 8.7
](
8.6-to-8.7.md
)
, except for the
database migration (the backup is already migrated to the previous version).
### 2. Restore from the backup
```
bash
cd
/home/git/gitlab
sudo
-u
git
-H
bundle
exec
rake gitlab:backup:restore
RAILS_ENV
=
production
```
If you have more than one backup
`*.tar`
file(s) please add
`BACKUP=timestamp_of_backup`
to the command above.
doc/web_hooks/web_hooks.md
View file @
6a70c060
...
@@ -13,6 +13,19 @@ You can configure webhooks to listen for specific events like pushes, issues or
...
@@ -13,6 +13,19 @@ You can configure webhooks to listen for specific events like pushes, issues or
Webhooks can be used to update an external issue tracker, trigger CI builds, update a backup mirror, or even deploy to your production server.
Webhooks can be used to update an external issue tracker, trigger CI builds, update a backup mirror, or even deploy to your production server.
## Webhook endpoint tips
If you are writing your own endpoint (web server) that will receive
GitLab webhooks keep in mind the following things:
-
Your endpoint should send its HTTP response as fast as possible. If
you wait too long, GitLab may decide the hook failed and retry it.
-
Your endpoint should ALWAYS return a valid HTTP response. If you do
not do this then GitLab will think the hook failed and retry it.
Most HTTP libraries take care of this for you automatically but if
you are writing a low-level hook this is important to remember.
-
GitLab ignores the HTTP status code returned by your endpoint.
## SSL Verification
## SSL Verification
By default, the SSL certificate of the webhook endpoint is verified based on
By default, the SSL certificate of the webhook endpoint is verified based on
...
...
features/steps/project/hooks.rb
View file @
6a70c060
...
@@ -59,7 +59,7 @@ class Spinach::Features::ProjectHooks < Spinach::FeatureSteps
...
@@ -59,7 +59,7 @@ class Spinach::Features::ProjectHooks < Spinach::FeatureSteps
step
'hook should be triggered'
do
step
'hook should be triggered'
do
expect
(
current_path
).
to
eq
namespace_project_hooks_path
(
current_project
.
namespace
,
current_project
)
expect
(
current_path
).
to
eq
namespace_project_hooks_path
(
current_project
.
namespace
,
current_project
)
expect
(
page
).
to
have_selector
'.flash-notice'
,
expect
(
page
).
to
have_selector
'.flash-notice'
,
text:
'Hook
successfully executed.
'
text:
'Hook
executed successfully: HTTP 200
'
end
end
step
'I should see hook error message'
do
step
'I should see hook error message'
do
...
...
lib/banzai/filter/wiki_link_filter.rb
View file @
6a70c060
...
@@ -25,7 +25,7 @@ module Banzai
...
@@ -25,7 +25,7 @@ module Banzai
end
end
def
process_link_attr
(
html_attr
)
def
process_link_attr
(
html_attr
)
return
if
html_attr
.
blank?
||
file_reference?
(
html_attr
)
return
if
html_attr
.
blank?
||
file_reference?
(
html_attr
)
||
hierarchical_link?
(
html_attr
)
uri
=
URI
(
html_attr
.
value
)
uri
=
URI
(
html_attr
.
value
)
if
uri
.
relative?
&&
uri
.
path
.
present?
if
uri
.
relative?
&&
uri
.
path
.
present?
...
@@ -40,12 +40,17 @@ module Banzai
...
@@ -40,12 +40,17 @@ module Banzai
uri
uri
end
end
def
project_wiki
context
[
:project_wiki
]
end
def
file_reference?
(
html_attr
)
def
file_reference?
(
html_attr
)
!
File
.
extname
(
html_attr
.
value
).
blank?
!
File
.
extname
(
html_attr
.
value
).
blank?
end
end
def
project_wiki
# Of the form `./link`, `../link`, or similar
context
[
:project_wiki
]
def
hierarchical_link?
(
html_attr
)
html_attr
.
value
[
0
]
==
'.'
end
end
def
project_wiki_base_path
def
project_wiki_base_path
...
...
lib/gitlab/metrics/instrumentation.rb
View file @
6a70c060
...
@@ -154,8 +154,6 @@ module Gitlab
...
@@ -154,8 +154,6 @@ module Gitlab
duration = (Time.now - start) * 1000.0
duration = (Time.now - start) * 1000.0
if duration >= Gitlab::Metrics.method_call_threshold
if duration >= Gitlab::Metrics.method_call_threshold
trans.increment(:method_duration, duration)
trans.add_metric(Gitlab::Metrics::Instrumentation::SERIES,
trans.add_metric(Gitlab::Metrics::Instrumentation::SERIES,
{ duration: duration },
{ duration: duration },
method:
#{
label
.
inspect
}
)
method:
#{
label
.
inspect
}
)
...
...
spec/controllers/users_controller_spec.rb
View file @
6a70c060
...
@@ -112,4 +112,26 @@ describe UsersController do
...
@@ -112,4 +112,26 @@ describe UsersController do
expect
(
response
).
to
render_template
(
'calendar_activities'
)
expect
(
response
).
to
render_template
(
'calendar_activities'
)
end
end
end
end
describe
'GET #snippets'
do
before
do
sign_in
(
user
)
end
context
'format html'
do
it
'renders snippets page'
do
get
:snippets
,
username:
user
.
username
expect
(
response
.
status
).
to
eq
(
200
)
expect
(
response
).
to
render_template
(
'show'
)
end
end
context
'format json'
do
it
'response with snippets json data'
do
get
:snippets
,
username:
user
.
username
,
format: :json
expect
(
response
.
status
).
to
eq
(
200
)
expect
(
JSON
.
parse
(
response
.
body
)).
to
have_key
(
'html'
)
end
end
end
end
end
spec/lib/banzai/filter/wiki_link_filter_spec.rb
0 → 100644
View file @
6a70c060
require
'spec_helper'
describe
Banzai
::
Filter
::
WikiLinkFilter
,
lib:
true
do
include
FilterSpecHelper
let
(
:namespace
)
{
build_stubbed
(
:namespace
,
name:
"wiki_link_ns"
)
}
let
(
:project
)
{
build_stubbed
(
:empty_project
,
:public
,
name:
"wiki_link_project"
,
namespace:
namespace
)
}
let
(
:user
)
{
double
}
let
(
:project_wiki
)
{
ProjectWiki
.
new
(
project
,
user
)
}
describe
"links within the wiki (relative)"
do
describe
"hierarchical links to the current directory"
do
it
"doesn't rewrite non-file links"
do
link
=
"<a href='./page'>Link to Page</a>"
filtered_link
=
filter
(
link
,
project_wiki:
project_wiki
).
children
[
0
]
expect
(
filtered_link
.
attribute
(
'href'
).
value
).
to
eq
(
'./page'
)
end
it
"doesn't rewrite file links"
do
link
=
"<a href='./page.md'>Link to Page</a>"
filtered_link
=
filter
(
link
,
project_wiki:
project_wiki
).
children
[
0
]
expect
(
filtered_link
.
attribute
(
'href'
).
value
).
to
eq
(
'./page.md'
)
end
end
describe
"hierarchical links to the parent directory"
do
it
"doesn't rewrite non-file links"
do
link
=
"<a href='../page'>Link to Page</a>"
filtered_link
=
filter
(
link
,
project_wiki:
project_wiki
).
children
[
0
]
expect
(
filtered_link
.
attribute
(
'href'
).
value
).
to
eq
(
'../page'
)
end
it
"doesn't rewrite file links"
do
link
=
"<a href='../page.md'>Link to Page</a>"
filtered_link
=
filter
(
link
,
project_wiki:
project_wiki
).
children
[
0
]
expect
(
filtered_link
.
attribute
(
'href'
).
value
).
to
eq
(
'../page.md'
)
end
end
describe
"hierarchical links to a sub-directory"
do
it
"doesn't rewrite non-file links"
do
link
=
"<a href='./subdirectory/page'>Link to Page</a>"
filtered_link
=
filter
(
link
,
project_wiki:
project_wiki
).
children
[
0
]
expect
(
filtered_link
.
attribute
(
'href'
).
value
).
to
eq
(
'./subdirectory/page'
)
end
it
"doesn't rewrite file links"
do
link
=
"<a href='./subdirectory/page.md'>Link to Page</a>"
filtered_link
=
filter
(
link
,
project_wiki:
project_wiki
).
children
[
0
]
expect
(
filtered_link
.
attribute
(
'href'
).
value
).
to
eq
(
'./subdirectory/page.md'
)
end
end
describe
"non-hierarchical links"
do
it
'rewrites non-file links to be at the scope of the wiki root'
do
link
=
"<a href='page'>Link to Page</a>"
filtered_link
=
filter
(
link
,
project_wiki:
project_wiki
).
children
[
0
]
expect
(
filtered_link
.
attribute
(
'href'
).
value
).
to
match
(
'/wiki_link_ns/wiki_link_project/wikis/page'
)
end
it
"doesn't rewrite file links"
do
link
=
"<a href='page.md'>Link to Page</a>"
filtered_link
=
filter
(
link
,
project_wiki:
project_wiki
).
children
[
0
]
expect
(
filtered_link
.
attribute
(
'href'
).
value
).
to
eq
(
'page.md'
)
end
end
end
describe
"links outside the wiki (absolute)"
do
it
"doesn't rewrite links"
do
link
=
"<a href='http://example.com/page'>Link to Page</a>"
filtered_link
=
filter
(
link
,
project_wiki:
project_wiki
).
children
[
0
]
expect
(
filtered_link
.
attribute
(
'href'
).
value
).
to
eq
(
'http://example.com/page'
)
end
end
end
spec/lib/gitlab/metrics/instrumentation_spec.rb
View file @
6a70c060
...
@@ -56,9 +56,6 @@ describe Gitlab::Metrics::Instrumentation do
...
@@ -56,9 +56,6 @@ describe Gitlab::Metrics::Instrumentation do
allow
(
described_class
).
to
receive
(
:transaction
).
allow
(
described_class
).
to
receive
(
:transaction
).
and_return
(
transaction
)
and_return
(
transaction
)
expect
(
transaction
).
to
receive
(
:increment
).
with
(
:method_duration
,
a_kind_of
(
Numeric
))
expect
(
transaction
).
to
receive
(
:add_metric
).
expect
(
transaction
).
to
receive
(
:add_metric
).
with
(
described_class
::
SERIES
,
an_instance_of
(
Hash
),
with
(
described_class
::
SERIES
,
an_instance_of
(
Hash
),
method:
'Dummy.foo'
)
method:
'Dummy.foo'
)
...
@@ -139,9 +136,6 @@ describe Gitlab::Metrics::Instrumentation do
...
@@ -139,9 +136,6 @@ describe Gitlab::Metrics::Instrumentation do
allow
(
described_class
).
to
receive
(
:transaction
).
allow
(
described_class
).
to
receive
(
:transaction
).
and_return
(
transaction
)
and_return
(
transaction
)
expect
(
transaction
).
to
receive
(
:increment
).
with
(
:method_duration
,
a_kind_of
(
Numeric
))
expect
(
transaction
).
to
receive
(
:add_metric
).
expect
(
transaction
).
to
receive
(
:add_metric
).
with
(
described_class
::
SERIES
,
an_instance_of
(
Hash
),
with
(
described_class
::
SERIES
,
an_instance_of
(
Hash
),
method:
'Dummy#bar'
)
method:
'Dummy#bar'
)
...
...
spec/models/hooks/web_hook_spec.rb
View file @
6a70c060
...
@@ -95,13 +95,13 @@ describe WebHook, models: true do
...
@@ -95,13 +95,13 @@ describe WebHook, models: true do
it
"handles 200 status code"
do
it
"handles 200 status code"
do
WebMock
.
stub_request
(
:post
,
project_hook
.
url
).
to_return
(
status:
200
,
body:
"Success"
)
WebMock
.
stub_request
(
:post
,
project_hook
.
url
).
to_return
(
status:
200
,
body:
"Success"
)
expect
(
project_hook
.
execute
(
@data
,
'push_hooks'
)).
to
eq
([
true
,
'Success'
])
expect
(
project_hook
.
execute
(
@data
,
'push_hooks'
)).
to
eq
([
200
,
'Success'
])
end
end
it
"handles 2xx status codes"
do
it
"handles 2xx status codes"
do
WebMock
.
stub_request
(
:post
,
project_hook
.
url
).
to_return
(
status:
201
,
body:
"Success"
)
WebMock
.
stub_request
(
:post
,
project_hook
.
url
).
to_return
(
status:
201
,
body:
"Success"
)
expect
(
project_hook
.
execute
(
@data
,
'push_hooks'
)).
to
eq
([
true
,
'Success'
])
expect
(
project_hook
.
execute
(
@data
,
'push_hooks'
)).
to
eq
([
201
,
'Success'
])
end
end
end
end
end
end
spec/routing/routing_spec.rb
View file @
6a70c060
require
'spec_helper'
require
'spec_helper'
# user GET /u/:username/
# user_groups GET /u/:username/groups(.:format)
# user_projects GET /u/:username/projects(.:format)
# user_contributed_projects GET /u/:username/contributed(.:format)
# user_snippets GET /u/:username/snippets(.:format)
# user_calendar GET /u/:username/calendar(.:format)
# user_calendar_activities GET /u/:username/calendar_activities(.:format)
describe
UsersController
,
"routing"
do
it
"to #show"
do
expect
(
get
(
"/u/User"
)).
to
route_to
(
'users#show'
,
username:
'User'
)
end
it
"to #groups"
do
expect
(
get
(
"/u/User/groups"
)).
to
route_to
(
'users#groups'
,
username:
'User'
)
end
it
"to #projects"
do
expect
(
get
(
"/u/User/projects"
)).
to
route_to
(
'users#projects'
,
username:
'User'
)
end
it
"to #contributed"
do
expect
(
get
(
"/u/User/contributed"
)).
to
route_to
(
'users#contributed'
,
username:
'User'
)
end
it
"to #snippets"
do
expect
(
get
(
"/u/User/snippets"
)).
to
route_to
(
'users#snippets'
,
username:
'User'
)
end
it
"to #calendar"
do
expect
(
get
(
"/u/User/calendar"
)).
to
route_to
(
'users#calendar'
,
username:
'User'
)
end
it
"to #calendar_activities"
do
expect
(
get
(
"/u/User/calendar_activities"
)).
to
route_to
(
'users#calendar_activities'
,
username:
'User'
)
end
end
# search GET /search(.:format) search#show
# search GET /search(.:format) search#show
describe
SearchController
,
"routing"
do
describe
SearchController
,
"routing"
do
it
"to #show"
do
it
"to #show"
do
...
@@ -27,10 +64,6 @@ end
...
@@ -27,10 +64,6 @@ end
# PUT /snippets/:id(.:format) snippets#update
# PUT /snippets/:id(.:format) snippets#update
# DELETE /snippets/:id(.:format) snippets#destroy
# DELETE /snippets/:id(.:format) snippets#destroy
describe
SnippetsController
,
"routing"
do
describe
SnippetsController
,
"routing"
do
it
"to #user_index"
do
expect
(
get
(
"/s/User"
)).
to
route_to
(
'snippets#index'
,
username:
'User'
)
end
it
"to #raw"
do
it
"to #raw"
do
expect
(
get
(
"/snippets/1/raw"
)).
to
route_to
(
'snippets#raw'
,
id:
'1'
)
expect
(
get
(
"/snippets/1/raw"
)).
to
route_to
(
'snippets#raw'
,
id:
'1'
)
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