mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 11:48:06 +02:00
ci: Namespace trace artifacts to the job number
Put artifacts in a per-job folder, because if a job is retried then it will try to upload a file to the same key and fail with the following error: 403 Client Error: Forbidden for url: https://minio-packet.freedesktop.org/artifacts/daenzer/mesa/180609/gl-panfrost-t860/results.yml Also, to prevent in the future similar clashes if several trace files share the same name, upload the images with their checksums as their names. This will also make it easier to fetch images for comparison with the references. Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Andres Gomez <agomez@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6029>
This commit is contained in:
parent
772ed657a2
commit
429ec827d4
2 changed files with 8 additions and 5 deletions
|
|
@ -33,7 +33,7 @@ kernel+rootfs_armhf:
|
|||
variables:
|
||||
GIT_STRATEGY: none # testing doesn't build anything from source
|
||||
ENV_VARS: "DEQP_PARALLEL=6"
|
||||
FIXED_ENV_VARS: "CI_PIPELINE_ID=${CI_PIPELINE_ID} CI_PROJECT_PATH=${CI_PROJECT_PATH} TRACIE_NO_UNIT_TESTS=1 TRACIE_UPLOAD_TO_MINIO=1"
|
||||
FIXED_ENV_VARS: "CI_PIPELINE_ID=${CI_PIPELINE_ID} CI_JOB_ID=${CI_JOB_ID} CI_PROJECT_PATH=${CI_PROJECT_PATH} TRACIE_NO_UNIT_TESTS=1 TRACIE_UPLOAD_TO_MINIO=1"
|
||||
DEQP_VERSION: gles2
|
||||
ARTIFACTS_PREFIX: "https://minio-packet.freedesktop.org/mesa-lava/"
|
||||
MESA_URL: "https://minio-packet.freedesktop.org/artifacts/${CI_PROJECT_PATH}/${CI_PIPELINE_ID}/mesa-${ARCH}.tar.gz"
|
||||
|
|
|
|||
|
|
@ -68,14 +68,17 @@ def sign_with_hmac(key, message):
|
|||
|
||||
return base64.encodebytes(signature).strip().decode()
|
||||
|
||||
def upload_artifact(file_name, content_type, device_name):
|
||||
def upload_artifact(file_name, key, content_type):
|
||||
with open('.minio_credentials', 'r') as f:
|
||||
credentials = json.load(f)["minio-packet.freedesktop.org"]
|
||||
minio_key = credentials["AccessKeyId"]
|
||||
minio_secret = credentials["SecretAccessKey"]
|
||||
minio_token = credentials["SessionToken"]
|
||||
|
||||
resource = '/artifacts/%s/%s/%s/%s' % (os.environ['CI_PROJECT_PATH'], os.environ['CI_PIPELINE_ID'], device_name, os.path.basename(file_name))
|
||||
resource = '/artifacts/%s/%s/%s/%s' % (os.environ['CI_PROJECT_PATH'],
|
||||
os.environ['CI_PIPELINE_ID'],
|
||||
os.environ['CI_JOB_ID'],
|
||||
key)
|
||||
date = formatdate(timeval=None, localtime=False, usegmt=True)
|
||||
url = 'https://minio-packet.freedesktop.org%s' % (resource)
|
||||
to_sign = "PUT\n\n%s\n%s\nx-amz-security-token:%s\n%s" % (content_type, date, minio_token, resource)
|
||||
|
|
@ -120,7 +123,7 @@ def gitlab_check_trace(project_url, device_name, trace, expectation):
|
|||
os.makedirs(results_path, exist_ok=True)
|
||||
shutil.move(log_file, os.path.join(results_path, os.path.split(log_file)[1]))
|
||||
if not ok and os.environ.get('TRACIE_UPLOAD_TO_MINIO', '0') == '1':
|
||||
upload_artifact(image_file, 'image/png', device_name)
|
||||
upload_artifact(image_file, 'traces/%s.png' % checksum, 'image/png')
|
||||
if not ok or os.environ.get('TRACIE_STORE_IMAGES', '0') == '1':
|
||||
image_name = os.path.split(image_file)[1]
|
||||
shutil.move(image_file, os.path.join(results_path, image_name))
|
||||
|
|
@ -156,7 +159,7 @@ def run(filename, device_name):
|
|||
with open(os.path.join(RESULTS_PATH, 'results.yml'), 'w') as f:
|
||||
yaml.safe_dump(results, f, default_flow_style=False)
|
||||
if os.environ.get('TRACIE_UPLOAD_TO_MINIO', '0') == '1':
|
||||
upload_artifact(os.path.join(RESULTS_PATH, 'results.yml'), 'text/yaml', device_name)
|
||||
upload_artifact(os.path.join(RESULTS_PATH, 'results.yml'), 'traces/results.yml', 'text/yaml')
|
||||
|
||||
return all_ok
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue