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:
Christoph Reiter 2025-03-07 11:52:33 +01:00
parent bb54adc298
commit e2042058f1
3 changed files with 14 additions and 12 deletions

View File

@ -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'])

View File

@ -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:

View File

@ -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')