only refresh github projects in timer and sort them
This way errors are more visible to users on the first running. Co-authored-by: zimbatm <zimbatm@zimbatm.com>
This commit is contained in:
parent
f22c113d1e
commit
c9e850ff32
|
@ -755,6 +755,18 @@ def setup_authz(projects: list[GithubProject], admins: list[str]) -> util.Authz:
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class PeriodicWithStartup(schedulers.Periodic):
|
||||||
|
def __init__(self, *args: Any, run_on_startup: bool = False, **kwargs: Any) -> None:
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.run_on_startup = run_on_startup
|
||||||
|
|
||||||
|
@defer.inlineCallbacks
|
||||||
|
def activate(self) -> Generator[Any, object, Any]:
|
||||||
|
if self.run_on_startup:
|
||||||
|
yield self.setState("last_build", None)
|
||||||
|
yield super().activate()
|
||||||
|
|
||||||
|
|
||||||
class NixConfigurator(ConfiguratorBase):
|
class NixConfigurator(ConfiguratorBase):
|
||||||
"""Janitor is a configurator which create a Janitor Builder with all needed Janitor steps"""
|
"""Janitor is a configurator which create a Janitor Builder with all needed Janitor steps"""
|
||||||
|
|
||||||
|
@ -841,11 +853,12 @@ class NixConfigurator(ConfiguratorBase):
|
||||||
builderNames=["reload-github-projects"],
|
builderNames=["reload-github-projects"],
|
||||||
buttonName="Update projects",
|
buttonName="Update projects",
|
||||||
),
|
),
|
||||||
# project list twice a day
|
# project list twice a day and on startup
|
||||||
schedulers.Periodic(
|
PeriodicWithStartup(
|
||||||
name="reload-github-projects-bidaily",
|
name="reload-github-projects-bidaily",
|
||||||
builderNames=["reload-github-projects"],
|
builderNames=["reload-github-projects"],
|
||||||
periodicBuildTimer=12 * 60 * 60,
|
periodicBuildTimer=12 * 60 * 60,
|
||||||
|
run_on_startup=not self.github.project_cache_file.exists(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
|
@ -186,7 +186,9 @@ def refresh_projects(github_token: str, repo_cache_file: Path) -> None:
|
||||||
|
|
||||||
def load_projects(github_token: str, repo_cache_file: Path) -> list[GithubProject]:
|
def load_projects(github_token: str, repo_cache_file: Path) -> list[GithubProject]:
|
||||||
if not repo_cache_file.exists():
|
if not repo_cache_file.exists():
|
||||||
log.msg("fetching github repositories")
|
return []
|
||||||
refresh_projects(github_token, repo_cache_file)
|
|
||||||
repos: list[dict[str, Any]] = json.loads(repo_cache_file.read_text())
|
repos: list[dict[str, Any]] = sorted(
|
||||||
|
json.loads(repo_cache_file.read_text()), key=lambda x: x["full_name"]
|
||||||
|
)
|
||||||
return [GithubProject(repo) for repo in repos]
|
return [GithubProject(repo) for repo in repos]
|
||||||
|
|
Loading…
Reference in a new issue