diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1e563ef9..b6a9110b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -36,3 +36,26 @@ jobs: - name: Run tests for backend run: yarn test + + build-amd64: + runs-on: self-hosted + needs: test + if: ${{ needs.test.result == 'success' }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + + - name: Build Docker Image (amd64) + uses: docker/build-push-action@v4 + with: + context: ./ + push: false + platforms: linux/amd64 + build-args: | + VERSION_ARG=${{ github.ref_name }} + tags: | + quickstack/quickstack:test-amd64 \ No newline at end of file diff --git a/src/app/settings/server/qs-version-info.tsx b/src/app/settings/server/qs-version-info.tsx index c06cf77f..93f7f7a7 100644 --- a/src/app/settings/server/qs-version-info.tsx +++ b/src/app/settings/server/qs-version-info.tsx @@ -9,8 +9,8 @@ import { Rocket, ExternalLink } from "lucide-react"; import { Label } from "@/components/ui/label" import { Switch } from "@/components/ui/switch" import React from "react"; -import { GithubReleaseInfo } from "@/server/adapter/github.adapter"; import Link from "next/link"; +import { QuickStackReleaseInfo } from "@/server/adapter/qs-versioninfo.adapter"; export default function QuickStackVersionInfo({ useCanaryChannel, @@ -19,7 +19,7 @@ export default function QuickStackVersionInfo({ }: { useCanaryChannel: boolean; currentVersion?: string; - newVersionInfo?: GithubReleaseInfo + newVersionInfo?: QuickStackReleaseInfo }) { const useConfirm = useConfirmDialog(); diff --git a/src/app/sidebar-client.tsx b/src/app/sidebar-client.tsx index e93ea81b..ae501eae 100644 --- a/src/app/sidebar-client.tsx +++ b/src/app/sidebar-client.tsx @@ -32,7 +32,7 @@ import { useRouter } from "next/router" import { useEffect, useState } from "react" import QuickStackLogo from "@/components/custom/quickstack-logo" import { UserGroupUtils } from "@/shared/utils/role.utils" -import { GithubReleaseInfo } from "@/server/adapter/github.adapter" +import { QuickStackReleaseInfo } from "@/server/adapter/qs-versioninfo.adapter" export function SidebarCient({ projects, @@ -41,7 +41,7 @@ export function SidebarCient({ }: { projects: (Project & { apps: App[] })[]; session: UserSession; - newVersionInfo?: GithubReleaseInfo; + newVersionInfo?: QuickStackReleaseInfo; }) { const path = usePathname(); diff --git a/src/server/adapter/registry-api.adapter.ts b/src/server/adapter/registry-api.adapter.ts index 1c5f52a0..05532e5d 100644 --- a/src/server/adapter/registry-api.adapter.ts +++ b/src/server/adapter/registry-api.adapter.ts @@ -37,7 +37,7 @@ class RegistryApiAdapter { }); await this.checkIfResponseIsOk(response); - const data = await response.json(); + const data = await response.json() as { repositories: string[] } | null; return data?.repositories ?? [] as string[]; } diff --git a/src/server/services/upgrade-services/k3s-update.service.ts b/src/server/services/upgrade-services/k3s-update.service.ts index 44692fac..7637fcf3 100644 --- a/src/server/services/upgrade-services/k3s-update.service.ts +++ b/src/server/services/upgrade-services/k3s-update.service.ts @@ -1,7 +1,3 @@ -import { unstable_cache } from "next/cache"; -import quickStackService from "../qs.service"; -import { githubAdapter } from "../../adapter/github.adapter"; -import { Tags } from "../../utils/cache-tag-generator.utils"; import k3s from "../../adapter/kubernetes-api.adapter"; import namespaceService from "../namespace.service"; import * as k8s from '@kubernetes/client-node'; diff --git a/tsconfig.server.json b/tsconfig.server.json index 3b13aeab..6d516495 100644 --- a/tsconfig.server.json +++ b/tsconfig.server.json @@ -5,7 +5,9 @@ "module": "commonjs", "outDir": "dist", "lib": [ - "ES2023" + "dom", + "dom.iterable", + "esnext" ], "target": "ES2023", "isolatedModules": false, diff --git a/vitest.config.ts b/vitest.config.ts index c03d475f..c6ed17a0 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -11,12 +11,16 @@ export default defineConfig({ }, test: { globals: true, - environment: 'jsdom', - environmentMatchGlobs: [ - ['src/__tests__/integration/**', 'node'], - ['src/server/**', 'node'], + projects: [ + { + extends: true, + test: { + name: 'jsdom', + environment: 'jsdom', + include: ['src/**/*.spec.ts', 'src/**/*.test.ts'], + }, + }, ], - include: ['src/**/*.spec.ts', 'src/**/*.test.ts'], coverage: { provider: 'v8', reportsDirectory: 'coverage',