in appengine/runtime_builders/template_builder.py [0:0]
def _resolve_tags(config_file):
"""
Given a templated YAML cloudbuild config file, parse it, resolve image tags
on each build step's image to the corresponding digest, and write new
config with fully qualified images to temporary file for upload to GCS.
Keyword arguments:
config_file -- string representing path to
templated cloudbuild YAML config file
Return value:
path to temporary file containing fully qualified config file, to be
published to GCS.
"""
with open(config_file, 'r') as infile:
logging.info('Templating file: {0}'.format(config_file))
try:
config = yaml.round_trip_load(infile, preserve_quotes=True)
for step in config.get('steps'):
image = step.get('name')
step['name'] = _resolve_tag(image)
args = step.get('args', [])
for i in range(0, len(args)):
arg = args[i]
m = re.search(IMAGE_REGEX, arg)
if m:
suffix = m.group()
prefix = re.sub(suffix, '', arg)
args[i] = prefix + _resolve_tag(suffix)
return yaml.round_trip_dump(config)
except yaml.YAMLError as e:
logging.error(e)
sys.exit(1)