diff options
Diffstat (limited to 'tasks.py')
-rw-r--r-- | tasks.py | 40 |
1 files changed, 40 insertions, 0 deletions
@@ -13,6 +13,7 @@ from __future__ import absolute_import, division, print_function import getpass +import os import time import invoke @@ -33,10 +34,47 @@ def wait_for_build_completed(): ) response.raise_for_status() if not response.json()["building"]: + assert response.json()["result"] == "SUCCESS" break time.sleep(0.1) +def download_artifacts(): + response = requests.get( + "{0}/lastBuild/api/json/".format(JENKINS_URL), + headers={ + "Accept": "application/json" + } + ) + response.raise_for_status() + assert not response.json()["building"] + assert response.json()["result"] == "SUCCESS" + + paths = [] + + for run in response.json()["runs"]: + response = requests.get( + run["url"] + "api/json/", + headers={ + "Accept": "application/json", + } + ) + response.raise_for_status() + for artifact in response.json()["artifacts"]: + response = requests.get( + "{0}artifacts/{1}".format(run["url"], artifact["relativePath"]) + ) + out_path = os.path.join( + os.path.dirname(__file__), + "dist", + artifact["fileName"], + ) + with open(out_path, "wb") as f: + f.write(response.content) + paths.append(out_path) + return paths + + @invoke.task def release(version): """ @@ -58,3 +96,5 @@ def release(version): ) response.raise_for_status() wait_for_build_completed() + paths = download_artifacts() + invoke.run("twine upload {0}".format(" ".join(paths))) |