添加 CI 自动部署 workflow + CMS IP 配置
All checks were successful
Build and Deploy / build-deploy (push) Successful in 46s

This commit is contained in:
2026-06-11 17:58:24 +08:00
parent 53092b52db
commit db90280989
6 changed files with 90 additions and 11 deletions

View File

@@ -0,0 +1,25 @@
name: Build and Deploy
on:
push:
branches:
- main
jobs:
build-deploy:
runs-on: ubuntu-latest
steps:
- name: 检出代码
uses: actions/checkout@v4
- name: 安装依赖
run: npm ci
- name: 构建站点
run: npm run build
- name: 发布到 Nginx 目录
run: |
mkdir -p /var/www/shizhui
rsync -a --delete dist/ /var/www/shizhui/
echo "已发布到 /var/www/shizhui"

3
.gitignore vendored
View File

@@ -19,3 +19,6 @@ AccessKey*
credentials*
# macOS
.DS_Store
# 本地凭据,禁止提交
CREDENTIALS.txt

View File

@@ -0,0 +1,20 @@
# act_runner 配置host 模式2G 内存服务器友好)
log:
level: info
runner:
capacity: 1 # 同时只跑 1 个任务,省内存
timeout: 10m
fetch_timeout: 5s
fetch_interval: 2s
cache:
enabled: true
container:
# host 模式不使用容器;以下保留默认
network: ""
privileged: false
host:
workdir_parent: /var/lib/act_runner/work

13
deploy/act_runner.service Normal file
View File

@@ -0,0 +1,13 @@
[Unit]
Description=Gitea Actions Runner
After=network.target gitea.service
[Service]
ExecStart=/usr/local/bin/act_runner daemon --config /etc/act_runner/config.yaml
WorkingDirectory=/var/lib/act_runner
Environment=HOME=/root
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target

View File

@@ -50,14 +50,31 @@
> 以下涉及服务器操作,按 `.kiro/steering/commands.md` 规则,需用户确认授权后执行。
### 阶段一:基础设施
1. 服务器初始化Nginx、防火墙`docs/DEPLOY.md`)。
2. 安装 Gitea二进制或 docker数据目录规划配置 `git.shizhui.xyz`
3. Nginx 反向代理 Gitea申请 HTTPS 证书(含 git 子域名)。
4. 创建管理员账号,建立本项目仓库,推送现有代码。
1. 服务器初始化Nginx、防火墙`docs/DEPLOY.md`)。
2. 安装 Gitea二进制或 docker数据目录规划配置 `git.shizhui.xyz`
3. Nginx 反向代理 Gitea申请 HTTPS 证书(含 git 子域名)。
4. 创建管理员账号,建立本项目仓库,推送现有代码。
### 阶段二CI 自动部署
### 已完成的 Gitea 部署细节
- 版本Gitea 1.25.5二进制SQLite 数据库,省内存)
- 运行systemd 服务 `gitea`,监听 127.0.0.1:3000
- 反代Nginx → https://git.shizhui.xyz证书已含该子域名
- 配置:`/etc/gitea/app.ini`(关闭开放注册、启用 Actions
- 账号:
- `shizhui`(管理员)
- `developer`(普通用户 / 内容维护者)
- 两账号密码已单独设置,不记录于文档;首次登录后请自行修改。
- 仓库:`shizhui/shizhui_website`(已推送全部代码)
- 推送方式:因域名未备案,经公网域名会被劫持,推送通过 SSH 端口转发
(本地 3000 → 服务器 127.0.0.1:3000完成。
### 阶段二CI 自动部署(进行中)
5. 安装并注册 Gitea Actions Runner。
6. 编写 workflow`push`主分支 → `npm ci && npm run build` → 发布到 `/var/www/shizhui`
6. workflowpush 主分支 → 构建 → 发布到 `/var/www/shizhui`
### 测试访问地址(备案完成前)
- 网站http://8.137.165.96:8080
- Gitea需在本地 hosts 绑定,或经 SSH 隧道访问(域名直连会被劫持)
### 阶段三:接入 CMS
7. 在站点加入 `/admin`Sveltia CMS 页面 + `config.yml`)。

View File

@@ -1,12 +1,13 @@
# Sveltia CMS 配置(兼容 Decap CMS 格式)
# 后端:自托管 Gitea通过 Gitea OAuth 登录鉴权
# 后端:自托管 GiteaIP 访问,备案完成前不走域名),通过 Gitea OAuth 登录鉴权
backend:
name: gitea
repo: shizhui/shizhui_website # Gitea 上的 <owner>/<repo>,部署时按实际创建调整
base_url: https://git.shizhui.xyz # Gitea 实例地址OAuth 在此完成)
api_root: https://git.shizhui.xyz/api/v1
repo: shizhui/shizhui_website # Gitea 上的 <owner>/<repo>
base_url: http://8.137.165.96:3000 # Gitea 实例地址OAuth 在此完成)
api_root: http://8.137.165.96:3000/api/v1
branch: main
app_id: "27b5f734-8df0-4a5e-9ea8-e7597dea4f6c" # Gitea OAuth 应用 client_id公开客户端PKCE
# 上传媒体(图片等)存放位置
media_folder: "public/uploads" # 文件实际写入仓库的此目录
@@ -17,7 +18,7 @@ public_folder: "/uploads" # 站点引用时的 URL 前缀
local_backend: true
# 站点地址(编辑器“在站点查看”跳转用)
site_url: https://shizhui.xyz
site_url: http://8.137.165.96:8080
# 中文界面
locale: zh