Merge "Allow upload-image-s3 role to export S3 URLS"

This commit is contained in:
Zuul
2025-10-16 14:57:23 +00:00
committed by Gerrit Code Review
4 changed files with 18 additions and 2 deletions

View File

@@ -82,3 +82,8 @@ zuul-launcher expects.
:default: 600
The async timeout for md5/sha256 image hash tasks.
.. zuul:rolevar:: upload_image_s3_export_s3_url
:default: false
Export the image location as s3:// URL.

View File

@@ -5,3 +5,4 @@ upload_image_s3_name: '{{ zuul.build }}-{{ build_diskimage_image_name }}.{{ uplo
upload_image_s3_extension: '{{ upload_image_s3_format }}'
upload_image_s3_compress_image: true
upload_image_s3_hash_timeout: 600
upload_image_s3_export_s3_url: false

View File

@@ -38,7 +38,7 @@ def prune(bucket, delete_after):
def run(endpoint, bucket_name, aws_access_key, aws_secret_key,
filename, name, delete_after=None):
filename, name, delete_after=None, export_s3_url=False):
endpoint = endpoint or 'https://s3.amazonaws.com/'
s3 = boto3.resource('s3',
endpoint_url=endpoint,
@@ -50,7 +50,10 @@ def run(endpoint, bucket_name, aws_access_key, aws_secret_key,
bucket.upload_file(filename, name)
url = os.path.join(endpoint, bucket_name, name)
if export_s3_url:
url = os.path.join("s3://", bucket_name, name)
else:
url = os.path.join(endpoint, bucket_name, name)
return url
@@ -62,6 +65,7 @@ def ansible_main():
filename=dict(required=True, type='path'),
name=dict(required=True, type='str'),
delete_after=dict(type='int'),
export_s3_url=dict(type='bool', default=False),
aws_access_key=dict(type='str'),
aws_secret_key=dict(type='str', no_log=True),
)
@@ -78,6 +82,7 @@ def ansible_main():
p.get('filename'),
p.get('name'),
delete_after=p.get('delete_after'),
export_s3_url=p.get('export_s3_url'),
)
except Exception:
s = "Error uploading to S3"
@@ -110,6 +115,9 @@ def cli_main():
'upload. Default is 3 days (259200 seconds) '
'and if set to 0 X-Delete-After will not be set',
type=int)
parser.add_argument('--export-s3-url',
help='Export the image location as s3:// URL',
action='store_true')
args = parser.parse_args()
@@ -125,6 +133,7 @@ def cli_main():
args.filename,
args.name,
delete_after=args.delete_after,
export_s3_url=args.export_s3_url,
)
print(url)

View File

@@ -51,6 +51,7 @@
filename: '{{ upload_image_s3_filename }}{{ zj_upload_image_s3_extension }}'
name: '{{ upload_image_s3_name }}{{ zj_upload_image_s3_extension }}'
delete_after: '{{ upload_image_s3_delete_after }}'
export_s3_url: '{{ upload_image_s3_export_s3_url }}'
register: upload_results
- name: Delete uncompressed image