Пример #1
0
        def open_mr():
            git_tool.fetch(['master'])
            if git_tool.is_branch_diverged('origin/master'):
                mr = cr_tool.create_mr(git_tool.get_repo(), squashed_branch, assignee, "WIP: "+title)
                cr_tool.approve_build(git_tool.get_repo(), squashed_branch, build_number)


                im_tool.send_message(hipchat_assigner, "MR {0} has been assigned to @{1}".format(mr, hipchat_assignee))
                im_tool.send_message(hipchat_assignee, "Hey, @{0} sent you a MR to review: {1}".format(hipchat_assigner, mr))
                return mr, None
            return None, None
Пример #2
0
 def check_open_mr():
     repo = git_tool.get_repo()
     project = cr_tool.get_project(repo)
     mr = cr_tool.get_open_mr(project, branchname)
     if mr is not None:
         print RED("ALERT: merge request is still open in GitLab for {}!".format(repo))
         return None, "ALERT: merge request is still open in GitLab"
     return None, None
Пример #3
0
        def should_revert(commit):
            message = commit['message']
            if "This reverts commit" in message:
                revert_commit = commit['id']
                reverted_commit = message.split("This reverts commit", 1)[1].strip(' .')
                excluded_commits.add(revert_commit)
                excluded_commits.add(reverted_commit)
                print '{repo}: {reverted_commit} is already reverted by {revert_commit}'\
                    .format(repo=git_tool.get_repo(), reverted_commit=reverted_commit, revert_commit=revert_commit)
                return False

            return not commit['id'] in excluded_commits
Пример #4
0
        def is_ready_to_land():
            if not fetched:
                git_tool.fetch([branchname, 'master'])
            if git_tool.is_merged_with("origin/%s" % branchname, ref="origin/master"):
                return None, None

            err = []
            if not git_tool.is_merged_with("origin/master", ref="origin/%s" % branchname):
                err.append("Not rebased!")
            approvals = list(cr_tool.get_signed_comments(git_tool.get_repo(), branchname))
            body = lambda x: x['body']
            built = filter(compose(cr_tool.ApproveBuild.filter_message, body), approvals)
            cr = filter(compose(cr_tool.ApproveCR.filter_message, body), approvals)
            qa = filter(compose(cr_tool.ApproveQA.filter_message, body), approvals)
            ui = filter(compose(cr_tool.ApproveUITests.filter_message, body), approvals)
            probe = filter(compose(cr_tool.ApproveProbeTests.filter_message, body), approvals)


            ret = []
            if len(built) == 0:
                err.append("Wasn't built!")
            else:
                ret.extend('Built by %s at %s' % (x['author']['name'], x['created_at']) for x in built)
            if len(cr) == 0:
                err.append("Wasn't reviewed!")
            else:
                ret.extend('Reviewd by %s at %s' % (x['author']['name'], x['created_at']) for x in cr)
            if len(qa) == 0:
                err.append("Didn't pass QA!")
            else:
                ret.extend("Passed QA's %s at %s" % (x['author']['name'], x['created_at']) for x in qa)
            if len(ui) == 0:
                err.append("Didn't pass UI tests!")
            else:
                ret.extend("Passed UI Tests at %s" % x['created_at'] for x in ui)
            if len(probe) == 0:
                err.append("Didn't pass Probe benchmark test")
            else:
                ret.extend("Passed Probe benchmark test at %s" % x['created_at'] for x in probe)

            return "\n".join(ret), (None if len(err) == 0 else "\n".join(err))
Пример #5
0
 def approve():
     if git_tool.is_merged_with("origin/%s" % branchname, ref="origin/master"):
         return None, None
     added = self.APPROVAL_FUNC(git_tool.get_repo(), branchname)
     return added, None
Пример #6
0
 def protect():
     repo = git_tool.get_repo()
     success = cr_tool.protect_branch(repo, branchname)
     return None, None if success else "Failed"
Пример #7
0
 def close():
     if git_tool.is_merged_with("origin/%s" % branchname, ref="origin/master"):
         return None, None
     closed = cr_tool.close_mr(git_tool.get_repo(), branchname)
     return closed, None