BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
2cbdfbfd
Commit
2cbdfbfd
authored
Apr 27, 2015
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of github.com:gitlabhq/gitlabhq
parents
817d93e8
38e2ae5a
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
68 additions
and
32 deletions
+68
-32
CHANGELOG
CHANGELOG
+3
-1
VERSION
VERSION
+1
-1
hooks_controller.rb
app/controllers/admin/hooks_controller.rb
+1
-1
services_controller.rb
app/controllers/projects/services_controller.rb
+2
-1
web_hook.rb
app/models/hooks/web_hook.rb
+11
-5
project.rb
app/models/project.rb
+1
-1
hipchat_service.rb
app/models/project_services/hipchat_service.rb
+8
-2
system_hooks_service.rb
app/services/system_hooks_service.rb
+3
-3
test_hook_service.rb
app/services/test_hook_service.rb
+1
-1
project_web_hook_worker.rb
app/workers/project_web_hook_worker.rb
+2
-2
system_hook_worker.rb
app/workers/system_hook_worker.rb
+2
-2
gitlab_buttons_in_gmail.md
doc/integration/gitlab_buttons_in_gmail.md
+4
-4
system_hooks.rb
lib/api/system_hooks.rb
+1
-1
contributions_calendar.rb
lib/gitlab/contributions_calendar.rb
+1
-1
check.rake
lib/tasks/gitlab/check.rake
+2
-1
web_hook_spec.rb
spec/models/hooks/web_hook_spec.rb
+9
-5
hipchat_service_spec.rb
spec/models/project_services/hipchat_service_spec.rb
+16
-0
No files found.
CHANGELOG
View file @
2cbdfbfd
...
@@ -10,6 +10,7 @@ v 7.11.0 (unreleased)
...
@@ -10,6 +10,7 @@ v 7.11.0 (unreleased)
- Add "Reply quoting selected text" shortcut key (`r`)
- Add "Reply quoting selected text" shortcut key (`r`)
- Fix bug causing `@whatever` inside an issue's first code block to be picked up as a user mention.
- Fix bug causing `@whatever` inside an issue's first code block to be picked up as a user mention.
- Fix bug causing `@whatever` inside an inline code snippet (backtick-style) to be picked up as a user mention.
- Fix bug causing `@whatever` inside an inline code snippet (backtick-style) to be picked up as a user mention.
- Added GitLab Event header for project hooks
-
-
- Show Atom feed buttons everywhere where applicable.
- Show Atom feed buttons everywhere where applicable.
- Add project activity atom feed.
- Add project activity atom feed.
...
@@ -23,8 +24,9 @@ v 7.11.0 (unreleased)
...
@@ -23,8 +24,9 @@ v 7.11.0 (unreleased)
- Improve new project command options (Ben Bodenmiller)
- Improve new project command options (Ben Bodenmiller)
- Prevent sending empty messages to HipChat (Chulki Lee)
- Prevent sending empty messages to HipChat (Chulki Lee)
- Improve UI for mobile phones on dashboard and project pages
- Improve UI for mobile phones on dashboard and project pages
- Add room notification and message color option for HipChat
v 7.10.0
(unreleased)
v 7.10.0
- Ignore submodules that are defined in .gitmodules but are checked in as directories.
- Ignore submodules that are defined in .gitmodules but are checked in as directories.
- Allow projects to be imported from Google Code.
- Allow projects to be imported from Google Code.
- Remove access control for uploaded images to fix broken images in emails (Hannes Rosenögger)
- Remove access control for uploaded images to fix broken images in emails (Hannes Rosenögger)
...
...
VERSION
View file @
2cbdfbfd
7.1
0
.0.pre
7.1
1
.0.pre
app/controllers/admin/hooks_controller.rb
View file @
2cbdfbfd
...
@@ -33,7 +33,7 @@ class Admin::HooksController < Admin::ApplicationController
...
@@ -33,7 +33,7 @@ class Admin::HooksController < Admin::ApplicationController
owner_name:
"Someone"
,
owner_name:
"Someone"
,
owner_email:
"example@gitlabhq.com"
owner_email:
"example@gitlabhq.com"
}
}
@hook
.
execute
(
data
)
@hook
.
execute
(
data
,
'system_hooks'
)
redirect_to
:back
redirect_to
:back
end
end
...
...
app/controllers/projects/services_controller.rb
View file @
2cbdfbfd
...
@@ -6,7 +6,8 @@ class Projects::ServicesController < Projects::ApplicationController
...
@@ -6,7 +6,8 @@ class Projects::ServicesController < Projects::ApplicationController
:description
,
:issues_url
,
:new_issue_url
,
:restrict_to_branch
,
:channel
,
:description
,
:issues_url
,
:new_issue_url
,
:restrict_to_branch
,
:channel
,
:colorize_messages
,
:channels
,
:colorize_messages
,
:channels
,
:push_events
,
:issues_events
,
:merge_requests_events
,
:tag_push_events
,
:push_events
,
:issues_events
,
:merge_requests_events
,
:tag_push_events
,
:note_events
,
:send_from_committer_email
,
:disable_diffs
,
:external_wiki_url
]
:note_events
,
:send_from_committer_email
,
:disable_diffs
,
:external_wiki_url
,
:notify
,
:color
]
# Authorize
# Authorize
before_action
:authorize_admin_project!
before_action
:authorize_admin_project!
before_action
:service
,
only:
[
:edit
,
:update
,
:test
]
before_action
:service
,
only:
[
:edit
,
:update
,
:test
]
...
...
app/models/hooks/web_hook.rb
View file @
2cbdfbfd
...
@@ -30,12 +30,15 @@ class WebHook < ActiveRecord::Base
...
@@ -30,12 +30,15 @@ class WebHook < ActiveRecord::Base
validates
:url
,
presence:
true
,
validates
:url
,
presence:
true
,
format:
{
with:
/\A
#{
URI
.
regexp
(
%w(http https)
)
}
\z/
,
message:
"should be a valid url"
}
format:
{
with:
/\A
#{
URI
.
regexp
(
%w(http https)
)
}
\z/
,
message:
"should be a valid url"
}
def
execute
(
data
)
def
execute
(
data
,
hook_name
)
parsed_url
=
URI
.
parse
(
url
)
parsed_url
=
URI
.
parse
(
url
)
if
parsed_url
.
userinfo
.
blank?
if
parsed_url
.
userinfo
.
blank?
WebHook
.
post
(
url
,
WebHook
.
post
(
url
,
body:
data
.
to_json
,
body:
data
.
to_json
,
headers:
{
"Content-Type"
=>
"application/json"
},
headers:
{
"Content-Type"
=>
"application/json"
,
"X-Gitlab-Event"
=>
hook_name
.
singularize
.
titleize
},
verify:
false
)
verify:
false
)
else
else
post_url
=
url
.
gsub
(
"
#{
parsed_url
.
userinfo
}
@"
,
""
)
post_url
=
url
.
gsub
(
"
#{
parsed_url
.
userinfo
}
@"
,
""
)
...
@@ -45,7 +48,10 @@ class WebHook < ActiveRecord::Base
...
@@ -45,7 +48,10 @@ class WebHook < ActiveRecord::Base
}
}
WebHook
.
post
(
post_url
,
WebHook
.
post
(
post_url
,
body:
data
.
to_json
,
body:
data
.
to_json
,
headers:
{
"Content-Type"
=>
"application/json"
},
headers:
{
"Content-Type"
=>
"application/json"
,
"X-Gitlab-Event"
=>
hook_name
.
singularize
.
titleize
},
verify:
false
,
verify:
false
,
basic_auth:
auth
)
basic_auth:
auth
)
end
end
...
@@ -54,7 +60,7 @@ class WebHook < ActiveRecord::Base
...
@@ -54,7 +60,7 @@ class WebHook < ActiveRecord::Base
false
false
end
end
def
async_execute
(
data
)
def
async_execute
(
data
,
hook_name
)
Sidekiq
::
Client
.
enqueue
(
ProjectWebHookWorker
,
id
,
data
)
Sidekiq
::
Client
.
enqueue
(
ProjectWebHookWorker
,
id
,
data
,
hook_name
)
end
end
end
end
app/models/project.rb
View file @
2cbdfbfd
...
@@ -483,7 +483,7 @@ class Project < ActiveRecord::Base
...
@@ -483,7 +483,7 @@ class Project < ActiveRecord::Base
def
execute_hooks
(
data
,
hooks_scope
=
:push_hooks
)
def
execute_hooks
(
data
,
hooks_scope
=
:push_hooks
)
hooks
.
send
(
hooks_scope
).
each
do
|
hook
|
hooks
.
send
(
hooks_scope
).
each
do
|
hook
|
hook
.
async_execute
(
data
)
hook
.
async_execute
(
data
,
hooks_scope
.
to_s
)
end
end
end
end
...
...
app/models/project_services/hipchat_service.rb
View file @
2cbdfbfd
...
@@ -20,7 +20,7 @@
...
@@ -20,7 +20,7 @@
class
HipchatService
<
Service
class
HipchatService
<
Service
MAX_COMMITS
=
3
MAX_COMMITS
=
3
prop_accessor
:token
,
:room
,
:server
prop_accessor
:token
,
:room
,
:server
,
:notify
,
:color
validates
:token
,
presence:
true
,
if: :activated?
validates
:token
,
presence:
true
,
if: :activated?
def
title
def
title
...
@@ -39,6 +39,8 @@ class HipchatService < Service
...
@@ -39,6 +39,8 @@ class HipchatService < Service
[
[
{
type:
'text'
,
name:
'token'
,
placeholder:
'Room token'
},
{
type:
'text'
,
name:
'token'
,
placeholder:
'Room token'
},
{
type:
'text'
,
name:
'room'
,
placeholder:
'Room name or ID'
},
{
type:
'text'
,
name:
'room'
,
placeholder:
'Room name or ID'
},
{
type:
'checkbox'
,
name:
'notify'
},
{
type:
'select'
,
name:
'color'
,
choices:
[
'yellow'
,
'red'
,
'green'
,
'purple'
,
'gray'
,
'random'
]
},
{
type:
'text'
,
name:
'server'
,
{
type:
'text'
,
name:
'server'
,
placeholder:
'Leave blank for default. https://hipchat.example.com'
}
placeholder:
'Leave blank for default. https://hipchat.example.com'
}
]
]
...
@@ -52,7 +54,7 @@ class HipchatService < Service
...
@@ -52,7 +54,7 @@ class HipchatService < Service
return
unless
supported_events
.
include?
(
data
[
:object_kind
])
return
unless
supported_events
.
include?
(
data
[
:object_kind
])
message
=
create_message
(
data
)
message
=
create_message
(
data
)
return
unless
message
.
present?
return
unless
message
.
present?
gate
[
room
].
send
(
'GitLab'
,
message
)
gate
[
room
].
send
(
'GitLab'
,
message
,
message_options
)
end
end
private
private
...
@@ -63,6 +65,10 @@ class HipchatService < Service
...
@@ -63,6 +65,10 @@ class HipchatService < Service
@gate
||=
HipChat
::
Client
.
new
(
token
,
options
)
@gate
||=
HipChat
::
Client
.
new
(
token
,
options
)
end
end
def
message_options
{
notify:
notify
.
present?
&&
notify
==
'1'
,
color:
color
||
'yellow'
}
end
def
create_message
(
data
)
def
create_message
(
data
)
object_kind
=
data
[
:object_kind
]
object_kind
=
data
[
:object_kind
]
...
...
app/services/system_hooks_service.rb
View file @
2cbdfbfd
...
@@ -7,12 +7,12 @@ class SystemHooksService
...
@@ -7,12 +7,12 @@ class SystemHooksService
def
execute_hooks
(
data
)
def
execute_hooks
(
data
)
SystemHook
.
all
.
each
do
|
sh
|
SystemHook
.
all
.
each
do
|
sh
|
async_execute_hook
sh
,
data
async_execute_hook
(
sh
,
data
,
'system_hooks'
)
end
end
end
end
def
async_execute_hook
(
hook
,
data
)
def
async_execute_hook
(
hook
,
data
,
hook_name
)
Sidekiq
::
Client
.
enqueue
(
SystemHookWorker
,
hook
.
id
,
data
)
Sidekiq
::
Client
.
enqueue
(
SystemHookWorker
,
hook
.
id
,
data
,
hook_name
)
end
end
def
build_event_data
(
model
,
event
)
def
build_event_data
(
model
,
event
)
...
...
app/services/test_hook_service.rb
View file @
2cbdfbfd
class
TestHookService
class
TestHookService
def
execute
(
hook
,
current_user
)
def
execute
(
hook
,
current_user
)
data
=
Gitlab
::
PushDataBuilder
.
build_sample
(
hook
.
project
,
current_user
)
data
=
Gitlab
::
PushDataBuilder
.
build_sample
(
hook
.
project
,
current_user
)
hook
.
execute
(
data
)
hook
.
execute
(
data
,
'push_hooks'
)
end
end
end
end
app/workers/project_web_hook_worker.rb
View file @
2cbdfbfd
...
@@ -3,8 +3,8 @@ class ProjectWebHookWorker
...
@@ -3,8 +3,8 @@ class ProjectWebHookWorker
sidekiq_options
queue: :project_web_hook
sidekiq_options
queue: :project_web_hook
def
perform
(
hook_id
,
data
)
def
perform
(
hook_id
,
data
,
hook_name
)
data
=
data
.
with_indifferent_access
data
=
data
.
with_indifferent_access
WebHook
.
find
(
hook_id
).
execute
(
data
)
WebHook
.
find
(
hook_id
).
execute
(
data
,
hook_name
)
end
end
end
end
app/workers/system_hook_worker.rb
View file @
2cbdfbfd
...
@@ -3,7 +3,7 @@ class SystemHookWorker
...
@@ -3,7 +3,7 @@ class SystemHookWorker
sidekiq_options
queue: :system_hook
sidekiq_options
queue: :system_hook
def
perform
(
hook_id
,
data
)
def
perform
(
hook_id
,
data
,
hook_name
)
SystemHook
.
find
(
hook_id
).
execute
data
SystemHook
.
find
(
hook_id
).
execute
(
data
,
hook_name
)
end
end
end
end
doc/integration/gitlab_buttons_in_gmail.md
View file @
2cbdfbfd
...
@@ -7,11 +7,11 @@ If correctly setup, emails that require an action will be marked in Gmail.
...
@@ -7,11 +7,11 @@ If correctly setup, emails that require an action will be marked in Gmail.
![
gitlab_actions
](
gitlab_actions.png
)
![
gitlab_actions
](
gitlab_actions.png
)
To get this functioning, you need to be registered with Google.
To get this functioning, you need to be registered with Google.
[
See how to register with
g
oogle in this document.
](
https://developers.google.com/gmail/markup/registering-with-google
)
[
See how to register with
G
oogle in this document.
](
https://developers.google.com/gmail/markup/registering-with-google
)
To aid the registering with
google, GitLab offers a rake task that will send an email to g
oogle whitelisting email address from your GitLab server.
To aid the registering with
Google, GitLab offers a rake task that will send an email to G
oogle whitelisting email address from your GitLab server.
To check what would be sent to the
g
oogle email address, run the rake task:
To check what would be sent to the
G
oogle email address, run the rake task:
```
bash
```
bash
bundle
exec
rake gitlab:mail_google_schema_whitelisting
RAILS_ENV
=
production
bundle
exec
rake gitlab:mail_google_schema_whitelisting
RAILS_ENV
=
production
...
@@ -19,7 +19,7 @@ bundle exec rake gitlab:mail_google_schema_whitelisting RAILS_ENV=production
...
@@ -19,7 +19,7 @@ bundle exec rake gitlab:mail_google_schema_whitelisting RAILS_ENV=production
**This will not send the email but give you the output of how the mail will look.**
**This will not send the email but give you the output of how the mail will look.**
Copy the output of the rake task to
[
g
oogle email markup tester
](
https://www.google.com/webmasters/markup-tester/u/0/
)
and press "Validate".
Copy the output of the rake task to
[
G
oogle email markup tester
](
https://www.google.com/webmasters/markup-tester/u/0/
)
and press "Validate".
If you receive "No errors detected" message from the tester you can send the email using:
If you receive "No errors detected" message from the tester you can send the email using:
...
...
lib/api/system_hooks.rb
View file @
2cbdfbfd
...
@@ -47,7 +47,7 @@ module API
...
@@ -47,7 +47,7 @@ module API
owner_name:
"Someone"
,
owner_name:
"Someone"
,
owner_email:
"example@gitlabhq.com"
owner_email:
"example@gitlabhq.com"
}
}
@hook
.
execute
(
data
)
@hook
.
execute
(
data
,
'system_hooks'
)
data
data
end
end
...
...
lib/gitlab/contributions_calendar.rb
View file @
2cbdfbfd
...
@@ -17,7 +17,7 @@ module Gitlab
...
@@ -17,7 +17,7 @@ module Gitlab
events
=
Event
.
reorder
(
nil
).
contributions
.
where
(
author_id:
user
.
id
).
events
=
Event
.
reorder
(
nil
).
contributions
.
where
(
author_id:
user
.
id
).
where
(
"created_at > ?"
,
date_from
).
where
(
project_id:
projects
).
where
(
"created_at > ?"
,
date_from
).
where
(
project_id:
projects
).
group
(
'date(created_at)'
).
group
(
'date(created_at)'
).
select
(
'date(created_at), count(id) as total_amount'
).
select
(
'date(created_at)
as date
, count(id) as total_amount'
).
map
(
&
:attributes
)
map
(
&
:attributes
)
dates
=
(
1
.
year
.
ago
.
to_date
..
(
Date
.
today
+
1
.
day
)).
to_a
dates
=
(
1
.
year
.
ago
.
to_date
..
(
Date
.
today
+
1
.
day
)).
to_a
...
...
lib/tasks/gitlab/check.rake
View file @
2cbdfbfd
...
@@ -282,7 +282,8 @@ namespace :gitlab do
...
@@ -282,7 +282,8 @@ namespace :gitlab do
def
check_redis_version
def
check_redis_version
print
"Redis version >= 2.0.0? ... "
print
"Redis version >= 2.0.0? ... "
if
run_and_match
(
%W(redis-cli --version)
,
/redis-cli 2.\d.\d/
)
redis_version
=
run
(
%W(redis-cli --version)
)
if
redis_version
.
try
(
:match
,
/redis-cli 2.\d.\d/
)
||
redis_version
.
try
(
:match
,
/redis-cli 3.\d.\d/
)
puts
"yes"
.
green
puts
"yes"
.
green
else
else
puts
"no"
.
red
puts
"no"
.
red
...
...
spec/models/hooks/web_hook_spec.rb
View file @
2cbdfbfd
...
@@ -52,22 +52,26 @@ describe ProjectHook do
...
@@ -52,22 +52,26 @@ describe ProjectHook do
end
end
it
"POSTs to the web hook URL"
do
it
"POSTs to the web hook URL"
do
@project_hook
.
execute
(
@data
)
@project_hook
.
execute
(
@data
,
'push_hooks'
)
expect
(
WebMock
).
to
have_requested
(
:post
,
@project_hook
.
url
).
once
expect
(
WebMock
).
to
have_requested
(
:post
,
@project_hook
.
url
).
with
(
headers:
{
'Content-Type'
=>
'application/json'
,
'X-Gitlab-Event'
=>
'Push Hook'
}).
once
end
end
it
"POSTs the data as JSON"
do
it
"POSTs the data as JSON"
do
json
=
@data
.
to_json
json
=
@data
.
to_json
@project_hook
.
execute
(
@data
)
@project_hook
.
execute
(
@data
,
'push_hooks'
)
expect
(
WebMock
).
to
have_requested
(
:post
,
@project_hook
.
url
).
with
(
body:
json
).
once
expect
(
WebMock
).
to
have_requested
(
:post
,
@project_hook
.
url
).
with
(
headers:
{
'Content-Type'
=>
'application/json'
,
'X-Gitlab-Event'
=>
'Push Hook'
}).
once
end
end
it
"catches exceptions"
do
it
"catches exceptions"
do
expect
(
WebHook
).
to
receive
(
:post
).
and_raise
(
"Some HTTP Post error"
)
expect
(
WebHook
).
to
receive
(
:post
).
and_raise
(
"Some HTTP Post error"
)
expect
{
expect
{
@project_hook
.
execute
(
@data
)
@project_hook
.
execute
(
@data
,
'push_hooks'
)
}.
to
raise_error
}.
to
raise_error
end
end
end
end
...
...
spec/models/project_services/hipchat_service_spec.rb
View file @
2cbdfbfd
...
@@ -213,5 +213,21 @@ describe HipchatService do
...
@@ -213,5 +213,21 @@ describe HipchatService do
"<pre>snippet note</pre>"
)
"<pre>snippet note</pre>"
)
end
end
end
end
context
"#message_options"
do
it
"should be set to the defaults"
do
expect
(
hipchat
.
send
(
:message_options
)).
to
eq
({
notify:
false
,
color:
'yellow'
})
end
it
"should set notfiy to true"
do
hipchat
.
stub
(
notify:
'1'
)
expect
(
hipchat
.
send
(
:message_options
)).
to
eq
({
notify:
true
,
color:
'yellow'
})
end
it
"should set the color"
do
hipchat
.
stub
(
color:
'red'
)
expect
(
hipchat
.
send
(
:message_options
)).
to
eq
({
notify:
false
,
color:
'red'
})
end
end
end
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