添加从页面注册runner功能

This commit is contained in:
vecmatex
2025-05-14 15:35:15 +08:00
repo.diff.parent 1150dfd408
repo.diff.commit f8a8af4ec6
repo.diff.stats_desc%!(EXTRA int=7, int=55, int=4)

repo.diff.view_file

@@ -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

repo.diff.view_file

@@ -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=所有工作流

repo.diff.view_file

@@ -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)

repo.diff.view_file

@@ -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,

repo.diff.view_file

@@ -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)

repo.diff.view_file

@@ -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()

repo.diff.view_file

@@ -26,6 +26,9 @@
<div class="item">
<a href="{{$.Link}}/reset_registration_token">{{ctx.Locale.Tr "actions.runners.reset_registration_token"}}</a>
</div>
<div class="item">
<a href="{{$.Link}}/regist_runner">{{ctx.Locale.Tr "actions.runners.regist_runner"}}</a>
</div>
</div>
</div>