修改点
- 修改 act/pkg/runner/run_context.go:L312 VM模式下改为退出runner
- 搞个proxy,在runner提交了最后更新后如果
task.Status.IsDone()
则回滚vm快照 - proxy给vm签发一次性的token,使用qmguestagent下发,保证恶意任务无法重用token来冒充runner(重用了也只能冒充自己,没有意义)
- proxy同时负责处理并发执行
- 默认情况下runner有个runner.capacity配置
- vm里设置为1
- proxy将任务分发给多个vm
- proxy还负责在超时后强制停止vm
可能的优化
- proxy负责预先启动部分vm
pve 设置 hookscript 示例
qm set 100 --hookscript local:snippets/destroy.sh