def push_image(self, data): registry_image_name = image_version_util.prepend_registry( image_version_util.get_image(data)) docker.push(registry_image_name) slack.on_successful_public_push(image_version_util.get_image(data), data[pipeline_data.IMAGE_NAME], data[pipeline_data.IMAGE_SIZE]) self.log.info('Pushed image "%s".', registry_image_name)
def get_change_image_message(image_name, data): if str(image_name) == "kth-nodejs-web": return ("*{}*: Please change to `FROM kthse/kth-nodejs:sem_ver`. " "Image _kth-nodejs-web_ is depricated. " "Info: https://gita.sys.kth.se/Infosys/kth-nodejs".format( image_version_util.get_image(data))) if str(image_name) == "kth-nodejs-api": return ("*{}*: Please change to `FROM kthse/kth-nodejs:sem_ver`. " "Image _kth-nodejs-api_ is depricated. " "Info: https://gita.sys.kth.se/Infosys/kth-nodejs".format( image_version_util.get_image(data))) return None
def push_image(self, data): for tag in data[pipeline_data.IMAGE_TAGS]: tag_with_registry = f"{environment.get_registry_host()}/{tag}" docker.tag_image(data[pipeline_data.LOCAL_IMAGE_ID], tag_with_registry) docker.push(tag_with_registry) slack.on_successful_private_push_old(image_version_util.get_image(data), data[pipeline_data.IMAGE_SIZE])
def write(self, data): try: file_util.overwite(self.get_ouput_file(), self.get_output(data)) except IOError: self.handle_step_error( "*{}* Unable to write build information to file '{}'".format( image_version_util.get_image(data), self.get_ouput_file()))
def run_step(self, data): from_line = self.get_from_line() if self.validate(from_line, data): self.log.debug("'FROM:' statement '%s' in Dockerfile is valid.", from_line) else: message = ( "*{}s* Dockerfile is based on an old `{}` unsecure image, " "please upgrade! See https://hub.docker.com/r/kthse/{}/tags for :docker: images." .format(image_version_util.get_image(data), from_line, self.get_base_image_name(from_line))) self.log.warning(message) slack.on_warning(message) return data
def run_step(self, data): from_line = self.get_from_line() if self.validate(from_line, data): self.log.info("'FROM:' statement '%s' in Dockerfile is valid.", from_line) self.step_ok() else: text = ( ":warning: *{}'s* Dockerfile is based on an old `{}` image, " "please upgrade! See https://hub.docker.com/r/kthse/{}/tags for :docker: images." .format(image_version_util.get_image(data), from_line, self.get_base_image_name(from_line))) self.log.warning(text) self.step_warning() slack.send(text) return data
def get_build_environment(self, data): return { "gitBranch": environment.get_git_branch(), "gitCommit": environment.get_git_commit(), "gitUrl": environment.get_git_url(), "jenkinsBuild": environment.get_build_number(), "jenkinsBuildDate": environment.get_time(), "dockerName": data[pipeline_data.IMAGE_NAME], "dockerVersion": data[pipeline_data.IMAGE_VERSION], "dockerImage": image_version_util.prepend_registry( image_version_util.get_image(data)) }
def run_step(self, data): #pragma: no cover if pipeline_data.IMAGE_TAGS not in data: data[pipeline_data.IMAGE_TAGS] = [] self.tag( image_version_util.prepend_registry( image_version_util.get_image(data) ), data ) self.tag( image_version_util.prepend_registry( image_version_util.get_image_only_semver(data) ), data ) self.tag( image_version_util.prepend_registry( image_version_util.get_latest_tag(data) ), data ) return data
def run_step(self, data): #pragma: no cover ''' Tag images build with semver like "appname:1.2.3_abcdefg" If PUSH_PUBLIC=True then also tag image without git hash "appname:1.2.3" ''' if pipeline_data.IMAGE_TAGS not in data: data[pipeline_data.IMAGE_TAGS] = [] # Default tagging appname:1.2.3_abcdefg self.tag(image_version_util.get_image(data), data) if environment.get_push_public(): # Default tagging appname:1.2.3 self.tag(image_version_util.get_image_only_semver(data), data) # Default tagging appname:latest self.tag(image_version_util.get_latest_tag(data), data) self.step_ok() return data
def get_slack_message(self, exception, data): return '*{}* Compose dry run failed: \n```...\n{}```\n:jenkins: {}console'.format( image_version_util.get_image(data), str(exception).replace('`', ' ')[-1000:], environment.get_build_url())
def get_change_message(self, instruction, data): return "*{}*: In `/Dockerfile` change `{}` to: ```\n{}\n```".format( image_version_util.get_image(data), instruction, self.get_change_to_instruction(instruction))
def push_image(self, data): for tag in data[pipeline_data.IMAGE_TAGS]: docker.push(tag) self.log.info('Pushed image %s to KTH registry.', tag) slack.on_successful_private_push(image_version_util.get_image(data), data[pipeline_data.IMAGE_SIZE])