diff --git a/download-experimental.sh b/download-experimental.sh index 571b22799a403c65fa95b09233618ccffcb50e82..71325cf672f67ae0d889c82f01af09e7ecee4781 100755 --- a/download-experimental.sh +++ b/download-experimental.sh @@ -8,9 +8,4 @@ PIPELINE_ID_FILE="/home/www/html/firmware/gluon/.last-downloaded-pipeline-id" MYDIR=$(readlink -f $(dirname "$0")) cd "$ARCHIVE_DIR" -downloaded_version=$("$MYDIR/download-latest-firmware-build.py" --pipeline-id-file "$PIPELINE_ID_FILE") -downloaded_version_abs=$(readlink -f "$downloaded_version/images") - -rm "$EXPERIMENTAL_LINK" -ln -s "$downloaded_version_abs" "$EXPERIMENTAL_LINK" - +"$MYDIR/download-latest-firmware-build.py" --pipeline-id-file "$PIPELINE_ID_FILE" --create-symlink "$EXPERIMENTAL_LINK" diff --git a/download-latest-firmware-build.py b/download-latest-firmware-build.py index 12e367ab838d85b47be00cc6d2df2fc48cb2c368..60b95269f0520f0fe6dd4eb08bbb47438ae81f91 100755 --- a/download-latest-firmware-build.py +++ b/download-latest-firmware-build.py @@ -17,6 +17,7 @@ PROJECT_ID = 1 ap = argparse.ArgumentParser() ap.add_argument("--pipeline-id", help="Pipeline ID to download. If omitted, download latest successfull.", default=None) ap.add_argument("--pipeline-id-file", help="Store downloaded Pipeline ID in this file and only download if latest pipeline ID doesn't match file contents") +ap.add_argument("--create-symlink", help="Create symlink to downloaded firmware at the specified path") args = ap.parse_args() def find_version_from_archive(archive_file_list): @@ -32,11 +33,11 @@ def find_version_from_archive(archive_file_list): def extract_zip(artifact_zipfile): with zipfile.ZipFile(artifact_zipfile) as artifact_zip: version = find_version_from_archive(artifact_zip.infolist()) - print(f"Version is {version}") with tempfile.TemporaryDirectory(dir=os.getcwd()) as tempdir: artifact_zip.extractall(tempdir) outputdir = os.path.join(tempdir, "gluon", "output") os.rename(outputdir, version) + return version def find_latest_pipeline_id(): pipelines_request = requests.get("{}/projects/{}/pipelines".format(GITLAB_API_BASE, PROJECT_ID)) @@ -74,7 +75,14 @@ for job in pipeline_jobs: for chunk in artifact_request.iter_content(chunk_size=1024*1024): artifact_temp.write(chunk) - extract_zip(artifact_temp) + downloaded_version = extract_zip(artifact_temp) + + if args.create_symlink: + if os.path.islink(args.create_symlink): + os.remove(args.create_symlink) + images_dir = os.path.abspath(os.path.join(downloaded_version, "images")) + os.symlink(images_dir, args.create_symlink) + if args.pipeline_id_file: with open(args.pipeline_id_file, "w") as pipeline_id_file: pipeline_id_file.write(str(pipeline_id))