diff --git a/download-latest-firmware-build.py b/download-latest-firmware-build.py index b4d8d561c90bf99c9ba04f19435431fd2f85a0d5..dc1429172212dd765bdab8fc46d1f4ef57eb0f2c 100755 --- a/download-latest-firmware-build.py +++ b/download-latest-firmware-build.py @@ -14,8 +14,7 @@ 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.", default=None) -ap.add_argument("gluonzip") +ap.add_argument("--pipeline-id", help="Pipeline ID to download. If omitted, download latest successfull.", default=None) args = ap.parse_args() def find_version_from_archive(archive_file_list): @@ -37,16 +36,18 @@ def extract_zip(artifact_zipfile): outputdir = os.path.join(tempdir, "gluon", "output") os.rename(outputdir, version) -if args.gluonzip: - extract_zip(args.gluonzip) - sys.exit(0) - -if args.pipeline_id is None: +def find_latest_pipeline_id(): pipelines_request = requests.get("{}/projects/{}/pipelines".format(GITLAB_API_BASE, PROJECT_ID)) pipelines_request.raise_for_status() pipelines = pipelines_request.json() - pipeline_id = pipelines[0]["id"] + for pipeline in pipelines: + if pipeline["status"] == "success": + return pipeline["id"] + return None + +if args.pipeline_id is None: + pipeline_id = find_latest_pipeline_id() else: pipeline_id = args.pipeline_id @@ -67,4 +68,3 @@ for job in pipeline_jobs: print(f"Version is {version}") artifact_zip.extractall("gluon/output/") os.rename("gluon/output", version) - os.removedirs("gluon")