def paasta_push_to_registry(args): """Upload a docker image to a registry""" service = args.service if service and service.startswith('services-'): service = service.split('services-', 1)[1] validate_service_name(service, args.soa_dir) cmd = build_command(service, args.commit) loglines = [] returncode, output = _run(cmd, timeout=3600, log=True, stream=True, component='build', service=service, loglevel='debug') if returncode != 0: loglines.append('ERROR: Failed to promote image for %s.' % args.commit) output = get_jenkins_build_output_url() if output: loglines.append('See output: %s' % output) else: loglines.append('Successfully pushed image for %s to registry' % args.commit) for logline in loglines: _log( service=service, line=logline, component='build', level='event', ) return returncode
def paasta_push_to_registry(args): """Upload a docker image to a registry""" service = args.service if service and service.startswith('services-'): service = service.split('services-', 1)[1] validate_service_name(service) cmd = build_command(service, args.commit) loglines = [] returncode, output = _run( cmd, timeout=3600, log=True, component='build', service=service, loglevel='debug' ) if returncode != 0: loglines.append('ERROR: Failed to promote image for %s.' % args.commit) output = get_jenkins_build_output_url() if output: loglines.append('See output: %s' % output) else: loglines.append('Successfully pushed image for %s to registry' % args.commit) for logline in loglines: _log( service=service, line=logline, component='build', level='event', ) return returncode
def print_who_is_running_this(self): build_url = get_jenkins_build_output_url() if build_url is not None: message = f"(<{build_url}|Jenkins Job>)" else: message = f"(Run by <@{getpass.getuser()}> on {socket.getfqdn()})" self.update_slack_thread(message)
def paasta_push_to_registry(args: argparse.Namespace) -> int: """Upload a docker image to a registry""" service = args.service if service and service.startswith("services-"): service = service.split("services-", 1)[1] validate_service_name(service, args.soa_dir) image_identifier = build_image_identifier(args.commit, None, args.image_version) if not args.force: try: if is_docker_image_already_in_registry(service, args.soa_dir, args.commit, args.image_version): print( "The docker image is already in the PaaSTA docker registry. " "I'm NOT overriding the existing image. " "Add --force to override the image in the registry if you are sure what you are doing." ) return 0 except RequestException as e: registry_uri = get_service_docker_registry(service, args.soa_dir) print( "Can not connect to the PaaSTA docker registry '%s' to verify if this image exists.\n" "%s" % (registry_uri, str(e))) return 1 cmd = build_command(service, args.commit, args.image_version) loglines = [] returncode, output = _run( cmd, timeout=3600, log=True, component="build", service=service, loglevel="debug", ) if returncode != 0: loglines.append("ERROR: Failed to promote image for %s." % image_identifier) output = get_jenkins_build_output_url() if output: loglines.append("See output: %s" % output) else: loglines.append("Successfully pushed image for %s to registry" % image_identifier) _log_audit( action="push-to-registry", action_details={"commit": args.commit}, service=service, ) for logline in loglines: _log(service=service, line=logline, component="build", level="event") return returncode
def paasta_push_to_registry(args): """Upload a docker image to a registry""" service = args.service if service and service.startswith('services-'): service = service.split('services-', 1)[1] validate_service_name(service, args.soa_dir) if not args.force: try: if is_docker_image_already_in_registry(service, args.soa_dir, args.commit): paasta_print( "The docker image is already in the PaaSTA docker registry. " "I'm NOT overriding the existing image. " "Add --force to override the image in the registry if you are sure what you are doing.", ) return 0 except RequestException as e: registry_uri = get_service_docker_registry(service, args.soa_dir) paasta_print("Can not connect to the PaaSTA docker registry '%s' to verify if this image exists.\n" "%s" % (registry_uri, str(e))) return 1 cmd = build_command(service, args.commit) loglines = [] returncode, output = _run( cmd, timeout=3600, log=True, component='build', service=service, loglevel='debug', ) if returncode != 0: loglines.append('ERROR: Failed to promote image for %s.' % args.commit) output = get_jenkins_build_output_url() if output: loglines.append('See output: %s' % output) else: loglines.append('Successfully pushed image for %s to registry' % args.commit) _log_audit( action='push-to-registry', action_details={'commit': args.commit}, service=service, ) for logline in loglines: _log( service=service, line=logline, component='build', level='event', ) return returncode
def paasta_itest(args): """Build and test a docker image""" service = args.service soa_dir = args.soa_dir if service and service.startswith('services-'): service = service.split('services-', 1)[1] validate_service_name(service, soa_dir=soa_dir) tag = build_docker_tag(service, args.commit) run_env = os.environ.copy() run_env['DOCKER_TAG'] = tag cmd = "make itest" loglines = [] _log( service=service, line='starting itest for %s.' % args.commit, component='build', level='event' ) returncode, output = _run( cmd, env=run_env, timeout=3600, log=True, component='build', service=service, loglevel='debug', stream=True, ) if returncode != 0: loglines.append( 'ERROR: itest failed for %s.' % args.commit ) output = get_jenkins_build_output_url() if output: loglines.append('See output: %s' % output) else: loglines.append('itest passed for %s.' % args.commit) if not check_docker_image(service, args.commit): loglines.append('ERROR: itest has not created %s' % tag) returncode = 1 for logline in loglines: _log( service=service, line=logline, component='build', level='event', ) return returncode
def paasta_itest(args): """Build and test a docker image""" service = args.service soa_dir = args.soa_dir if service and service.startswith('services-'): service = service.split('services-', 1)[1] validate_service_name(service, soa_dir=soa_dir) tag = build_docker_tag(service, args.commit) run_env = os.environ.copy() run_env['DOCKER_TAG'] = tag cmd = "make itest" loglines = [] _log( service=service, line='starting itest for %s.' % args.commit, component='build', level='event' ) returncode, output = _run( cmd, env=run_env, timeout=3600, log=True, component='build', service=service, loglevel='debug' ) if returncode != 0: loglines.append( 'ERROR: itest failed for %s.' % args.commit ) output = get_jenkins_build_output_url() if output: loglines.append('See output: %s' % output) else: loglines.append('itest passed for %s.' % args.commit) if not check_docker_image(service, args.commit): loglines.append('ERROR: itest has not created %s' % tag) returncode = 1 for logline in loglines: _log( service=service, line=logline, component='build', level='event', ) return returncode
def paasta_itest(args): """Build and test a docker image""" service = args.service soa_dir = args.soa_dir if service and service.startswith("services-"): service = service.split("services-", 1)[1] validate_service_name(service, soa_dir=soa_dir) tag = build_docker_tag(service, args.commit) run_env = os.environ.copy() run_env["DOCKER_TAG"] = tag cmd = "make itest" loglines = [] _log( service=service, line="starting itest for %s." % args.commit, component="build", level="event", ) returncode, output = _run( cmd, env=run_env, timeout=args.timeout, log=True, component="build", service=service, loglevel="debug", ) if returncode != 0: loglines.append("ERROR: itest failed for %s." % args.commit) output = get_jenkins_build_output_url() if output: loglines.append("See output: %s" % output) else: loglines.append("itest passed for %s." % args.commit) if not check_docker_image(service, args.commit): loglines.append("ERROR: itest has not created %s" % tag) returncode = 1 for logline in loglines: _log(service=service, line=logline, component="build", level="event") return returncode
def paasta_push_to_registry(args): """Upload a docker image to a registry""" service = args.service if service and service.startswith("services-"): service = service.split("services-", 1)[1] validate_service_name(service) cmd = build_command(service, args.commit) loglines = [] returncode, output = _run(cmd, timeout=3600, log=True, component="build", service=service, loglevel="debug") if returncode != 0: loglines.append("ERROR: Failed to promote image for %s." % args.commit) output = get_jenkins_build_output_url() if output: loglines.append("See output: %s" % output) else: loglines.append("Successfully pushed image for %s to registry" % args.commit) for logline in loglines: _log(service=service, line=logline, component="build", level="event") sys.exit(returncode)