mirror of
https://github.com/tale/headplane.git
synced 2026-07-26 07:48:14 +00:00
docs: deploy stable and beta docs
This commit is contained in:
@@ -0,0 +1,81 @@
|
|||||||
|
name: Docs
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- "v*"
|
||||||
|
branches:
|
||||||
|
- "release/docs"
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: docs-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
beta:
|
||||||
|
name: Deploy Beta Docs
|
||||||
|
if: startsWith(github.ref, 'refs/tags/v') && contains(github.ref_name, '-')
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Check out the repo
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Setup pnpm
|
||||||
|
uses: pnpm/action-setup@v4
|
||||||
|
with:
|
||||||
|
run_install: false
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v6
|
||||||
|
with:
|
||||||
|
node-version-file: package.json
|
||||||
|
cache: pnpm
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Build docs
|
||||||
|
run: pnpm docs:build
|
||||||
|
env:
|
||||||
|
HEADPLANE_BETA_DOCS: "true"
|
||||||
|
|
||||||
|
- name: Deploy to Cloudflare Pages
|
||||||
|
uses: cloudflare/wrangler-action@v3
|
||||||
|
with:
|
||||||
|
apiToken: ${{ secrets.CF_API_TOKEN }}
|
||||||
|
command: pages deploy docs/.vitepress/dist --project-name=headplane-docs-beta
|
||||||
|
|
||||||
|
stable:
|
||||||
|
name: Deploy Stable Docs
|
||||||
|
if: >
|
||||||
|
(startsWith(github.ref, 'refs/tags/v') && !contains(github.ref_name, '-'))
|
||||||
|
|| github.ref == 'refs/heads/release/docs'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Check out the repo
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Setup pnpm
|
||||||
|
uses: pnpm/action-setup@v4
|
||||||
|
with:
|
||||||
|
run_install: false
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v6
|
||||||
|
with:
|
||||||
|
node-version-file: package.json
|
||||||
|
cache: pnpm
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Build docs
|
||||||
|
run: pnpm docs:build
|
||||||
|
|
||||||
|
- name: Deploy to Cloudflare Pages
|
||||||
|
uses: cloudflare/wrangler-action@v3
|
||||||
|
with:
|
||||||
|
apiToken: ${{ secrets.CF_API_TOKEN }}
|
||||||
|
command: pages deploy docs/.vitepress/dist --project-name=headplane-docs
|
||||||
@@ -1 +1,2 @@
|
|||||||
side-effects-cache = false
|
side-effects-cache = false
|
||||||
|
public-hoist-pattern[]=vue
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
import { defineConfig } from "vitepress";
|
import { defineConfig } from "vitepress";
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
|
vite: {
|
||||||
|
define: {
|
||||||
|
__HEADPLANE_BETA_DOCS__: JSON.stringify(process.env.HEADPLANE_BETA_DOCS === "true"),
|
||||||
|
},
|
||||||
|
},
|
||||||
title: "Headplane",
|
title: "Headplane",
|
||||||
description: "The missing dashboard for Headscale",
|
description: "The missing dashboard for Headscale",
|
||||||
cleanUrls: true,
|
cleanUrls: true,
|
||||||
|
|||||||
@@ -1,17 +1,42 @@
|
|||||||
html.dark .light-only {
|
html.dark .light-only {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
html:not(.dark) .dark-only {
|
html:not(.dark) .dark-only {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
figure {
|
figure {
|
||||||
padding: 1em;
|
padding: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
figcaption {
|
figcaption {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
margin-top: 0.5em;
|
margin-top: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--vp-layout-top-height: 36px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.beta-banner {
|
||||||
|
background-color: var(--vp-c-bg);
|
||||||
|
background-image: linear-gradient(var(--vp-c-warning-soft), var(--vp-c-warning-soft));
|
||||||
|
color: var(--vp-c-warning-1);
|
||||||
|
text-align: center;
|
||||||
|
padding: 8px 16px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 500;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
z-index: 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
.beta-banner a {
|
||||||
|
color: var(--vp-c-warning-1);
|
||||||
|
text-decoration: underline;
|
||||||
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+3
@@ -0,0 +1,3 @@
|
|||||||
|
/// <reference types="vitepress/client" />
|
||||||
|
|
||||||
|
declare const __HEADPLANE_BETA_DOCS__: boolean;
|
||||||
@@ -1,4 +1,36 @@
|
|||||||
import DefaultTheme from 'vitepress/theme';
|
import type { Theme } from "vitepress";
|
||||||
import './custom.css';
|
import DefaultTheme from "vitepress/theme";
|
||||||
|
import { h } from "vue";
|
||||||
|
|
||||||
export default DefaultTheme;
|
import "./custom.css";
|
||||||
|
|
||||||
|
const beta = __HEADPLANE_BETA_DOCS__ ?? false;
|
||||||
|
|
||||||
|
export default {
|
||||||
|
extends: DefaultTheme,
|
||||||
|
Layout() {
|
||||||
|
return h(DefaultTheme.Layout, null, {
|
||||||
|
"layout-top": () =>
|
||||||
|
beta
|
||||||
|
? h(
|
||||||
|
"div",
|
||||||
|
{
|
||||||
|
class: "beta-banner",
|
||||||
|
},
|
||||||
|
[
|
||||||
|
"You are currently viewing the ",
|
||||||
|
h("strong", "beta"),
|
||||||
|
" documentation for Headplane. ",
|
||||||
|
h(
|
||||||
|
"a",
|
||||||
|
{
|
||||||
|
href: "https://headplane.net",
|
||||||
|
},
|
||||||
|
"Go to the stable docs →",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
: null,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
} satisfies Theme;
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"include": [".vitepress/**/*"],
|
||||||
|
"compilerOptions": {
|
||||||
|
"module": "ESNext",
|
||||||
|
"moduleResolution": "bundler",
|
||||||
|
"target": "ES2022",
|
||||||
|
"lib": ["DOM", "DOM.Iterable", "ES2023"],
|
||||||
|
"noEmit": true,
|
||||||
|
"strict": true,
|
||||||
|
"skipLibCheck": true
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"include": ["**/*", "**/.server/**/*", "**/.client/**/*", ".react-router/types/**/*"],
|
"include": ["**/*", "**/.server/**/*", "**/.client/**/*", ".react-router/types/**/*"],
|
||||||
|
"exclude": ["docs"],
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"lib": ["DOM", "DOM.Iterable", "ES2023"],
|
"lib": ["DOM", "DOM.Iterable", "ES2023"],
|
||||||
"types": ["node", "vite/client"],
|
"types": ["node", "vite/client"],
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
name = "headplane"
|
|
||||||
compatibility_date = "2025-08-18"
|
|
||||||
|
|
||||||
[assets]
|
|
||||||
directory = "docs/.vitepress/dist"
|
|
||||||
not_found_handling = "404-page"
|
|
||||||
Reference in New Issue
Block a user