feat: move version checks to our own infrastructure (#27450)

This commit is contained in:
Zack Pollard
2026-04-02 23:32:26 +01:00
committed by GitHub
parent adb6b39eec
commit db0f86c749
61 changed files with 104 additions and 72 deletions
+6 -11
View File
@@ -8,14 +8,9 @@ import { mockEnvData } from 'test/repositories/config.repository.mock';
import { factory } from 'test/small.factory';
import { newTestService, ServiceMocks } from 'test/utils';
const mockRelease = (version: string) => ({
id: 1,
url: 'https://api.github.com/repos/owner/repo/releases/1',
tag_name: version,
name: 'Release 1000',
created_at: DateTime.utc().toISO(),
const mockVersionResponse = (version: string) => ({
version,
published_at: DateTime.utc().toISO(),
body: '',
});
describe(VersionService.name, () => {
@@ -101,7 +96,7 @@ describe(VersionService.name, () => {
});
it('should run if it has been > 60 minutes', async () => {
mocks.serverInfo.getGitHubRelease.mockResolvedValue(mockRelease('v100.0.0'));
mocks.serverInfo.getLatestRelease.mockResolvedValue(mockVersionResponse('v100.0.0'));
mocks.systemMetadata.get.mockResolvedValue({
checkedAt: DateTime.utc().minus({ minutes: 65 }).toISO(),
releaseVersion: '1.0.0',
@@ -113,7 +108,7 @@ describe(VersionService.name, () => {
});
it('should not notify if the version is equal', async () => {
mocks.serverInfo.getGitHubRelease.mockResolvedValue(mockRelease(serverVersion.toString()));
mocks.serverInfo.getLatestRelease.mockResolvedValue(mockVersionResponse(serverVersion.toString()));
await expect(sut.handleVersionCheck()).resolves.toEqual(JobStatus.Success);
expect(mocks.systemMetadata.set).toHaveBeenCalledWith(SystemMetadataKey.VersionCheckState, {
checkedAt: expect.any(String),
@@ -122,8 +117,8 @@ describe(VersionService.name, () => {
expect(mocks.websocket.clientBroadcast).not.toHaveBeenCalled();
});
it('should handle a github error', async () => {
mocks.serverInfo.getGitHubRelease.mockRejectedValue(new Error('GitHub is down'));
it('should handle a version check error', async () => {
mocks.serverInfo.getLatestRelease.mockRejectedValue(new Error('Version service is down'));
await expect(sut.handleVersionCheck()).resolves.toEqual(JobStatus.Failed);
expect(mocks.systemMetadata.set).not.toHaveBeenCalled();
expect(mocks.websocket.clientBroadcast).not.toHaveBeenCalled();
+1 -2
View File
@@ -91,8 +91,7 @@ export class VersionService extends BaseService {
}
}
const { tag_name: releaseVersion, published_at: publishedAt } =
await this.serverInfoRepository.getGitHubRelease();
const { version: releaseVersion, published_at: publishedAt } = await this.serverInfoRepository.getLatestRelease();
const metadata: VersionCheckMetadata = { checkedAt: DateTime.utc().toISO(), releaseVersion };
await this.systemMetadataRepository.set(SystemMetadataKey.VersionCheckState, metadata);