diff options
Diffstat (limited to 'tasks.py')
-rw-r--r-- | tasks.py | 73 |
1 files changed, 73 insertions, 0 deletions
@@ -12,8 +12,68 @@ # limitations under the License. from __future__ import absolute_import, division, print_function +import getpass +import os +import time + import invoke +import requests + + +JENKINS_URL = "http://jenkins.cryptography.io/job/cryptography-wheel-builder" + + +def wait_for_build_completed(): + while True: + response = requests.get( + "{0}/lastBuild/api/json/".format(JENKINS_URL), + headers={ + "Accept": "application/json", + } + ) + 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): @@ -25,3 +85,16 @@ def release(version): invoke.run("python setup.py sdist") invoke.run("twine upload -s dist/cryptography-{0}*".format(version)) + + token = getpass.getpass("Input the Jenkins token: ") + response = requests.post( + "{0}/build".format(JENKINS_URL), + params={ + "token": token, + "cause": "Building wheels for {0}".format(version) + } + ) + response.raise_for_status() + wait_for_build_completed() + paths = download_artifacts() + invoke.run("twine upload {0}".format(" ".join(paths))) |