diff --git a/download-experimental.sh b/download-experimental.sh index a26016e8d9067c0f6218f119ab4a3ec7ab4d36c4..6b2a1a3df1971bca055238867f9861a64935350d 100755 --- a/download-experimental.sh +++ b/download-experimental.sh @@ -4,10 +4,11 @@ set -eu -o pipefail ARCHIVE_DIR="/home/www/html/firmware/gluon/archive" EXPERIMENTAL_LINK="/home/www/html/firmware/gluon/experimental" +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") +downloaded_version=$("$MYDIR/download-latest-firmware-build.py" --pipeline-id-file "$PIPELINE_ID_FILE") downloaded_version_abs=$(readlink -f "$downloaded_version") rm "$EXPERIMENTAL_LINK" diff --git a/download-latest-firmware-build.py b/download-latest-firmware-build.py index 22335fdc2216aa3d5b3adfda97d5e7ddad62d685..c56a8ddbabada6e2683dee70b0ac5d74d9cf2cc7 100755 --- a/download-latest-firmware-build.py +++ b/download-latest-firmware-build.py @@ -9,12 +9,14 @@ import argparse import os.path import re import tempfile +import sys GITLAB_API_BASE = "https://gitlab.freifunk-stuttgart.de/api/v4" 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", type=argparse.FileType("r+")) args = ap.parse_args() def find_version_from_archive(archive_file_list): @@ -48,6 +50,13 @@ def find_latest_pipeline_id(): if args.pipeline_id is None: pipeline_id = find_latest_pipeline_id() + + if args.pipeline_id_file: + pipeline_id_file = args.pipeline_id_file.read() + + if pipeline_id == args.pipeline_id_file: + print("Pipeline up to date") + sys.exit(1) else: pipeline_id = args.pipeline_id @@ -69,6 +78,9 @@ for job in pipeline_jobs: print(version) artifact_zip.extractall("gluon/output/") os.rename("gluon/output", version) + if args.pipeline_id_file: + args.pipeline_id_file.truncate(0) + args.pipeline_id_file.write(pipeline_id) else: print(f"'{version}' already exists") sys.exit(1)