mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-03 21:08:25 +00:00 
			
		
		
		
	Move secrets and runners settings to actions settings (#24200)
This PR moves the secrets and runners settings to actions settings on
all settings(repo,org,user,admin) levels.
After this PR, if
[ENABLED](5e7543fcf4/custom/conf/app.example.ini (L2604))
inside `app.ini` under `[actions]` is set to `false`, the "Actions" tab
(including runners management and secrets management) will not be shown.
After, the settings under actions settings for each level:
1. Admin Level
"Runners Management"
<img width="1437" alt="Screen Shot 2023-04-26 at 14 34 20"
src="https://user-images.githubusercontent.com/17645053/234489731-15822d21-38e1-4560-8bbe-69f122376abc.png">
2. User Level
"Secrets Management"
<img width="1427" alt="Screen Shot 2023-04-26 at 14 34 30"
src="https://user-images.githubusercontent.com/17645053/234489795-68c9c0cb-24f8-4f09-95c6-458ab914c313.png">
3. Repo and Organization Levels
"Runners Management" and "Secrets Management" 
   Org:
<img width="1437" alt="Screen Shot 2023-04-26 at 14 35 07"
src="https://user-images.githubusercontent.com/17645053/234489996-f3af5ebb-d354-46ca-9087-a0b586845281.png">
<img width="1433" alt="Screen Shot 2023-04-26 at 14 35 14"
src="https://user-images.githubusercontent.com/17645053/234490004-3abf8fed-81fd-4ce2-837a-935dade1793d.png">
    Repo:
<img width="1419" alt="Screen Shot 2023-04-26 at 14 34 50"
src="https://user-images.githubusercontent.com/17645053/234489904-80c11038-4b58-462c-9d0b-8b7cf70bc2b3.png">
    
<img width="1430" alt="Screen Shot 2023-04-26 at 14 34 57"
src="https://user-images.githubusercontent.com/17645053/234489918-4e8d1fe2-9bcd-4d8a-96c1-238a8088d92e.png">
It also finished these tasks :
- [x] rename routers function "runners" to "actions", and refactor
related file names
- [x] check and modify part of the runners related functions to match
their name
- [x] Fix backend check caused by fmt check
---------
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
			
			
This commit is contained in:
		@@ -30,8 +30,10 @@ import (
 | 
			
		||||
	"code.gitea.io/gitea/routers/web/healthcheck"
 | 
			
		||||
	"code.gitea.io/gitea/routers/web/misc"
 | 
			
		||||
	"code.gitea.io/gitea/routers/web/org"
 | 
			
		||||
	org_setting "code.gitea.io/gitea/routers/web/org/setting"
 | 
			
		||||
	"code.gitea.io/gitea/routers/web/repo"
 | 
			
		||||
	"code.gitea.io/gitea/routers/web/repo/actions"
 | 
			
		||||
	repo_setting "code.gitea.io/gitea/routers/web/repo/setting"
 | 
			
		||||
	"code.gitea.io/gitea/routers/web/user"
 | 
			
		||||
	user_setting "code.gitea.io/gitea/routers/web/user/setting"
 | 
			
		||||
	"code.gitea.io/gitea/routers/web/user/setting/security"
 | 
			
		||||
@@ -93,6 +95,14 @@ func buildAuthGroup() *auth_service.Group {
 | 
			
		||||
	return group
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func ctxDataSet(args ...any) func(ctx *context.Context) {
 | 
			
		||||
	return func(ctx *context.Context) {
 | 
			
		||||
		for i := 0; i < len(args); i += 2 {
 | 
			
		||||
			ctx.Data[args[i].(string)] = args[i+1]
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Routes returns all web routes
 | 
			
		||||
func Routes(ctx gocontext.Context) *web.Route {
 | 
			
		||||
	routes := web.NewRoute()
 | 
			
		||||
@@ -282,6 +292,24 @@ func registerRoutes(m *web.Route) {
 | 
			
		||||
		m.Post("/packagist/{id}", web.Bind(forms.NewPackagistHookForm{}), repo.PackagistHooksEditPost)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	addSettingsSecretsRoutes := func() {
 | 
			
		||||
		m.Group("/secrets", func() {
 | 
			
		||||
			m.Get("", repo_setting.Secrets)
 | 
			
		||||
			m.Post("", web.Bind(forms.AddSecretForm{}), repo_setting.SecretsPost)
 | 
			
		||||
			m.Post("/delete", repo_setting.SecretsDelete)
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	addSettingsRunnersRoutes := 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("/reset_registration_token", repo_setting.ResetRunnerRegistrationToken)
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// FIXME: not all routes need go through same middleware.
 | 
			
		||||
	// Especially some AJAX requests, we can reduce middleware number to improve performance.
 | 
			
		||||
	// Routers.
 | 
			
		||||
@@ -441,11 +469,12 @@ func registerRoutes(m *web.Route) {
 | 
			
		||||
			})
 | 
			
		||||
			m.Post("/chef/regenerate_keypair", user_setting.RegenerateChefKeyPair)
 | 
			
		||||
		}, packagesEnabled)
 | 
			
		||||
		m.Group("/secrets", func() {
 | 
			
		||||
			m.Get("", user_setting.Secrets)
 | 
			
		||||
			m.Post("", web.Bind(forms.AddSecretForm{}), user_setting.SecretsPost)
 | 
			
		||||
			m.Post("/delete", user_setting.SecretsDelete)
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
		m.Group("/actions", func() {
 | 
			
		||||
			m.Get("", user_setting.RedirectToDefaultSetting)
 | 
			
		||||
			addSettingsSecretsRoutes()
 | 
			
		||||
		}, actions.MustEnableActions)
 | 
			
		||||
 | 
			
		||||
		m.Get("/organization", user_setting.Organization)
 | 
			
		||||
		m.Get("/repos", user_setting.Repos)
 | 
			
		||||
		m.Post("/repos/unadopted", user_setting.AdoptOrDeleteRepository)
 | 
			
		||||
@@ -459,14 +488,8 @@ func registerRoutes(m *web.Route) {
 | 
			
		||||
				m.Post("/replay/{uuid}", repo.ReplayWebhook)
 | 
			
		||||
			})
 | 
			
		||||
			addWebhookEditRoutes()
 | 
			
		||||
		}, webhooksEnabled, func(ctx *context.Context) {
 | 
			
		||||
			ctx.Data["IsUserWebhook"] = true
 | 
			
		||||
		})
 | 
			
		||||
	}, reqSignIn, func(ctx *context.Context) {
 | 
			
		||||
		ctx.Data["PageIsUserSettings"] = true
 | 
			
		||||
		ctx.Data["AllThemes"] = setting.UI.Themes
 | 
			
		||||
		ctx.Data["EnablePackages"] = setting.Packages.Enabled
 | 
			
		||||
	})
 | 
			
		||||
		}, webhooksEnabled)
 | 
			
		||||
	}, reqSignIn, ctxDataSet("PageIsUserSettings", true, "AllThemes", setting.UI.Themes, "EnablePackages", setting.Packages.Enabled))
 | 
			
		||||
 | 
			
		||||
	m.Group("/user", func() {
 | 
			
		||||
		// r.Get("/feeds", binding.Bind(auth.FeedsForm{}), user.Feeds)
 | 
			
		||||
@@ -591,16 +614,11 @@ func registerRoutes(m *web.Route) {
 | 
			
		||||
			}
 | 
			
		||||
		})
 | 
			
		||||
 | 
			
		||||
		m.Group("/runners", func() {
 | 
			
		||||
			m.Get("", admin.Runners)
 | 
			
		||||
			m.Get("/reset_registration_token", admin.ResetRunnerRegistrationToken)
 | 
			
		||||
			m.Combo("/{runnerid}").Get(admin.EditRunner).Post(web.Bind(forms.EditRunnerForm{}), admin.EditRunnerPost)
 | 
			
		||||
			m.Post("/{runnerid}/delete", admin.DeleteRunnerPost)
 | 
			
		||||
		}, actions.MustEnableActions)
 | 
			
		||||
	}, func(ctx *context.Context) {
 | 
			
		||||
		ctx.Data["EnableOAuth2"] = setting.OAuth2.Enable
 | 
			
		||||
		ctx.Data["EnablePackages"] = setting.Packages.Enabled
 | 
			
		||||
	}, adminReq)
 | 
			
		||||
		m.Group("/actions", func() {
 | 
			
		||||
			m.Get("", admin.RedirectToDefaultSetting)
 | 
			
		||||
			addSettingsRunnersRoutes()
 | 
			
		||||
		})
 | 
			
		||||
	}, adminReq, ctxDataSet("EnableOAuth2", setting.OAuth2.Enable, "EnablePackages", setting.Packages.Enabled))
 | 
			
		||||
	// ***** END: Admin *****
 | 
			
		||||
 | 
			
		||||
	m.Group("", func() {
 | 
			
		||||
@@ -724,9 +742,7 @@ func registerRoutes(m *web.Route) {
 | 
			
		||||
						m.Post("/replay/{uuid}", repo.ReplayWebhook)
 | 
			
		||||
					})
 | 
			
		||||
					addWebhookEditRoutes()
 | 
			
		||||
				}, webhooksEnabled, func(ctx *context.Context) {
 | 
			
		||||
					ctx.Data["IsOrganizationWebhook"] = true
 | 
			
		||||
				})
 | 
			
		||||
				}, webhooksEnabled)
 | 
			
		||||
 | 
			
		||||
				m.Group("/labels", func() {
 | 
			
		||||
					m.Get("", org.RetrieveLabels, org.Labels)
 | 
			
		||||
@@ -736,20 +752,12 @@ func registerRoutes(m *web.Route) {
 | 
			
		||||
					m.Post("/initialize", web.Bind(forms.InitializeLabelsForm{}), org.InitializeLabels)
 | 
			
		||||
				})
 | 
			
		||||
 | 
			
		||||
				m.Group("/runners", func() {
 | 
			
		||||
					m.Get("", org.Runners)
 | 
			
		||||
					m.Combo("/{runnerid}").Get(org.RunnersEdit).
 | 
			
		||||
						Post(web.Bind(forms.EditRunnerForm{}), org.RunnersEditPost)
 | 
			
		||||
					m.Post("/{runnerid}/delete", org.RunnerDeletePost)
 | 
			
		||||
					m.Get("/reset_registration_token", org.ResetRunnerRegistrationToken)
 | 
			
		||||
				m.Group("/actions", func() {
 | 
			
		||||
					m.Get("", org_setting.RedirectToDefaultSetting)
 | 
			
		||||
					addSettingsRunnersRoutes()
 | 
			
		||||
					addSettingsSecretsRoutes()
 | 
			
		||||
				}, actions.MustEnableActions)
 | 
			
		||||
 | 
			
		||||
				m.Group("/secrets", func() {
 | 
			
		||||
					m.Get("", org.Secrets)
 | 
			
		||||
					m.Post("", web.Bind(forms.AddSecretForm{}), org.SecretsPost)
 | 
			
		||||
					m.Post("/delete", org.SecretsDelete)
 | 
			
		||||
				})
 | 
			
		||||
 | 
			
		||||
				m.RouteMethods("/delete", "GET,POST", org.SettingsDelete)
 | 
			
		||||
 | 
			
		||||
				m.Group("/packages", func() {
 | 
			
		||||
@@ -770,10 +778,7 @@ func registerRoutes(m *web.Route) {
 | 
			
		||||
						m.Post("/rebuild", org.RebuildCargoIndex)
 | 
			
		||||
					})
 | 
			
		||||
				}, packagesEnabled)
 | 
			
		||||
			}, func(ctx *context.Context) {
 | 
			
		||||
				ctx.Data["EnableOAuth2"] = setting.OAuth2.Enable
 | 
			
		||||
				ctx.Data["EnablePackages"] = setting.Packages.Enabled
 | 
			
		||||
			})
 | 
			
		||||
			}, ctxDataSet("EnableOAuth2", setting.OAuth2.Enable, "EnablePackages", setting.Packages.Enabled, "PageIsOrgSettings", true))
 | 
			
		||||
		}, context.OrgAssignment(true, true))
 | 
			
		||||
	}, reqSignIn)
 | 
			
		||||
	// ***** END: Organization *****
 | 
			
		||||
