Fix the failed run ID URL; use a .txt extension for the failed files

This commit is contained in:
Christoph Reiter 2021-01-11 20:46:48 +01:00
parent 491f3f9924
commit 9e2e1814a2

View File

@ -149,7 +149,8 @@ def download_asset(asset: GitReleaseAsset, target_path: str) -> None:
pass pass
def upload_asset(release: GitRelease, path: _PathLike, replace: bool = False) -> None: def upload_asset(release: GitRelease, path: _PathLike, replace: bool = False,
text: bool = False) -> None:
# type_: msys/mingw/failed # type_: msys/mingw/failed
if not environ.get("CI"): if not environ.get("CI"):
print("WARNING: upload skipped, not running in CI") print("WARNING: upload skipped, not running in CI")
@ -157,7 +158,7 @@ def upload_asset(release: GitRelease, path: _PathLike, replace: bool = False) ->
path = Path(path) path = Path(path)
basename = os.path.basename(str(path)) basename = os.path.basename(str(path))
asset_name = get_gh_asset_name(basename) asset_name = get_gh_asset_name(basename, text)
asset_label = basename asset_label = basename
for asset in get_release_assets(release, include_incomplete=True): for asset in get_release_assets(release, include_incomplete=True):
@ -385,8 +386,8 @@ def build_package(build_type: str, pkg, msys2_root: _PathLike, builddir: _PathLi
failed_path = os.path.join(tempdir, entry) failed_path = os.path.join(tempdir, entry)
with open(failed_path, 'w') as h: with open(failed_path, 'w') as h:
# github doesn't allow empty assets # github doesn't allow empty assets
h.write(f"https://github.com/{REPO}/runs/{RUN_ID}") h.write(f"https://github.com/{REPO}/actions/runs/{RUN_ID}")
upload_asset(release, failed_path) upload_asset(release, failed_path, text=True)
raise BuildError(e) raise BuildError(e)
else: else:
@ -482,17 +483,18 @@ def get_buildqueue() -> List[_Package]:
return pkgs return pkgs
def get_gh_asset_name(basename: _PathLike) -> str: def get_gh_asset_name(basename: _PathLike, text: bool = False) -> str:
# GitHub will throw out charaters like '~' or '='. It also doesn't like # GitHub will throw out charaters like '~' or '='. It also doesn't like
# when there is no file extension and will try to add one # when there is no file extension and will try to add one
return sha256(str(basename).encode("utf-8")).hexdigest() + ".bin" return sha256(str(basename).encode("utf-8")).hexdigest() + (".bin" if not text else ".txt")
def get_asset_filename(asset: GitReleaseAsset) -> str: def get_asset_filename(asset: GitReleaseAsset) -> str:
if not asset.label: if not asset.label:
return asset.name return asset.name
else: else:
assert get_gh_asset_name(asset.label) == asset.name assert os.path.splitext(get_gh_asset_name(asset.label))[0] == \
os.path.splitext(asset.name)[0]
return asset.label return asset.label