示例#1
0
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)
示例#3
0
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)
示例#5
0
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)
示例#8
0
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)
示例#9
0
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)
示例#10
0
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)