def deploy_tarball(artifact, build_dir): """Download a tarball from jenkins and unpack it Returns: (str) the path to the unpacked deployment """ if os.path.exists(build_dir): raise DeployException( "Not deploying. We have previously deployed this build." ) os.mkdir(build_dir) print("Fetching artifact %s -> %s..." % (artifact['download_url'], artifact['filename'])) # Download the tarball here as buildkite needs auth to do this # we don't pgp-sign buildkite artifacts, relying on HTTPS and buildkite # not being evil. If that's not good enough for you, don't use riot.im/develop. resp = requests.get(artifact['download_url'], stream=True, headers=req_headers()) resp.raise_for_status() with open(artifact['filename'], 'wb') as ofp: shutil.copyfileobj(resp.raw, ofp) print("...download complete. Deploying...") # we rely on the fact that flask only serves one request at a time to # ensure that we do not overwrite a tarball from a concurrent request. return deployer.deploy(artifact['filename'], build_dir)
def deploy_tarball(tar_gz_url, build_dir): """Download a tarball from jenkins and unpack it Returns: (str) the path to the unpacked deployment """ if os.path.exists(build_dir): raise DeployException( "Not deploying. We have previously deployed this build.") os.mkdir(build_dir) # we rely on the fact that flask only serves one request at a time to # ensure that we do not overwrite a tarball from a concurrent request. return deployer.deploy(tar_gz_url, build_dir)