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