@@ -907,9 +912,7 @@ func registerRoutes(m *web.Route) {
 | 
			
		||||
					m.Post("/replay/{uuid}", repo.ReplayWebhook)
 | 
			
		||||
				})
 | 
			
		||||
				addWebhookEditRoutes()
 | 
			
		||||
			}, webhooksEnabled, func(ctx *context.Context) {
 | 
			
		||||
				ctx.Data["IsRepositoryWebhook"] = true
 | 
			
		||||
			})
 | 
			
		||||
			}, webhooksEnabled)
 | 
			
		||||
 | 
			
		||||
			m.Group("/keys", func() {
 | 
			
		||||
				m.Combo("").Get(repo.DeployKeys).
 | 
			
		||||
@@ -917,12 +920,6 @@ func registerRoutes(m *web.Route) {
 | 
			
		||||
				m.Post("/delete", repo.DeleteDeployKey)
 | 
			
		||||
			})
 | 
			
		||||
 | 
			
		||||
			m.Group("/secrets", func() {
 | 
			
		||||
				m.Get("", repo.Secrets)
 | 
			
		||||
				m.Post("", web.Bind(forms.AddSecretForm{}), repo.SecretsPost)
 | 
			
		||||
				m.Post("/delete", repo.DeleteSecret)
 | 
			
		||||
			})
 | 
			
		||||
 | 
			
		||||
			m.Group("/lfs", func() {
 | 
			
		||||
				m.Get("/", repo.LFSFiles)
 | 
			
		||||
				m.Get("/show/{oid}", repo.LFSFileGet)
 | 
			
		||||
@@ -936,18 +933,12 @@ func registerRoutes(m *web.Route) {
 | 
			
		||||
					m.Post("/{lid}/unlock", repo.LFSUnlock)
 | 
			
		||||
				})
 | 
			
		||||
			})
 | 
			
		||||
 | 
			
		||||
			m.Group("/runners", func() {
 | 
			
		||||
				m.Get("", repo.Runners)
 | 
			
		||||
				m.Combo("/{runnerid}").Get(repo.RunnersEdit).
 | 
			
		||||
					Post(web.Bind(forms.EditRunnerForm{}), repo.RunnersEditPost)
 | 
			
		||||
				m.Post("/{runnerid}/delete", repo.RunnerDeletePost)
 | 
			
		||||
				m.Get("/reset_registration_token", repo.ResetRunnerRegistrationToken)
 | 
			
		||||
			m.Group("/actions", func() {
 | 
			
		||||
				m.Get("", repo_setting.RedirectToDefaultSetting)
 | 
			
		||||
				addSettingsRunnersRoutes()
 | 
			
		||||
				addSettingsSecretsRoutes()
 | 
			
		||||
			}, actions.MustEnableActions)
 | 
			
		||||
		}, func(ctx *context.Context) {
 | 
			
		||||
			ctx.Data["PageIsSettings"] = true
 | 
			
		||||
			ctx.Data["LFSStartServer"] = setting.LFS.StartServer
 | 
			
		||||
		})
 | 
			
		||||
		}, ctxDataSet("PageIsRepoSettings", true, "LFSStartServer", setting.LFS.StartServer))
 | 
			
		||||
	}, reqSignIn, context.RepoAssignment, context.UnitTypes(), reqRepoAdmin, context.RepoRef())
 | 
			
		||||
 | 
			
		||||
	m.Post("/{username}/{reponame}/action/{action}", reqSignIn, context.RepoAssignment, context.UnitTypes(), repo.Action)
 | 
			
		||||
