예제 #1
0
def process(service, labels, messages_details):
    for item in messages_details:
        subject = Msg.get_subject(item)

        if Msg.is_gocd_pattern(subject):
            gocd_details = Msg.get_gocd_details(subject)

            if slack.is_matching_send_rule(gocd_details):
                body = Msg.get_body(item)
                changeset = Msg.get_changeset_info(body)
                text = (slack
                        .message_builder(gocd_details,
                                         changeset,
                                         GOCD_DASHBOARD_URL))

                slack.send_to_slack(text, WEBHOOK_URL)

                Gm.add_label(service, Msg.get_id(item),
                             'SENT_TO_SLACK', labels)

        Gm.remove_label(service, Msg.get_id(item),
                        'UNREAD', labels)
예제 #2
0
 def test_unknown_build_status(self):
     for status in ['unknown', 'error']:
         details = self.factory(status=status)
         self.assertFalse(is_matching_send_rule(details))
예제 #3
0
 def test_list_of_allowed_fixed_build_stage(self):
     for stage in ['Package'] + TEST_DEPLOY_STAGES:
         details = self.factory(stage=stage, status='is fixed')
         self.assertTrue(is_matching_send_rule(details))
예제 #4
0
 def test_list_of_ignored_passing_build_stage(self):
     for stage in ['Build', 'Test', 'Unit']:
         details = self.factory(stage=stage, status='passed')
         self.assertFalse(is_matching_send_rule(details))
예제 #5
0
 def test_all_broken_builds_are_sent_regardless_of_stage(self):
     for stage in TEST_CI_STAGES + TEST_DEPLOY_STAGES:
         details = self.factory(stage=stage, status='is broken')
         self.assertTrue(is_matching_send_rule(details))