feat: publish standalone product landing page as rendered svg
This commit is contained in:
@@ -8,9 +8,10 @@ Issue-Driven DevOps 平台技能仓库,核心产品是 `gitea-issue-devops-age
|
||||
|
||||
## 公网产品页
|
||||
|
||||
- 产品官网(可直接访问渲染页):`https://fun-md.com/Fun_MD/devops-skills/wiki`
|
||||
- 产品官网(独立前端渲染页,非 Wiki):`https://fun-md.com/Fun_MD/devops-skills/raw/branch/main/site/index.svg`
|
||||
- 仓库入口:`https://fun-md.com/Fun_MD/devops-skills`
|
||||
- HTML 设计稿源码:`site/index.html`
|
||||
- SVG 官网文件:`site/index.svg`
|
||||
|
||||
## 一键安装
|
||||
|
||||
|
||||
213
site/index.svg
Normal file
213
site/index.svg
Normal file
@@ -0,0 +1,213 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1600" height="2500" viewBox="0 0 1600 2500">
|
||||
<defs>
|
||||
<linearGradient id="bgGrad" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="#070c19"/>
|
||||
<stop offset="55%" stop-color="#102347"/>
|
||||
<stop offset="100%" stop-color="#0a3a4f"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="accentGrad" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="#29d8ff"/>
|
||||
<stop offset="100%" stop-color="#49f2c7"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="cardGrad" x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0%" stop-color="#122445" stop-opacity="0.95"/>
|
||||
<stop offset="100%" stop-color="#0f1d38" stop-opacity="0.95"/>
|
||||
</linearGradient>
|
||||
<filter id="softGlow" x="-40%" y="-40%" width="180%" height="180%">
|
||||
<feGaussianBlur stdDeviation="18" result="blur"/>
|
||||
<feMerge>
|
||||
<feMergeNode in="blur"/>
|
||||
<feMergeNode in="SourceGraphic"/>
|
||||
</feMerge>
|
||||
</filter>
|
||||
<style>
|
||||
.title {
|
||||
font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
|
||||
fill: #ecf4ff;
|
||||
font-weight: 700;
|
||||
}
|
||||
.subtitle {
|
||||
font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
|
||||
fill: #b8c9e9;
|
||||
font-size: 30px;
|
||||
}
|
||||
.section-title {
|
||||
font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
|
||||
fill: #e7f1ff;
|
||||
font-size: 44px;
|
||||
font-weight: 700;
|
||||
}
|
||||
.card-title {
|
||||
font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
|
||||
fill: #def2ff;
|
||||
font-size: 32px;
|
||||
font-weight: 700;
|
||||
}
|
||||
.card-text {
|
||||
font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
|
||||
fill: #bad0ee;
|
||||
font-size: 24px;
|
||||
}
|
||||
.mono {
|
||||
font-family: "Cascadia Mono", Consolas, Menlo, monospace;
|
||||
fill: #d8f1ff;
|
||||
font-size: 21px;
|
||||
}
|
||||
.label {
|
||||
font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
|
||||
fill: #88a6d4;
|
||||
font-size: 20px;
|
||||
}
|
||||
.badge {
|
||||
font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
|
||||
fill: #0a2b3f;
|
||||
font-size: 21px;
|
||||
font-weight: 700;
|
||||
}
|
||||
.btn {
|
||||
font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
|
||||
fill: #06253a;
|
||||
font-size: 24px;
|
||||
font-weight: 700;
|
||||
}
|
||||
.btn-muted {
|
||||
font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
|
||||
fill: #d2e8ff;
|
||||
font-size: 22px;
|
||||
font-weight: 600;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
|
||||
<rect x="0" y="0" width="1600" height="2500" fill="url(#bgGrad)"/>
|
||||
<circle cx="1350" cy="240" r="260" fill="#29d8ff" opacity="0.13" filter="url(#softGlow)"/>
|
||||
<circle cx="180" cy="320" r="220" fill="#49f2c7" opacity="0.11" filter="url(#softGlow)"/>
|
||||
<circle cx="420" cy="2100" r="260" fill="#2fd8f0" opacity="0.10" filter="url(#softGlow)"/>
|
||||
|
||||
<rect x="70" y="70" width="1460" height="500" rx="32" fill="url(#cardGrad)" stroke="#345a90" stroke-width="2"/>
|
||||
<rect x="110" y="120" width="390" height="56" rx="28" fill="url(#accentGrad)"/>
|
||||
<text x="145" y="158" class="badge">Issue-Driven DevOps Platform</text>
|
||||
|
||||
<text x="110" y="255" class="title" font-size="74">gitea-issue-devops-agent</text>
|
||||
<text x="110" y="325" class="subtitle">把 Issue → Branch → Preview Slot → Test Loop → Human-Confirmed Merge 变成标准交付引擎</text>
|
||||
<text x="110" y="372" class="subtitle">不是临时脚本,而是可规模化的研发基础设施产品。</text>
|
||||
|
||||
<rect x="110" y="415" width="260" height="82" rx="14" fill="url(#accentGrad)"/>
|
||||
<text x="152" y="468" class="btn">访问仓库</text>
|
||||
<a href="https://fun-md.com/Fun_MD/devops-skills">
|
||||
<rect x="110" y="415" width="260" height="82" rx="14" fill="#ffffff" opacity="0.001"/>
|
||||
</a>
|
||||
|
||||
<rect x="390" y="415" width="330" height="82" rx="14" fill="#1b3157" stroke="#4068a5"/>
|
||||
<text x="445" y="468" class="btn-muted">SKILL 规范文档</text>
|
||||
<a href="https://fun-md.com/Fun_MD/devops-skills/raw/branch/main/skills/gitea-issue-devops-agent/SKILL.md">
|
||||
<rect x="390" y="415" width="330" height="82" rx="14" fill="#ffffff" opacity="0.001"/>
|
||||
</a>
|
||||
|
||||
<rect x="820" y="150" width="660" height="340" rx="22" fill="#0c1a34" stroke="#34598e"/>
|
||||
<text x="860" y="215" class="label">核心指标</text>
|
||||
<text x="860" y="285" class="title" font-size="58">3 Modes</text>
|
||||
<text x="860" y="325" class="label">automatic / semi-automatic / manual</text>
|
||||
<text x="1160" y="285" class="title" font-size="58">5 Scopes</text>
|
||||
<text x="1160" y="325" class="label">skip / client / server / full / infra</text>
|
||||
<text x="860" y="390" class="title" font-size="58">1 : 1 Binding</text>
|
||||
<text x="860" y="430" class="label">Issue - Branch - Preview Slot 精确绑定</text>
|
||||
<text x="1160" y="390" class="title" font-size="58">TTL Reclaim</text>
|
||||
<text x="1160" y="430" class="label">空闲槽位自动回收</text>
|
||||
|
||||
<text x="80" y="680" class="section-title">产品核心价值</text>
|
||||
<rect x="80" y="715" width="460" height="280" rx="20" fill="url(#cardGrad)" stroke="#35598f"/>
|
||||
<text x="110" y="785" class="card-title">1. 分支隔离提测</text>
|
||||
<text x="110" y="835" class="card-text">每个 issue 固定分支和预览环境,</text>
|
||||
<text x="110" y="872" class="card-text">主干环境稳定回归,提测互不覆盖。</text>
|
||||
<text x="110" y="909" class="card-text">团队并行效率显著提升。</text>
|
||||
|
||||
<rect x="570" y="715" width="460" height="280" rx="20" fill="url(#cardGrad)" stroke="#35598f"/>
|
||||
<text x="600" y="785" class="card-title">2. 资源智能节流</text>
|
||||
<text x="600" y="835" class="card-text">按改动自动识别部署范围,</text>
|
||||
<text x="600" y="872" class="card-text">前端-only 改动不重启服务端,</text>
|
||||
<text x="600" y="909" class="card-text">节省机器和运维成本。</text>
|
||||
|
||||
<rect x="1060" y="715" width="460" height="280" rx="20" fill="url(#cardGrad)" stroke="#35598f"/>
|
||||
<text x="1090" y="785" class="card-title">3. 证据化闭环</text>
|
||||
<text x="1090" y="835" class="card-text">提测结果、commit、环境链接、</text>
|
||||
<text x="1090" y="872" class="card-text">验证步骤统一沉淀,</text>
|
||||
<text x="1090" y="909" class="card-text">最终合并始终人工确认。</text>
|
||||
|
||||
<text x="80" y="1090" class="section-title">流程拓扑(Issue 到交付)</text>
|
||||
<rect x="80" y="1125" width="1440" height="220" rx="20" fill="url(#cardGrad)" stroke="#35598f"/>
|
||||
<rect x="112" y="1170" width="250" height="130" rx="14" fill="#13284b" stroke="#3d639b"/>
|
||||
<text x="138" y="1223" class="card-title" font-size="26">1. 引导连接</text>
|
||||
<text x="138" y="1263" class="card-text" font-size="20">repo_url + api_key + mode</text>
|
||||
<rect x="402" y="1170" width="250" height="130" rx="14" fill="#13284b" stroke="#3d639b"/>
|
||||
<text x="430" y="1223" class="card-title" font-size="26">2. 质量审计</text>
|
||||
<text x="430" y="1263" class="card-text" font-size="20">Issue + 图片附件 + 去重评分</text>
|
||||
<rect x="692" y="1170" width="250" height="130" rx="14" fill="#13284b" stroke="#3d639b"/>
|
||||
<text x="720" y="1223" class="card-title" font-size="26">3. 分支修复</text>
|
||||
<text x="720" y="1263" class="card-text" font-size="20">严格在 issue 分支迭代</text>
|
||||
<rect x="982" y="1170" width="250" height="130" rx="14" fill="#13284b" stroke="#3d639b"/>
|
||||
<text x="1007" y="1223" class="card-title" font-size="26">4. 按范围部署</text>
|
||||
<text x="1007" y="1263" class="card-text" font-size="20">skip/client/server/full/infra</text>
|
||||
<rect x="1272" y="1170" width="216" height="130" rx="14" fill="#13284b" stroke="#3d639b"/>
|
||||
<text x="1300" y="1223" class="card-title" font-size="26">5. 自动回收</text>
|
||||
<text x="1300" y="1263" class="card-text" font-size="20">TTL + Close Release</text>
|
||||
|
||||
<line x1="362" y1="1235" x2="402" y2="1235" stroke="#58d8ff" stroke-width="4"/>
|
||||
<line x1="652" y1="1235" x2="692" y2="1235" stroke="#58d8ff" stroke-width="4"/>
|
||||
<line x1="942" y1="1235" x2="982" y2="1235" stroke="#58d8ff" stroke-width="4"/>
|
||||
<line x1="1232" y1="1235" x2="1272" y2="1235" stroke="#58d8ff" stroke-width="4"/>
|
||||
|
||||
<text x="80" y="1440" class="section-title">一键安装命令(Windows / macOS / Linux)</text>
|
||||
|
||||
<rect x="80" y="1480" width="470" height="300" rx="18" fill="url(#cardGrad)" stroke="#35598f"/>
|
||||
<text x="110" y="1542" class="card-title">Linux</text>
|
||||
<rect x="110" y="1568" width="410" height="178" rx="12" fill="#091327" stroke="#406aa6"/>
|
||||
<text x="130" y="1620" class="mono">curl -fsSL https://fun-md.com/Fun_MD/</text>
|
||||
<text x="130" y="1656" class="mono">devops-skills/raw/branch/main/install/</text>
|
||||
<text x="130" y="1692" class="mono">install.sh | bash</text>
|
||||
|
||||
<rect x="565" y="1480" width="470" height="300" rx="18" fill="url(#cardGrad)" stroke="#35598f"/>
|
||||
<text x="595" y="1542" class="card-title">macOS</text>
|
||||
<rect x="595" y="1568" width="410" height="178" rx="12" fill="#091327" stroke="#406aa6"/>
|
||||
<text x="615" y="1620" class="mono">curl -fsSL https://fun-md.com/Fun_MD/</text>
|
||||
<text x="615" y="1656" class="mono">devops-skills/raw/branch/main/install/</text>
|
||||
<text x="615" y="1692" class="mono">install.sh | bash</text>
|
||||
|
||||
<rect x="1050" y="1480" width="470" height="300" rx="18" fill="url(#cardGrad)" stroke="#35598f"/>
|
||||
<text x="1080" y="1542" class="card-title">Windows PowerShell</text>
|
||||
<rect x="1080" y="1568" width="410" height="178" rx="12" fill="#091327" stroke="#406aa6"/>
|
||||
<text x="1100" y="1610" class="mono">powershell -NoProfile -ExecutionPolicy</text>
|
||||
<text x="1100" y="1646" class="mono">Bypass -Command "iwr -useb https://</text>
|
||||
<text x="1100" y="1682" class="mono">fun-md.com/Fun_MD/devops-skills/raw/</text>
|
||||
<text x="1100" y="1718" class="mono">branch/main/install/install.ps1 | iex"</text>
|
||||
|
||||
<text x="80" y="1878" class="section-title">核心工具</text>
|
||||
<rect x="80" y="1915" width="470" height="360" rx="18" fill="url(#cardGrad)" stroke="#35598f"/>
|
||||
<text x="110" y="1976" class="card-title">issue_audit.py</text>
|
||||
<text x="110" y="2014" class="card-text">拉取 issue / 评论 / 图片附件,去重并评分。</text>
|
||||
<rect x="110" y="2042" width="410" height="205" rx="12" fill="#091327" stroke="#406aa6"/>
|
||||
<text x="130" y="2091" class="mono">python .../issue_audit.py --base-url</text>
|
||||
<text x="130" y="2127" class="mono">https://fun-md.com --repo FunMD/</text>
|
||||
<text x="130" y="2163" class="mono">document-collab --token <TOKEN></text>
|
||||
<text x="130" y="2199" class="mono">--download-attachments</text>
|
||||
|
||||
<rect x="565" y="1915" width="470" height="360" rx="18" fill="url(#cardGrad)" stroke="#35598f"/>
|
||||
<text x="595" y="1976" class="card-title">change_scope.py</text>
|
||||
<text x="595" y="2014" class="card-text">识别部署范围,决定是否重启服务端。</text>
|
||||
<rect x="595" y="2042" width="410" height="205" rx="12" fill="#091327" stroke="#406aa6"/>
|
||||
<text x="615" y="2091" class="mono">python .../change_scope.py</text>
|
||||
<text x="615" y="2127" class="mono">--repo-path . --base-ref origin/main</text>
|
||||
<text x="615" y="2163" class="mono">--head-ref HEAD</text>
|
||||
|
||||
<rect x="1050" y="1915" width="470" height="360" rx="18" fill="url(#cardGrad)" stroke="#35598f"/>
|
||||
<text x="1080" y="1976" class="card-title">preview_slot_allocator.py</text>
|
||||
<text x="1080" y="2014" class="card-text">分配 / 复用 / 释放预览槽位。</text>
|
||||
<rect x="1080" y="2042" width="410" height="205" rx="12" fill="#091327" stroke="#406aa6"/>
|
||||
<text x="1100" y="2091" class="mono">python .../preview_slot_allocator.py</text>
|
||||
<text x="1100" y="2127" class="mono">--state-file .tmp/preview-slots.json</text>
|
||||
<text x="1100" y="2163" class="mono">--slots preview-a,preview-b --evict-oldest</text>
|
||||
|
||||
<rect x="80" y="2330" width="1440" height="110" rx="18" fill="#0b1730" stroke="#395d96"/>
|
||||
<text x="120" y="2383" class="label">官网入口: https://fun-md.com/Fun_MD/devops-skills/raw/branch/main/site/index.svg</text>
|
||||
<text x="120" y="2418" class="label">仓库地址: https://fun-md.com/Fun_MD/devops-skills</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
@@ -1,12 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="630" viewBox="0 0 1200 630">
|
||||
<defs>
|
||||
<linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
|
||||
<stop offset="0%" stop-color="#0ea5e9"/>
|
||||
<stop offset="100%" stop-color="#22c55e"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<rect width="1200" height="630" fill="#0b1220"/>
|
||||
<rect x="40" y="40" width="1120" height="550" rx="20" fill="url(#g)" opacity="0.2"/>
|
||||
<text x="80" y="170" fill="#e5f3ff" font-family="Arial, sans-serif" font-size="64" font-weight="700">DevOps Skills Probe</text>
|
||||
<text x="80" y="250" fill="#b6cff2" font-family="Arial, sans-serif" font-size="34">If this renders as image, SVG delivery is possible.</text>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 702 B |
Reference in New Issue
Block a user