mirror of
				https://github.com/psycopg/psycopg2.git
				synced 2025-10-31 07:47:30 +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