gh: improve repo caching
We were caching based on the build type, but for most build types the repo is the same, so cache one level below instead.
This commit is contained in:
parent
bb54adc298
commit
e2042058f1
@ -17,7 +17,7 @@ from github.GitReleaseAsset import GitReleaseAsset
|
||||
|
||||
from .config import ArchType, BuildType, Config
|
||||
from .gh import (CachedAssets, download_asset, get_asset_filename,
|
||||
get_current_run_urls, get_release, get_repo, upload_asset,
|
||||
get_current_run_urls, get_release, get_repo_for_build_type, upload_asset,
|
||||
wait_for_api_limit_reset)
|
||||
from .queue import Package
|
||||
from .utils import SCRIPT_DIR, PathLike
|
||||
@ -304,7 +304,7 @@ def build_package(build_type: BuildType, pkg: Package, msys2_root: PathLike, bui
|
||||
repo_dir = os.path.join(builddir, repo_name)
|
||||
to_upload: List[str] = []
|
||||
|
||||
repo = get_repo(build_type)
|
||||
repo = get_repo_for_build_type(build_type)
|
||||
|
||||
with fresh_git_repo(pkg['repo_url'], repo_dir):
|
||||
orig_pkg_dir = os.path.join(repo_dir, pkg['repo_path'])
|
||||
|
||||
@ -2,7 +2,7 @@ import glob
|
||||
import os
|
||||
from typing import Any
|
||||
|
||||
from .gh import get_release, get_repo, upload_asset
|
||||
from .gh import get_release, get_repo_for_build_type, upload_asset
|
||||
from .queue import PackageStatus, get_buildqueue_with_status
|
||||
|
||||
|
||||
@ -46,7 +46,7 @@ def upload_assets(args: Any) -> None:
|
||||
print(f"Found {len(matches)} files..")
|
||||
|
||||
for build_type, match in matches:
|
||||
repo = get_repo(build_type)
|
||||
repo = get_repo_for_build_type(build_type)
|
||||
release = get_release(repo, 'staging-' + build_type)
|
||||
print(f"Uploading {match}")
|
||||
if not args.dry_run:
|
||||
|
||||
@ -51,16 +51,18 @@ def make_writable(obj: GithubObject) -> Generator:
|
||||
|
||||
|
||||
@lru_cache(maxsize=None)
|
||||
def _get_repo(name: str, write: bool = False) -> Repository:
|
||||
gh = get_github(write=write)
|
||||
return gh.get_repo(name, lazy=True)
|
||||
|
||||
|
||||
def get_current_repo(write: bool = False) -> Repository:
|
||||
gh = get_github(write=write)
|
||||
repo_full_name = os.environ.get("GITHUB_REPOSITORY", "msys2/msys2-autobuild")
|
||||
return gh.get_repo(repo_full_name, lazy=True)
|
||||
return _get_repo(repo_full_name, write)
|
||||
|
||||
|
||||
@lru_cache(maxsize=None)
|
||||
def get_repo(build_type: BuildType, write: bool = False) -> Repository:
|
||||
gh = get_github(write=write)
|
||||
return gh.get_repo(Config.ASSETS_REPO[build_type], lazy=True)
|
||||
def get_repo_for_build_type(build_type: BuildType, write: bool = False) -> Repository:
|
||||
return _get_repo(Config.ASSETS_REPO[build_type], write)
|
||||
|
||||
|
||||
@lru_cache(maxsize=None)
|
||||
@ -278,13 +280,13 @@ class CachedAssets:
|
||||
|
||||
def get_assets(self, build_type: BuildType) -> List[GitReleaseAsset]:
|
||||
if build_type not in self._assets:
|
||||
repo = get_repo(build_type)
|
||||
repo = get_repo_for_build_type(build_type)
|
||||
release = get_release(repo, 'staging-' + build_type)
|
||||
self._assets[build_type] = get_release_assets(release)
|
||||
return self._assets[build_type]
|
||||
|
||||
def get_failed_assets(self, build_type: BuildType) -> List[GitReleaseAsset]:
|
||||
repo = get_repo(build_type)
|
||||
repo = get_repo_for_build_type(build_type)
|
||||
key = repo.full_name
|
||||
if key not in self._failed:
|
||||
release = get_release(repo, 'staging-failed')
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user