|
|
# Example to trigger a CI call action on specific comment text, e.g chatops and ci
|
|
|
# rebuild on mention of ci bot
|
|
|
|
|
|
@has_kwargs({
|
|
|
'repo_name': '',
|
|
|
'repo_type': '',
|
|
|
'description': '',
|
|
|
'private': '',
|
|
|
'created_on': '',
|
|
|
'enable_downloads': '',
|
|
|
'repo_id': '',
|
|
|
'user_id': '',
|
|
|
'enable_statistics': '',
|
|
|
'clone_uri': '',
|
|
|
'fork_id': '',
|
|
|
'group_id': '',
|
|
|
'created_by': '',
|
|
|
'repository': '',
|
|
|
'comment': '',
|
|
|
'commit': ''
|
|
|
})
|
|
|
def _comment_commit_repo_hook(*args, **kwargs):
|
|
|
"""
|
|
|
POST CREATE REPOSITORY COMMENT ON COMMIT HOOK. This function will be executed after
|
|
|
a comment is made on this repository commit.
|
|
|
|
|
|
"""
|
|
|
from .helpers import http_call, extra_fields
|
|
|
from .utils import UrlTemplate
|
|
|
# returns list of dicts with key-val fetched from extra fields
|
|
|
repo_extra_fields = extra_fields.run(**kwargs)
|
|
|
|
|
|
import rhodecode
|
|
|
from rc_integrations.jenkins_ci import csrf_call, get_auth, requests_retry_call
|
|
|
|
|
|
endpoint_url = extra_fields.get_field(
|
|
|
repo_extra_fields, key='ci_endpoint_url',
|
|
|
default='http://ci.rc.com/job/rc-ce-commits/build?COMMIT_ID=${commit}')
|
|
|
mention_text = extra_fields.get_field(
|
|
|
repo_extra_fields, key='ci_mention_text',
|
|
|
default='@jenkins build')
|
|
|
|
|
|
endpoint_url = UrlTemplate(endpoint_url).safe_substitute(
|
|
|
commit=kwargs['commit']['raw_id'])
|
|
|
|
|
|
trigger_ci = False
|
|
|
comment = kwargs['comment']['comment_text']
|
|
|
if mention_text in comment:
|
|
|
trigger_ci = True
|
|
|
|
|
|
if trigger_ci is False:
|
|
|
return HookResponse(0, '')
|
|
|
|
|
|
# call some CI based on the special coment mention marker
|
|
|
data = {
|
|
|
'project': kwargs['repository'],
|
|
|
}
|
|
|
response = http_call.run(url=endpoint_url, params=data)
|
|
|
|
|
|
return HookResponse(0, '')
|