From ebafe92ae01dc4a573e861764a4e837bd1321af3 Mon Sep 17 00:00:00 2001 From: "Alicia A. Evans" <108547992+aliciaaevans@users.noreply.github.com> Date: Fri, 3 May 2024 14:23:38 -0400 Subject: [PATCH] fix: use circleci api v1.1 to avoid login error (#982) This is to fix bioconda/bioconda-recipes#47663 for fetching artifacts from a PR that was just merged to master in order to upload to the channel We may want to follow it up with updates to use a token, but I wanted to get it to a working state for right now --- bioconda_utils/artifacts.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/bioconda_utils/artifacts.py b/bioconda_utils/artifacts.py index 24add7eb26..a92a6f7526 100644 --- a/bioconda_utils/artifacts.py +++ b/bioconda_utils/artifacts.py @@ -196,6 +196,7 @@ def parse_azure_build_id(url: str) -> str: def get_circleci_artifacts(check_run, platform): circleci_workflow_id = json.loads(check_run.external_id)["workflow-id"] + # Use API v2 because v1.1 does not have a workflow endpoint url_wf = f"https://circleci.com/api/v2/workflow/{circleci_workflow_id}/job" res_wf = requests.get(url_wf) json_wf = json.loads(res_wf.text) @@ -206,13 +207,15 @@ def get_circleci_artifacts(check_run, platform): for job in json_wf["items"]: if job["name"].startswith(f"build_and_test-{platform}"): circleci_job_num = job["job_number"] - url = f"https://circleci.com/api/v2/project/gh/bioconda/bioconda-recipes/{circleci_job_num}/artifacts" + # Use API v1.1 because v2 requires authentication + url = f"https://circleci.com/api/v1.1/project/gh/bioconda/bioconda-recipes/{circleci_job_num}/artifacts" res = requests.get(url) + res.raise_for_status() json_job = json.loads(res.text) - if len(json_job["items"]) == 0: + if len(json_job) == 0: raise ValueError("No artifacts found!") else: - for artifact in json_job["items"]: + for artifact in json_job: artifact_url = artifact["url"] if artifact_url.endswith((".html", ".json", ".json.bz2", ".json.zst")): continue