From 6c5aef664b042663e0872c69c01f853e5e8e408e Mon Sep 17 00:00:00 2001 From: nimesulide <2224009828@qq.com> Date: Sat, 17 May 2025 22:15:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=A0=E9=99=A4runner?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routers/web/shared/actions/runners.go | 10 ++++++++++ services/runner/runner.go | 17 +++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/routers/web/shared/actions/runners.go b/routers/web/shared/actions/runners.go index 8c352c78c3..bed8a6f2c1 100644 --- a/routers/web/shared/actions/runners.go +++ b/routers/web/shared/actions/runners.go @@ -171,6 +171,16 @@ func RunnerDeletePost(ctx *context.Context, runnerID int64, ctx.JSONRedirect(failedRedirectTo) return } + runner, err := actions_model.GetRunnerByID(ctx, runnerID) + if err != nil { + log.Warn("DeleteRunnerPost.DeleteRunnerContainer failed: %v, url: %s", err, ctx.Req.URL) + } + runnerName := runner.Name + + err = runner_services.DeleteRunnerByName(ctx, runnerName) + if err != nil { + log.Warn("DeleteRunnerContainer failed") + } log.Info("DeleteRunnerPost success: %s", ctx.Req.URL) diff --git a/services/runner/runner.go b/services/runner/runner.go index e9d9bc18d1..164f5f0e96 100644 --- a/services/runner/runner.go +++ b/services/runner/runner.go @@ -81,6 +81,23 @@ func RegistRunner(ctx context.Context, token string) error { return nil } +func DeleteRunnerByName(ctx context.Context, runnerName string) error { + log.Info("开始停止并删除容器: %s", runnerName) + + // 创建Docker客户端 + cli, err := docker_module.CreateDockerClient(&ctx) + if err != nil { + return fmt.Errorf("Docker client创建失败:%v", err) + } + log.Info("[StopAndRemoveContainer]Docker client创建成功") + defer cli.Close() + err = docker_module.DeleteContainer(cli, runnerName) + if err != nil { + return fmt.Errorf("Runner创建失败:%v", err) + } + return nil +} + func getLocalIP() ([]string, error) { var ips []string interfaces, err := net.Interfaces()