buildbot-transifex/buildbot_gitea/step_source.py

34 lines
1.2 KiB
Python
Raw Permalink Normal View History

2018-09-27 16:32:11 +02:00
from __future__ import absolute_import
from __future__ import print_function
from twisted.internet import defer
from twisted.python import log
from buildbot.steps.source.git import Git
class Gitea(Git):
"""
Source step that knows how to handle merge requests from
the Gitea webhook
"""
@defer.inlineCallbacks
def _fetch(self, arg):
2018-09-27 16:53:16 +02:00
res = yield super(Gitea, self)._fetch(arg)
if self.build.hasProperty("pr_id") and self.repourl == self.build.getProperty("base_git_ssh_url", None):
2018-09-27 16:32:11 +02:00
remote = yield self._dovccmd(
['config', 'remote.pr_source.url'], collectStdout=True, abandonOnFailure=False)
2018-09-27 16:53:16 +02:00
if remote is None or remote.strip() is '':
2018-09-27 16:32:11 +02:00
yield self._dovccmd(
['remote', 'add', 'pr_source',
self.build.getProperty("head_git_ssh_url", None)])
else:
yield self._dovccmd(
['remote', 'set-url', 'pr_source',
self.build.getProperty("head_git_ssh_url", None)])
yield self._dovccmd(['fetch', 'pr_source'])
2018-09-27 16:53:16 +02:00
res = yield self._dovccmd(['merge', self.build.getProperty("head_sha", None)])
defer.returnValue(res)