Gitea Actions 适用于 Docusaurus
这是一个适用于 Docusaurus + Gitea Actions 的完整工作流,包含以下两步:
- 构建 Docusaurus:
npm run build
- 用
rsync
将build/
目录同步到你指定的远程服务器目录
示例:.gitea/workflows/deploy.yml
name: docusaurus-deploy
# 触发条件:推送到 main 分支时自动触发
on:
push:
branches: [main]
jobs:
deploy:
# 当前 Gitea Actions 仅支持 docker runner
runs-on: docker
steps:
# 第一步:检出当前仓库代码
- uses: actions/checkout@v3
# 第二步:设置 Node.js 环境
- uses: actions/setup-node@v3
with:
node-version: 18
# 第三步:安装依赖
- run: npm ci
# 第四步:构建 Docusaurus 静态网站
- run: npm run build
# 第五步:通过 rsync 将 build/ 目录同步到远程服务器
- name: 同步到远程服务器
env:
# 以下变量通过 Gitea Secrets 提供(仓库设置中添加)
SSH_USER: ${{ secrets.SSH_USER }} # SSH 用户名
SSH_HOST: ${{ secrets.SSH_HOST }} # SSH 服务器 IP 或域名
SSH_PORT: ${{ secrets.SSH_PORT }} # SSH 端口(默认 22)
SSH_PATH: ${{ secrets.SSH_PATH }} # 远程部署路径
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} # SSH 私钥
run: |
# 写入私钥到临时文件,并设置权限
echo "$SSH_PRIVATE_KEY" > /tmp/key && chmod 600 /tmp/key
# 执行 rsync 同步 build 目录
rsync -avz \
-e "ssh -i /tmp/key -p $SSH_PORT -o StrictHostKeyChecking=no" \
build/ $SSH_USER@$SSH_HOST:$SSH_PATH
你需要配置的 secret(Gitea 仓库设置里):
名称 | 说明 |
---|---|
SSH_USER | 远程服务器用户名 |
SSH_HOST | 远程服务器 IP 或域名 |
SSH_PORT | SSH 端口,默认是 22 |
SSH_PATH | 远程部署目标路径,如 /var/www/docs |
SSH_PRIVATE_KEY | 本地私钥(对应服务器公钥授权) |
你可以通过如下方式生成专用的 SSH key:
ssh-keygen -t ed25519 -C "gitea-deploy" -f ~/.ssh/gitea_deploy
然后:
~/.ssh/gitea_deploy.pub
内容添加到目标服务器的~/.ssh/authorized_keys
~/.ssh/gitea_deploy
内容添加到 Gitea Secrets:SSH_PRIVATE_KEY
密钥是否会泄漏?
不会,只要你用 Gitea 的 Secrets 功能 来存放密钥,它是安全的,密钥内容不会泄漏到仓库。
✅ 安全做法(推荐)
使用 Gitea 的「仓库密钥/Secrets」,添加密钥信息后:
- 它 不会保存在仓库代码里(不是 commit 上去的)