This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
name: Deploy to Server
|
name: Deploy to Server
|
||||||
# 自动部署脚本
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
@@ -7,9 +7,28 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deploy:
|
deploy:
|
||||||
runs-on: self-hosted
|
# Runner 标签是 vitals-runner
|
||||||
|
runs-on: vitals-runner
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Run deploy script on server
|
- name: 检查环境
|
||||||
|
run: |
|
||||||
|
echo "当前用户: $(whoami)"
|
||||||
|
echo "当前目录: $(pwd)"
|
||||||
|
echo "Docker 版本: $(docker --version)"
|
||||||
|
echo "Git 版本: $(git --version)"
|
||||||
|
|
||||||
|
- name: 检查部署脚本是否存在
|
||||||
|
run: |
|
||||||
|
if [ -f /opt/apps/vitals/deploy.sh ]; then
|
||||||
|
echo "✓ deploy.sh 存在"
|
||||||
|
ls -lh /opt/apps/vitals/deploy.sh
|
||||||
|
else
|
||||||
|
echo "✗ deploy.sh 不存在!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: 执行部署脚本
|
||||||
run: |
|
run: |
|
||||||
/opt/apps/vitals/deploy.sh
|
/opt/apps/vitals/deploy.sh
|
||||||
|
|
||||||
|
|||||||
248
docs/gitea-runner-setup.md
Normal file
248
docs/gitea-runner-setup.md
Normal file
@@ -0,0 +1,248 @@
|
|||||||
|
# Gitea Actions Runner 安装和排查指南
|
||||||
|
|
||||||
|
## 问题:工作流一直显示"等待中"
|
||||||
|
|
||||||
|
如果 Gitea Actions 工作流一直显示"等待中"状态,通常是因为 Runner 没有正确运行或标签不匹配。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 第一步:在 Gitea 中获取 Runner 注册信息
|
||||||
|
|
||||||
|
1. **登录 Gitea**(`http://124.221.55.225:3000`)
|
||||||
|
2. **进入仓库**:`Rocky/DDUp`
|
||||||
|
3. **进入 Settings(设置)** -> **Actions** -> **Runners**
|
||||||
|
4. **点击 "Add Runner"** 或 **"注册 Runner"**
|
||||||
|
5. **选择平台**:`linux` / `amd64`
|
||||||
|
6. **复制注册命令**(类似下面的格式):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 示例命令(实际命令以 Gitea 页面为准)
|
||||||
|
./gitea-runner register \
|
||||||
|
--instance http://124.221.55.225:3000 \
|
||||||
|
--token <你的TOKEN> \
|
||||||
|
--labels "self-hosted:linux:amd64" \
|
||||||
|
--name "vitals-deploy-runner"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 第二步:在服务器上安装和注册 Runner
|
||||||
|
|
||||||
|
SSH 登录到你的服务器(`VM-16-14-ubuntu`):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ssh root@VM-16-14-ubuntu
|
||||||
|
```
|
||||||
|
|
||||||
|
### 1. 创建 Runner 目录
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir -p /opt/gitea-runner
|
||||||
|
cd /opt/gitea-runner
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 下载 Gitea Runner
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 下载最新版本的 Gitea Runner
|
||||||
|
curl -L https://dl.gitea.com/runner/gitea-runner-linux-amd64 -o gitea-runner
|
||||||
|
chmod +x gitea-runner
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 注册 Runner
|
||||||
|
|
||||||
|
使用第一步从 Gitea 页面复制的注册命令(替换 `<你的TOKEN>`):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./gitea-runner register \
|
||||||
|
--instance http://124.221.55.225:3000 \
|
||||||
|
--token <你的TOKEN> \
|
||||||
|
--labels "self-hosted:linux:amd64" \
|
||||||
|
--name "vitals-deploy-runner"
|
||||||
|
```
|
||||||
|
|
||||||
|
**重要提示:**
|
||||||
|
- 注册时设置的 `--labels` 必须包含 `self-hosted`
|
||||||
|
- 如果设置了多个标签(如 `self-hosted:linux:amd64`),在 `deploy.yml` 中需要匹配这些标签
|
||||||
|
|
||||||
|
### 4. 将 Runner 配置为系统服务
|
||||||
|
|
||||||
|
创建 systemd 服务文件:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cat > /etc/systemd/system/gitea-runner.service << 'EOF'
|
||||||
|
[Unit]
|
||||||
|
Description=Gitea Actions Runner
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=root
|
||||||
|
WorkingDirectory=/opt/gitea-runner
|
||||||
|
ExecStart=/opt/gitea-runner/gitea-runner daemon
|
||||||
|
Restart=always
|
||||||
|
RestartSec=5s
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
启动并启用服务:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl enable gitea-runner
|
||||||
|
systemctl start gitea-runner
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. 检查 Runner 状态
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 查看服务状态
|
||||||
|
systemctl status gitea-runner
|
||||||
|
|
||||||
|
# 查看日志
|
||||||
|
journalctl -u gitea-runner -f
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 第三步:验证 Runner 是否在线
|
||||||
|
|
||||||
|
1. **回到 Gitea 仓库页面**
|
||||||
|
2. **进入 Settings -> Actions -> Runners**
|
||||||
|
3. **检查 Runner 列表**,应该能看到你刚注册的 Runner,状态应该是 **"在线"** 或 **"Online"**
|
||||||
|
|
||||||
|
如果显示 **"离线"** 或 **"Offline"**,检查:
|
||||||
|
- Runner 服务是否运行:`systemctl status gitea-runner`
|
||||||
|
- 网络连接是否正常:Runner 需要能访问 `http://124.221.55.225:3000`
|
||||||
|
- 防火墙是否阻止了连接
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 第四步:检查 deploy.yml 中的标签匹配
|
||||||
|
|
||||||
|
打开 `.gitea/workflows/deploy.yml`,确认 `runs-on` 与 Runner 注册时的标签匹配:
|
||||||
|
|
||||||
|
**情况 A:** 如果注册时标签是 `self-hosted`(只有一个标签)
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
runs-on: self-hosted
|
||||||
|
```
|
||||||
|
|
||||||
|
**情况 B:** 如果注册时标签是 `self-hosted:linux:amd64`(多个标签)
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
runs-on: [self-hosted, linux, amd64]
|
||||||
|
```
|
||||||
|
|
||||||
|
或者:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
runs-on: self-hosted:linux:amd64
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 第五步:重新触发工作流
|
||||||
|
|
||||||
|
1. **修改并推送代码**(触发新的工作流运行):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 在本地或服务器上
|
||||||
|
git commit --allow-empty -m "trigger: test gitea actions"
|
||||||
|
git push origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **在 Gitea 中查看 Actions 页面**,应该能看到新的工作流开始执行
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 常见问题排查
|
||||||
|
|
||||||
|
### 问题 1:Runner 显示离线
|
||||||
|
|
||||||
|
**解决方案:**
|
||||||
|
```bash
|
||||||
|
# 重启 Runner 服务
|
||||||
|
systemctl restart gitea-runner
|
||||||
|
|
||||||
|
# 查看详细日志
|
||||||
|
journalctl -u gitea-runner -n 50
|
||||||
|
```
|
||||||
|
|
||||||
|
### 问题 2:工作流一直等待,Runner 在线但就是不执行
|
||||||
|
|
||||||
|
**可能原因:**
|
||||||
|
- 标签不匹配
|
||||||
|
- Runner 版本过旧
|
||||||
|
|
||||||
|
**解决方案:**
|
||||||
|
1. 检查 `deploy.yml` 中的 `runs-on` 是否与 Runner 标签完全匹配
|
||||||
|
2. 更新 Runner 到最新版本:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /opt/gitea-runner
|
||||||
|
curl -L https://dl.gitea.com/runner/gitea-runner-linux-amd64 -o gitea-runner
|
||||||
|
chmod +x gitea-runner
|
||||||
|
systemctl restart gitea-runner
|
||||||
|
```
|
||||||
|
|
||||||
|
### 问题 3:Runner 执行失败,提示权限错误
|
||||||
|
|
||||||
|
**解决方案:**
|
||||||
|
确保 Runner 有执行脚本和 Docker 的权限:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 确保 deploy.sh 有执行权限
|
||||||
|
chmod +x /opt/apps/vitals/deploy.sh
|
||||||
|
|
||||||
|
# 确保 Runner 用户(通常是 root)在 docker 组中
|
||||||
|
usermod -aG docker root
|
||||||
|
```
|
||||||
|
|
||||||
|
### 问题 4:无法连接到 Gitea 服务器
|
||||||
|
|
||||||
|
**解决方案:**
|
||||||
|
检查网络连接和防火墙:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 测试连接
|
||||||
|
curl -I http://124.221.55.225:3000
|
||||||
|
|
||||||
|
# 如果 Gitea 使用 HTTPS,确保 Runner 能访问 HTTPS 地址
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 验证部署脚本
|
||||||
|
|
||||||
|
在手动测试部署脚本是否正常:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# SSH 到服务器
|
||||||
|
ssh root@VM-16-14-ubuntu
|
||||||
|
|
||||||
|
# 测试脚本
|
||||||
|
/opt/apps/vitals/deploy.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
如果手动执行成功,但通过 Gitea Actions 执行失败,检查:
|
||||||
|
- Runner 的工作目录
|
||||||
|
- 环境变量
|
||||||
|
- 权限问题
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 快速检查清单
|
||||||
|
|
||||||
|
- [ ] Gitea Actions 已启用
|
||||||
|
- [ ] Runner 已下载并注册
|
||||||
|
- [ ] Runner 服务正在运行(`systemctl status gitea-runner`)
|
||||||
|
- [ ] Runner 在 Gitea 中显示为"在线"
|
||||||
|
- [ ] `deploy.yml` 中的 `runs-on` 标签与 Runner 标签匹配
|
||||||
|
- [ ] `deploy.sh` 有执行权限
|
||||||
|
- [ ] 手动执行 `deploy.sh` 可以成功
|
||||||
|
|
||||||
|
完成以上所有步骤后,工作流应该能正常执行了。
|
||||||
Reference in New Issue
Block a user