@@ -1098,9 +1089,8 @@ func registerRoutes(m *web.Route) {
 | 
			
		||||
			m.Get("", repo.TagsList)
 | 
			
		||||
			m.Get(".rss", feedEnabled, repo.TagsListFeedRSS)
 | 
			
		||||
			m.Get(".atom", feedEnabled, repo.TagsListFeedAtom)
 | 
			
		||||
		}, func(ctx *context.Context) {
 | 
			
		||||
			ctx.Data["EnableFeed"] = setting.Other.EnableFeed
 | 
			
		||||
		}, repo.MustBeNotEmpty, reqRepoCodeReader, context.RepoRefByType(context.RepoRefTag, true))
 | 
			
		||||
		}, ctxDataSet("EnableFeed", setting.Other.EnableFeed),
 | 
			
		||||
			repo.MustBeNotEmpty, reqRepoCodeReader, context.RepoRefByType(context.RepoRefTag, true))
 | 
			
		||||
		m.Post("/tags/delete", repo.DeleteTag, reqSignIn,
 | 
			
		||||
			repo.MustBeNotEmpty, context.RepoMustNotBeArchived(), reqRepoCodeWriter, context.RepoRef())
 | 
			
		||||
	}, reqSignIn, context.RepoAssignment, context.UnitTypes())
 | 
			
		||||
@@ -1113,9 +1103,8 @@ func registerRoutes(m *web.Route) {
 | 
			
		||||
			m.Get("/latest", repo.LatestRelease)
 | 
			
		||||
			m.Get(".rss", feedEnabled, repo.ReleasesFeedRSS)
 | 
			
		||||
			m.Get(".atom", feedEnabled, repo.ReleasesFeedAtom)
 | 
			
		||||
		}, func(ctx *context.Context) {
 | 
			
		||||
			ctx.Data["EnableFeed"] = setting.Other.EnableFeed
 | 
			
		||||
		}, repo.MustBeNotEmpty, reqRepoReleaseReader, context.RepoRefByType(context.RepoRefTag, true))
 | 
			
		||||
		}, ctxDataSet("EnableFeed", setting.Other.EnableFeed),
 | 
			
		||||
			repo.MustBeNotEmpty, reqRepoReleaseReader, context.RepoRefByType(context.RepoRefTag, true))
 | 
			
		||||
		m.Get("/releases/attachments/{uuid}", repo.GetAttachment, repo.MustBeNotEmpty, reqRepoReleaseReader)
 | 
			
		||||
		m.Group("/releases", func() {
 | 
			
		||||
			m.Get("/new", repo.NewRelease)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user