mirror of
https://github.com/psycopg/psycopg2.git
synced 2024-11-25 18:33:44 +03:00
Add script to download packages from appveyor
This commit is contained in:
parent
e7ce6761e1
commit
d116b80c5f
77
scripts/build/download_packages_appveyor.py
Executable file
77
scripts/build/download_packages_appveyor.py
Executable file
|
@ -0,0 +1,77 @@
|
|||
#!/usr/bin/env python
|
||||
"""Download packages from github actions artifacts
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import logging
|
||||
from pathlib import Path
|
||||
|
||||
import requests
|
||||
|
||||
logger = logging.getLogger()
|
||||
logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s")
|
||||
|
||||
API_URL = "https://ci.appveyor.com/api"
|
||||
REPOS = "psycopg/psycopg2"
|
||||
WORKFLOW_NAME = "Build packages"
|
||||
|
||||
|
||||
class ScriptError(Exception):
|
||||
"""Controlled exception raised by the script."""
|
||||
|
||||
|
||||
def main():
|
||||
try:
|
||||
token = os.environ["APPVEYOR_TOKEN"]
|
||||
except KeyError:
|
||||
raise ScriptError("please set a APPVEYOR_TOKEN to download artifacts")
|
||||
|
||||
s = requests.Session()
|
||||
s.headers["Content-Type"] = "application/json"
|
||||
s.headers["Authorization"] = f"Bearer {token}"
|
||||
|
||||
logger.info("fetching last run")
|
||||
resp = s.get(f"{API_URL}/projects/{REPOS}/")
|
||||
resp.raise_for_status()
|
||||
data = resp.json()
|
||||
jobs = data["build"]["jobs"]
|
||||
for job in jobs:
|
||||
if job["status"] != "success":
|
||||
raise ScriptError("status for job {job['jobId']} is {job['status']}")
|
||||
|
||||
logger.info(f"fetching artifacts info for {job['name']}")
|
||||
resp = s.get(f"{API_URL}/buildjobs/{job['jobId']}/artifacts/")
|
||||
resp.raise_for_status()
|
||||
afs = resp.json()
|
||||
for af in afs:
|
||||
fn = af["fileName"]
|
||||
if fn.startswith("dist/"):
|
||||
fn = fn.split("/", 1)[1]
|
||||
dest = Path("packages") / fn
|
||||
logger.info(f"downloading {dest}")
|
||||
resp = s.get(
|
||||
f"{API_URL}/buildjobs/{job['jobId']}/artifacts/{af['fileName']}"
|
||||
)
|
||||
resp.raise_for_status()
|
||||
if not dest.parent.exists():
|
||||
dest.parent.mkdir()
|
||||
|
||||
with dest.open("wb") as f:
|
||||
f.write(resp.content)
|
||||
|
||||
logger.info("now you can run: 'twine upload -s packages/*'")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
sys.exit(main())
|
||||
|
||||
except ScriptError as e:
|
||||
logger.error("%s", e)
|
||||
sys.exit(1)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
logger.info("user interrupt")
|
||||
sys.exit(1)
|
||||
|
Loading…
Reference in New Issue
Block a user