2.6 KiB
2.6 KiB
Gitea Actions 配置说明
本目录为本项目的 Gitea CI/CD 工作流。运行环境为 self-hosted Linux runner,且 runner 必须能在目标主机上以 root 身份执行 eBPF/bcc。
工作流
-
workflows/ci.yml— push / PR 到main触发。语法检查 + 干净 venv 安装依赖。不需要 root。 -
workflows/cd.yml— 推送v*tag 或手动触发。流程:stop.sh停掉旧实例(若存在)rsync --delete当前 checkout 到固定目录/opt/syscall_monitor,排除.git/.venv/.venv-ci/logs/.pid,并chmod +x三个部署脚本setup.sh装 venv 依赖run.sh启动sleep 5后校验.pid进程存活,最多重试 3 次(每次间隔 2 秒)- 重试 10 次
curl http://127.0.0.1:5000做健康检查(每次间隔 2 秒) tail启动日志(无论成功失败都执行)
需要 root。部署目录和健康检查 URL 在 workflow 顶部
env:块里改。
Runner 准备
-
在目标 Linux 主机上注册 act_runner,labels 至少包含
self-hosted。 -
安装系统依赖:
sudo apt install -y python3-venv python3-bpfcc bpfcc-tools rsync curl linux-headers-$(uname -r) -
创建固定部署目录(脚本以 root 运行,目录所有权保持 root):
sudo mkdir -p /opt/syscall_monitor -
给 runner 用户配置免密 sudo。写
/etc/sudoers.d/syscall-monitor(用sudo visudo -f编辑,文件权限0440):gitea-runner ALL=(root) NOPASSWD: ALL- 用户名以实际 runner 进程身份为准(
id -un查看),不一定是gitea-runner。 rsync实际路径以which rsync为准(一般是/usr/bin/rsync)。
- 用户名以实际 runner 进程身份为准(
触发方式
-
日常 push / PR → 自动跑 CI。
-
发版部署 → 打 tag → 自动跑 CD:
git tag v0.1.0 && git push origin v0.1.0也可在 Gitea Actions 页面用
workflow_dispatch手动触发(无需打 tag)。
注意
- 部署目录固定为
/opt/syscall_monitor。每次 CD 用rsync --delete全量同步代码,但排除.venv/.venv-ci/logs/.pid/.git,所以 venv 不会每次重建,依赖增量装。 - 健康检查 URL 由
HEALTH_URL控制,默认http://127.0.0.1:5000,重试 10 次每次间隔 2 秒。 run.sh是nohup后台启动,runner 当前 workspace 跟部署目录是分开的——.pid落在/opt/syscall_monitor/.pid,CD 校验的就是这个。- 失败时 CD 会
tail/opt/syscall_monitor/logs/app.log末尾若干行到 stderr,便于在 Actions 页面直接看启动日志。