From f8a8af4ec6556ffd9ee9ebd25406399f4d63c33d Mon Sep 17 00:00:00 2001 From: vecmatex Date: Wed, 14 May 2025 15:35:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=8E=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E6=B3=A8=E5=86=8Crunner=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- options/locale/locale_en-US.ini | 2 ++ options/locale/locale_zh-CN.ini | 2 ++ routers/web/repo/setting/runners.go | 11 +++++++++++ routers/web/shared/actions/runners.go | 19 +++++++++++++++++++ routers/web/web.go | 13 +++++++++++++ services/runner/runner.go | 9 +++++---- templates/shared/actions/runner_list.tmpl | 3 +++ 7 files changed, 55 insertions(+), 4 deletions(-) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 580350e89f..7f845486e2 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -3684,6 +3684,8 @@ runners.status.active = Active runners.status.offline = Offline runners.version = Version runners.reset_registration_token = Reset registration token +runners.regist_runner = Register a new runner +runners.regist_runner_success = Register a new runner successfully runners.reset_registration_token_success = Runner registration token reset successfully runs.all_workflows = All Workflows diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index 7d3232e9e8..20a4197f02 100644 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -3675,6 +3675,8 @@ runners.status.active=激活 runners.status.offline=离线 runners.version=版本 runners.reset_registration_token=重置注册令牌 +runners.regist_runner=注册运行器 +runners.regist_runner_success=成功注册运行器 runners.reset_registration_token_success=成功重置运行器注册令牌 runs.all_workflows=所有工作流 diff --git a/routers/web/repo/setting/runners.go b/routers/web/repo/setting/runners.go index 93e6f518b0..14126749fc 100644 --- a/routers/web/repo/setting/runners.go +++ b/routers/web/repo/setting/runners.go @@ -11,6 +11,7 @@ import ( actions_model "code.gitea.io/gitea/models/actions" "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/modules/base" + "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" actions_shared "code.gitea.io/gitea/routers/web/shared/actions" shared_user "code.gitea.io/gitea/routers/web/shared/user" @@ -172,6 +173,16 @@ func ResetRunnerRegistrationToken(ctx *context.Context) { actions_shared.RunnerResetRegistrationToken(ctx, rCtx.OwnerID, rCtx.RepoID, rCtx.RedirectLink) } +func RegisterARunner(ctx *context.Context) { + log.Info("Register a runner_test!!!!!!!!!!!") + rCtx, err := getRunnersCtx(ctx) + if err != nil { + ctx.ServerError("getRunnersCtx", err) + return + } + actions_shared.RunnerRegistARunner(ctx, rCtx.OwnerID, rCtx.RepoID, rCtx.RedirectLink) +} + // RunnerDeletePost response for deleting runner func RunnerDeletePost(ctx *context.Context) { rCtx, err := getRunnersCtx(ctx) diff --git a/routers/web/shared/actions/runners.go b/routers/web/shared/actions/runners.go index f38933226b..8c352c78c3 100644 --- a/routers/web/shared/actions/runners.go +++ b/routers/web/shared/actions/runners.go @@ -13,6 +13,7 @@ import ( "code.gitea.io/gitea/modules/web" "code.gitea.io/gitea/services/context" "code.gitea.io/gitea/services/forms" + runner_services "code.gitea.io/gitea/services/runner" ) // RunnersList prepares data for runners list @@ -141,6 +142,24 @@ func RunnerResetRegistrationToken(ctx *context.Context, ownerID, repoID int64, r ctx.Redirect(redirectTo) } +func RunnerRegistARunner(ctx *context.Context, ownerID, repoID int64, redirectTo string) { + token, err := actions_model.NewRunnerToken(ctx, ownerID, repoID) + if err != nil { + ctx.ServerError("NewRunnerToken", err) + return + } + regToken := token.Token + err = runner_services.RegistRunner(ctx, regToken) + if err != nil { + log.Warn("RegistRunner failed: %v, url: %s", err, ctx.Req.URL) + ctx.Flash.Warning(ctx.Tr("actions.runners.regist_runner_failed")) + ctx.Redirect(redirectTo) + return + } + ctx.Flash.Success(ctx.Tr("actions.runners.regist_runner_success")) + ctx.Redirect(redirectTo) +} + // RunnerDeletePost response for deleting a runner func RunnerDeletePost(ctx *context.Context, runnerID int64, successRedirectTo, failedRedirectTo string, diff --git a/routers/web/web.go b/routers/web/web.go index 50db645b80..f9b2985566 100644 --- a/routers/web/web.go +++ b/routers/web/web.go @@ -461,6 +461,15 @@ func registerRoutes(m *web.Router) { }) } + addSettingsRunnersRegRoutes := func() { + m.Group("/runners", func() { + m.Get("", repo_setting.Runners) + m.Combo("/{runnerid}").Get(repo_setting.RunnersEdit). + Post(web.Bind(forms.EditRunnerForm{}), repo_setting.RunnersEditPost) + m.Post("/{runnerid}/delete", repo_setting.RunnerDeletePost) + m.Get("/regist_runner", repo_setting.RegisterARunner) + }) + } // FIXME: not all routes need go through same middleware. // Especially some AJAX requests, we can reduce middleware number to improve performance. @@ -662,6 +671,7 @@ func registerRoutes(m *web.Router) { m.Group("/actions", func() { m.Get("", user_setting.RedirectToDefaultSetting) addSettingsRunnersRoutes() + addSettingsRunnersRegRoutes() addSettingsSecretsRoutes() addSettingsVariablesRoutes() }, actions.MustEnableActions) @@ -826,6 +836,7 @@ func registerRoutes(m *web.Router) { m.Group("/actions", func() { m.Get("", admin.RedirectToDefaultSetting) addSettingsRunnersRoutes() + addSettingsRunnersRegRoutes() addSettingsVariablesRoutes() }) }, adminReq, ctxDataSet("EnableOAuth2", setting.OAuth2.Enabled, "EnablePackages", setting.Packages.Enabled)) @@ -969,6 +980,7 @@ func registerRoutes(m *web.Router) { m.Group("/actions", func() { m.Get("", org_setting.RedirectToDefaultSetting) addSettingsRunnersRoutes() + addSettingsRunnersRegRoutes() addSettingsSecretsRoutes() addSettingsVariablesRoutes() }, actions.MustEnableActions) @@ -1148,6 +1160,7 @@ func registerRoutes(m *web.Router) { m.Group("/actions", func() { m.Get("", repo_setting.RedirectToDefaultSetting) addSettingsRunnersRoutes() + addSettingsRunnersRegRoutes() addSettingsSecretsRoutes() addSettingsVariablesRoutes() }, actions.MustEnableActions) diff --git a/services/runner/runner.go b/services/runner/runner.go index c846c6eb18..e9d9bc18d1 100644 --- a/services/runner/runner.go +++ b/services/runner/runner.go @@ -21,7 +21,7 @@ func RegistGlobalRunner(ctx context.Context) error { } runnerCount := setting.Runner.Count for i := 0; i < runnerCount; i++ { - err := RegistRunner(&ctx, actionRunnerToken.Token) + err := RegistRunner(ctx, actionRunnerToken.Token) if err != nil { return fmt.Errorf("注册Runner失败:%v", err) } @@ -29,12 +29,13 @@ func RegistGlobalRunner(ctx context.Context) error { return nil } -func RegistRunner(ctx *context.Context, token string) error { +func RegistRunner(ctx context.Context, token string) error { log.Info("开始注册Runner...") - cli, err := docker_module.CreateDockerClient(ctx) + cli, err := docker_module.CreateDockerClient(&ctx) if err != nil { - return err + return fmt.Errorf("Docker client创建失败:%v", err) } + log.Info("[RegistRunner]Docker client创建成功") defer cli.Close() //拉取act_runner镜像 dockerHost, err := docker_module.GetDockerSocketPath() diff --git a/templates/shared/actions/runner_list.tmpl b/templates/shared/actions/runner_list.tmpl index 104d0debda..b722a35b37 100644 --- a/templates/shared/actions/runner_list.tmpl +++ b/templates/shared/actions/runner_list.tmpl @@ -26,6 +26,9 @@
{{ctx.Locale.Tr "actions.runners.reset_registration_token"}}
+
+ {{ctx.Locale.Tr "actions.runners.regist_runner"}} +