Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/.ci
diff options
context:
space:
mode:
authorlovetox <philipp@hoerist.com>2022-07-29 23:27:19 +0300
committerlovetox <philipp@hoerist.com>2022-07-30 00:04:43 +0300
commit54d4c9f8a326b96ef116a01e72429b84533cce77 (patch)
tree42f22d0e250c1e10139c3f680717fb09c29d1bc6 /.ci
parentb7cd7dcc3140044dddd1d67a7243a8290652f6a7 (diff)
ci: Split windows job into build and deploy stages
Diffstat (limited to '.ci')
-rw-r--r--.ci/appveyor_build.py28
-rw-r--r--.ci/deploy.py32
2 files changed, 47 insertions, 13 deletions
diff --git a/.ci/appveyor_build.py b/.ci/appveyor_build.py
index f301c0945..5ab2750b0 100644
--- a/.ci/appveyor_build.py
+++ b/.ci/appveyor_build.py
@@ -1,5 +1,8 @@
#!/usr/bin/env python3
+from typing import Any
+
+import json
import os
import requests
import time
@@ -7,6 +10,7 @@ from pathlib import Path
from rich.console import Console
+
ACCOUNT = 'lovetox'
PROJECT_SLUG = 'gajim'
BRANCH = 'master'
@@ -67,7 +71,7 @@ def is_build_finished(build: dict[str, str]) -> bool:
return build['status'] == 'success'
-def get_artifacts(build_id: str) -> None:
+def check_for_response(build_id: str) -> None:
time.sleep(INITIAL_START_DELAY)
while True:
time.sleep(RETRY_TIMEOUT)
@@ -89,28 +93,26 @@ def get_artifacts(build_id: str) -> None:
build_folder.mkdir()
for job in build['jobs']:
- download_job_artifacts(job['jobId'], build_folder)
-
- console.print('All artifacts downloaded!')
+ response = get_job_response(job['jobId'])
+ result = build_folder / f'{job["jobId"]}.json'
+ result.write_text(json.dumps(response))
+ console.print('Write job response:', result)
-def download_job_artifacts(job_id: str, target_folder: Path) -> None:
+def get_job_response(job_id: str) -> list[dict[str, Any]]:
artifacts_api_url = f'{BASE_URL}/buildjobs/{job_id}/artifacts'
req = requests.get(artifacts_api_url, headers=HEADERS)
req.raise_for_status()
response = req.json()
for artifact in response:
- filename = artifact['fileName']
- console.print('Download', filename, '...')
- file_url = f'{artifacts_api_url}/{filename}'
- req = requests.get(file_url, headers=HEADERS)
- req.raise_for_status()
- with open(target_folder / filename, 'wb') as file:
- file.write(req.content)
+ file_url = f'{artifacts_api_url}/{artifact["fileName"]}'
+ artifact['fileUrl'] = file_url
+
+ return response
if __name__ == '__main__':
push_yaml_to_project()
build_id = start_build()
- get_artifacts(build_id)
+ check_for_response(build_id)
diff --git a/.ci/deploy.py b/.ci/deploy.py
index b25df2986..bc3d4afcb 100644
--- a/.ci/deploy.py
+++ b/.ci/deploy.py
@@ -1,13 +1,17 @@
+#!/usr/bin/env python3
+
from typing import Any
from typing import Optional
import functools
+import json
import os
import sys
from datetime import date
from ftplib import FTP_TLS
from pathlib import Path
+import requests
from rich.console import Console
@@ -15,6 +19,9 @@ FTP_URL = 'panoramix.gajim.org'
FTP_USER = os.environ['FTP_USER']
FTP_PASS = os.environ['FTP_PASS']
+API_KEY = os.environ['APPVEYOR_API_KEY']
+HEADERS = {'Authorization': f'Bearer {API_KEY}'}
+
WINDOWS_NIGHTLY_FOLDER = 'downloads/snap/win'
LINUX_NIGHTLY_FOLDER = 'downloads/snap'
@@ -84,6 +91,29 @@ def upload_file(ftp: FTP_TLS,
ftp.storbinary('STOR ' + name, f)
+def download_artifacts(path: Path) -> None:
+ build_results = list(path.glob('*.json'))
+ if not build_results:
+ sys.exit('No build build_results found')
+
+ responses = [json.loads(response.read_text()) for response in build_results]
+
+ for response in responses:
+ for artifact in response:
+ filename = artifact['fileName']
+ file_url = artifact['fileUrl']
+
+ console.print('Download', filename, '...')
+
+ req = requests.get(file_url, headers=HEADERS)
+ req.raise_for_status()
+ with open(path / filename, 'wb') as file:
+ file.write(req.content)
+
+ for result in build_results:
+ result.unlink()
+
+
def get_deploy_method() -> str:
deploy_type = os.environ['DEPLOY_TYPE']
is_nightly = bool(os.environ.get('GAJIM_NIGHTLY_BUILD'))
@@ -95,6 +125,7 @@ def get_deploy_method() -> str:
@ftp_connection
def deploy_windows_nightly(ftp: FTP_TLS, filedir: Path) -> None:
ftp.cwd(WINDOWS_NIGHTLY_FOLDER)
+ download_artifacts(filedir)
upload_all_from_dir(ftp, filedir)
@@ -102,6 +133,7 @@ def deploy_windows_nightly(ftp: FTP_TLS, filedir: Path) -> None:
def deploy_windows_release(ftp: FTP_TLS, filedir: Path) -> None:
tag = get_gajim_tag()
create_release_folder(ftp, tag)
+ download_artifacts(filedir)
upload_all_from_dir(ftp, filedir)