mirror of
https://github.com/immich-app/immich.git
synced 2026-05-18 03:10:24 +03:00
chore(server): use dev version check endpoint for non-production environments (#27508)
This commit is contained in:
@@ -75,6 +75,10 @@ export interface EnvData {
|
|||||||
server: string;
|
server: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
versionCheck: {
|
||||||
|
url: string;
|
||||||
|
};
|
||||||
|
|
||||||
network: {
|
network: {
|
||||||
trustedProxies: string[];
|
trustedProxies: string[];
|
||||||
};
|
};
|
||||||
@@ -320,6 +324,10 @@ const getEnv = (): EnvData => {
|
|||||||
|
|
||||||
licensePublicKey: isProd ? productionKeys : stagingKeys,
|
licensePublicKey: isProd ? productionKeys : stagingKeys,
|
||||||
|
|
||||||
|
versionCheck: {
|
||||||
|
url: isProd ? 'https://version.immich.cloud/version' : 'https://version.dev.immich.cloud/version',
|
||||||
|
},
|
||||||
|
|
||||||
network: {
|
network: {
|
||||||
trustedProxies: dto.IMMICH_TRUSTED_PROXIES ?? ['linklocal', 'uniquelocal'],
|
trustedProxies: dto.IMMICH_TRUSTED_PROXIES ?? ['linklocal', 'uniquelocal'],
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -66,7 +66,8 @@ export class ServerInfoRepository {
|
|||||||
|
|
||||||
async getLatestRelease(): Promise<VersionResponse> {
|
async getLatestRelease(): Promise<VersionResponse> {
|
||||||
try {
|
try {
|
||||||
const response = await fetch('https://version.immich.cloud/version');
|
const { versionCheck } = this.configRepository.getEnv();
|
||||||
|
const response = await fetch(versionCheck.url);
|
||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
throw new Error(`Version check request failed with status ${response.status}: ${await response.text()}`);
|
throw new Error(`Version check request failed with status ${response.status}: ${await response.text()}`);
|
||||||
|
|||||||
@@ -2,9 +2,8 @@ import { DateTime } from 'luxon';
|
|||||||
import { SemVer } from 'semver';
|
import { SemVer } from 'semver';
|
||||||
import { defaults } from 'src/config';
|
import { defaults } from 'src/config';
|
||||||
import { serverVersion } from 'src/constants';
|
import { serverVersion } from 'src/constants';
|
||||||
import { ImmichEnvironment, JobName, JobStatus, SystemMetadataKey } from 'src/enum';
|
import { JobName, JobStatus, SystemMetadataKey } from 'src/enum';
|
||||||
import { VersionService } from 'src/services/version.service';
|
import { VersionService } from 'src/services/version.service';
|
||||||
import { mockEnvData } from 'test/repositories/config.repository.mock';
|
|
||||||
import { factory } from 'test/small.factory';
|
import { factory } from 'test/small.factory';
|
||||||
import { newTestService, ServiceMocks } from 'test/utils';
|
import { newTestService, ServiceMocks } from 'test/utils';
|
||||||
|
|
||||||
@@ -73,15 +72,6 @@ describe(VersionService.name, () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe('handVersionCheck', () => {
|
describe('handVersionCheck', () => {
|
||||||
beforeEach(() => {
|
|
||||||
mocks.config.getEnv.mockReturnValue(mockEnvData({ environment: ImmichEnvironment.Production }));
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not run in dev mode', async () => {
|
|
||||||
mocks.config.getEnv.mockReturnValue(mockEnvData({ environment: ImmichEnvironment.Development }));
|
|
||||||
await expect(sut.handleVersionCheck()).resolves.toEqual(JobStatus.Skipped);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not run if the last check was < 60 minutes ago', async () => {
|
it('should not run if the last check was < 60 minutes ago', async () => {
|
||||||
mocks.systemMetadata.get.mockResolvedValue({
|
mocks.systemMetadata.get.mockResolvedValue({
|
||||||
checkedAt: DateTime.utc().minus({ minutes: 5 }).toISO(),
|
checkedAt: DateTime.utc().minus({ minutes: 5 }).toISO(),
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import semver, { SemVer } from 'semver';
|
|||||||
import { serverVersion } from 'src/constants';
|
import { serverVersion } from 'src/constants';
|
||||||
import { OnEvent, OnJob } from 'src/decorators';
|
import { OnEvent, OnJob } from 'src/decorators';
|
||||||
import { ReleaseNotification, ServerVersionResponseDto } from 'src/dtos/server.dto';
|
import { ReleaseNotification, ServerVersionResponseDto } from 'src/dtos/server.dto';
|
||||||
import { DatabaseLock, ImmichEnvironment, JobName, JobStatus, QueueName, SystemMetadataKey } from 'src/enum';
|
import { DatabaseLock, JobName, JobStatus, QueueName, SystemMetadataKey } from 'src/enum';
|
||||||
import { ArgOf } from 'src/repositories/event.repository';
|
import { ArgOf } from 'src/repositories/event.repository';
|
||||||
import { BaseService } from 'src/services/base.service';
|
import { BaseService } from 'src/services/base.service';
|
||||||
import { VersionCheckMetadata } from 'src/types';
|
import { VersionCheckMetadata } from 'src/types';
|
||||||
@@ -71,11 +71,6 @@ export class VersionService extends BaseService {
|
|||||||
try {
|
try {
|
||||||
this.logger.debug('Running version check');
|
this.logger.debug('Running version check');
|
||||||
|
|
||||||
const { environment } = this.configRepository.getEnv();
|
|
||||||
if (environment === ImmichEnvironment.Development) {
|
|
||||||
return JobStatus.Skipped;
|
|
||||||
}
|
|
||||||
|
|
||||||
const { newVersionCheck } = await this.getConfig({ withCache: true });
|
const { newVersionCheck } = await this.getConfig({ withCache: true });
|
||||||
if (!newVersionCheck.enabled) {
|
if (!newVersionCheck.enabled) {
|
||||||
return JobStatus.Skipped;
|
return JobStatus.Skipped;
|
||||||
|
|||||||
@@ -44,6 +44,10 @@ const envData: EnvData = {
|
|||||||
server: 'server-public-key',
|
server: 'server-public-key',
|
||||||
},
|
},
|
||||||
|
|
||||||
|
versionCheck: {
|
||||||
|
url: 'https://version.immich.cloud/version',
|
||||||
|
},
|
||||||
|
|
||||||
network: {
|
network: {
|
||||||
trustedProxies: [],
|
trustedProxies: [],
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user