def processCodeBuild(event): event_id = event['detail']['build-id'].split('/')[1] build_status = codebuild_client.batch_get_builds(ids=[event_id]) pid = event_id.split(':')[1] or None if not pid: return pipeline_name = event_id.split(':')[0] cbi = CodeBuildInfo(build_status['builds'][0]['initiator'][13:], event_id) (stage, pid, actionStates) = pipelineFromBuild(cbi) buildInfo = BuildInfo(pid, pipeline_name) existing_msg = find_message_for_build(buildInfo) builder = MessageBuilder(buildInfo, existing_msg) phases = build_status['builds'][0]['phases'] builder.updateBuildStageInfo(stage, phases, actionStates) logs = build_status['builds'][0].get('logs', {}) try: if logs['streamName']: builder.attachLogs(logs) except KeyError: pass post_build_msg(builder)
def process_code_build(event): if 'additional-information' not in event['detail']: logger.debug("Skipping due to no additional-information") return cbi = CodeBuildInfo.from_event(event) logger.debug(vars(cbi)) (stage, pid, actionStates) = pipeline_from_build(cbi) logger.debug(stage, pid, actionStates) if not pid: return build_info = BuildInfo(pid, cbi.pipeline) existing_msg = find_message_for_build(build_info) builder = MessageBuilder(build_info, existing_msg) if 'phases' in event['detail']['additional-information']: phases = event['detail']['additional-information']['phases'] builder.update_build_stage_info(stage, phases, actionStates) logs = event['detail'].get('additional-information', {}).get('logs') post_build_msg(builder)
def processCodeBuild(event): # logger.info("processCodeBuild") if is_skip_codebuild_notice(event['detail'].get('eventName')): return cbi = CodeBuildInfo.from_event(event) (stage, pid, actionStates) = pipelineFromBuild(cbi) if not pid: return build_info = BuildInfo(pid, cbi.pipeline, actionStates) existing_msg = find_message_for_build(build_info) builder = MessageBuilder(build_info, existing_msg) if 'phases' in event['detail']['additional-information']: phases = event['detail']['additional-information']['phases'] builder.updateBuildStageInfo(stage, phases, actionStates) logs = event['detail'].get('additional-information', {}).get('logs') if logs: builder.attachLogs(event['detail']['additional-information']['logs']) post_build_msg(builder)
def process_code_pipeline(event): pipeline_execution_id, pipeline_name = get_pipeline_metadata(event) message = find_slack_message_for_update(pipeline_execution_id) message_builder = MessageBuilder(message, pipeline_execution_id, pipeline_name) message_builder.update_pipeline_message(event=event) if message_builder.has_revision_info_field(): revision_info = find_revision_info(pipeline_execution_id, pipeline_name) message_builder.attach_revision_info(revision_info) post_message(message_builder=message_builder)
def processCodePipeline(event): buildInfo = BuildInfo.fromEvent(event) existing_msg = find_message_for_build(buildInfo) builder = MessageBuilder(buildInfo, existing_msg) builder.updatePipelineEvent(event) if builder.needsRevisionInfo(): revision = findRevisionInfo(buildInfo) builder.attachRevisionInfo(revision) post_build_msg(builder)
def process_code_build(event): pipeline_name, build_id, build_project_name = get_codebuild_from_pipeline_metadata(event) stage_name, pipeline_execution_id, action_state = find_pipeline_from_build(pipeline_name, build_id) if not pipeline_execution_id: return message = find_slack_message_for_update(pipeline_execution_id) message_builder = MessageBuilder(message, pipeline_execution_id, pipeline_name) if is_codebuild_phases_updatable(event): phases = get_codebuild_phases(event) message_builder.update_build_stage_info(stage_name, phases, action_state, build_project_name) post_message(message_builder=message_builder)
def process_code_pipeline(event): if 'execution-id' not in event['detail']: logger.debug("Skipping due to no executionId") return build_info = BuildInfo.from_event(event) existing_msg = find_message_for_build(build_info) builder = MessageBuilder(build_info, existing_msg) builder.update_pipeline_event(event) if builder.needs_revision_info(): revision = find_revision_info(build_info) builder.attach_revision_info(revision) post_build_msg(builder)
def processCodePipeline(event): # logger.info("processCodePipeline") if is_skip_codepipeline_notice(event['detail'].get('eventName')): return build_info = BuildInfo.from_event(event) existing_msg = find_message_for_build(build_info) # logger.info("existing_msg: {}".format(existing_msg)) builder = MessageBuilder(build_info, existing_msg) builder.updatePipelineEvent(event) if builder.needsRevisionInfo(): revision = findRevisionInfo(build_info) builder.attachRevisionInfo(revision) post_build_msg(builder)
def process(event): token = os.getenv("SLACK_TOKEN", None) bot_token = os.getenv("SLACK_BOT_TOKEN") bot_name = os.getenv("SLACK_BOT_NAME", "ssm-instanceid-to-slack") bot_icon = os.getenv("SLACK_BOT_ICON", ":robot_face:") channel_name = os.getenv("SLACK_CHANNEL_NAME", "ssm-instanceid-notice") channel_id = os.getenv("SLACK_CHANNEL_ID", None) region = os.getenv("AWS_REGION", None) parser = AwsLogsParser(event) builder = MessageBuilder(region, parser.log_group, parser.log_stream, parser.message) adapter = SlackAdapter(token, bot_token, bot_name, bot_icon, channel_name, channel_id) res = adapter.post(builder.attachments()) if 'error' in res: message = "{} post error: {}".format(__name__, res['error']) logger.error(message) raise ValueError(message)
def processCodeBuild(event): cbi = CodeBuildInfo.fromEvent(event) (stage, pid, actionStates) = pipelineFromBuild(cbi) if not pid: return buildInfo = BuildInfo(pid, cbi.pipeline) existing_msg = find_message_for_build(buildInfo) builder = MessageBuilder(buildInfo, existing_msg) if 'phases' in event['detail']['additional-information']: phases = event['detail']['additional-information']['phases'] builder.updateBuildStageInfo(stage, phases, actionStates) # logs = event['detail'].get('additional-information', {}).get('logs') # if logs: # builder.attachLogs(event['detail']['additional-information']['logs']) post_build_msg(builder)