fix: 修改runner标签
Some checks failed
Deploy to Server / deploy (push) Failing after 0s

This commit is contained in:
lzh
2026-01-27 18:04:10 +08:00
parent 600342d8cf
commit bdefb708d3
2 changed files with 270 additions and 3 deletions

View File

@@ -1,5 +1,5 @@
name: Deploy to Server
# 自动部署脚本
on:
push:
branches:
@@ -7,9 +7,28 @@ on:
jobs:
deploy:
runs-on: self-hosted
# Runner 标签是 vitals-runner
runs-on: vitals-runner
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: |
/opt/apps/vitals/deploy.sh

248
docs/gitea-runner-setup.md Normal file
View 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 页面**,应该能看到新的工作流开始执行
---
## 常见问题排查
### 问题 1Runner 显示离线
**解决方案:**
```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
```
### 问题 3Runner 执行失败,提示权限错误
**解决方案:**
确保 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` 可以成功
完成以上所有步骤后,工作流应该能正常执行了。