feat: add support for headscale 0.29+

This commit is contained in:
Aarnav Tale
2026-06-20 18:03:14 -04:00
parent 846c030bc1
commit e29221e5f7
7 changed files with 21 additions and 7 deletions
-1
View File
@@ -332,7 +332,6 @@ function augmentUnstrictConfig(loaded: Partial<typeof headscaleConfig.infer>) {
tls_letsencrypt_challenge_type: loaded.tls_letsencrypt_challenge_type ?? "HTTP-01",
grpc_listen_addr: loaded.grpc_listen_addr ?? ":50443",
grpc_allow_insecure: loaded.grpc_allow_insecure ?? false,
randomize_client_port: loaded.randomize_client_port ?? false,
unix_socket: loaded.unix_socket ?? "/var/run/headscale/headscale.sock",
unix_socket_permission: loaded.unix_socket_permission ?? "0770",
+17 -2
View File
@@ -79,7 +79,19 @@ export const headscaleConfig = type({
},
disable_check_updates: goBool.default(false),
ephemeral_node_inactivity_timeout: goDuration.default("30m"),
"ephemeral_node_inactivity_timeout?": goDuration,
"node?": {
expiry: goDuration.default("0"),
"ephemeral?": {
inactivity_timeout: goDuration.default("30m"),
},
"routes?": {
"ha?": {
probe_interval: goDuration.default("10s"),
probe_timeout: goDuration.default("5s"),
},
},
},
database: databaseConfig,
acme_url: 'string = "https://acme-v02.api.letsencrypt.org/directory"',
@@ -147,5 +159,8 @@ export const headscaleConfig = type({
enabled: goBool.default(false),
},
randomize_client_port: goBool.default(false),
"randomize_client_port?": goBool,
"auto_update?": {
enabled: goBool.default(false),
},
});
+1 -1
View File
@@ -26,7 +26,7 @@ describe.for(HS_VERSIONS)("Headscale %s: Runtime Client", (version) => {
expect(bootstrapper.capabilities.nodeOwnerIsImmutable).toBe(gte(v, "0.28.0"));
// If a future version is added to HS_VERSIONS before this test is
// updated, surface that explicitly rather than passing silently.
const known: Version[] = ["0.27.0", "0.27.1", "0.28.0"];
const known: Version[] = ["0.27.0", "0.27.1", "0.28.0", "0.29.0", "0.29.1"];
if (!known.includes(version)) {
context.skip();
}
+1
View File
@@ -10,6 +10,7 @@ import { afterAll, beforeAll, describe, expect, test } from "vitest";
// This is a little shim file that we use to execute the real proc-helper that
// is bundled through Vite in order to test against a real Linux /proc FS.
const testRunner = `
process.env.NODE_ENV = "test";
const { findHeadscaleServe } = require("./proc-helper.js");
async function main() {
-1
View File
@@ -71,4 +71,3 @@ unix_socket: /var/run/headscale/headscale.sock
unix_socket_permission: "0770"
logtail:
enabled: false
randomize_client_port: false
+1 -1
View File
@@ -6,7 +6,7 @@ import { startTailscaleNode, TailscaleNodeEnv } from "./start-tailscale";
// The set of Headscale versions integration tests run against. Listed
// explicitly (rather than derived from a generated manifest) so the
// supported version matrix lives next to the code that uses it.
export const HS_VERSIONS = ["0.27.0", "0.27.1", "0.28.0"] as const;
export const HS_VERSIONS = ["0.27.0", "0.27.1", "0.28.0", "0.29.0", "0.29.1"] as const;
export type Version = (typeof HS_VERSIONS)[number];
interface VersionStateEntry {
+1 -1
View File
@@ -33,7 +33,7 @@ export default defineConfig({
name: "integration:api",
include: ["tests/integration/api/**/*.test.ts"],
setupFiles: ["tests/integration/setup/vitest-hook.ts"],
testTimeout: 15_000,
testTimeout: 60_000,
},
},
{