mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 05:18:25 +00:00 
			
		
		
		
	Actions Runner rest api (#33873)
Implements runner apis based on https://docs.github.com/en/rest/actions/self-hosted-runners?apiVersion=2022-11-28#list-self-hosted-runners-for-an-organization - Add Post endpoints for registration-token, google/go-github revealed this as problem - We should deprecate Get Endpoints, leaving them for compatibility - Get endpoint of admin has api path /admin/runners/registration-token that feels wrong, /admin/actions/runners/registration-token seems more consistent with user/org/repo api - Get Runner Api - List Runner Api - Delete Runner Api - Tests admin / user / org / repo level endpoints Related to #33750 (implements point 1 and 2) Via needs discovered in #32461, this runner api is needed to allow cleanup of runners that are deallocated without user interaction. --------- Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
		@@ -14,6 +14,7 @@ import (
 | 
			
		||||
	"code.gitea.io/gitea/models/shared/types"
 | 
			
		||||
	user_model "code.gitea.io/gitea/models/user"
 | 
			
		||||
	"code.gitea.io/gitea/modules/optional"
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
	"code.gitea.io/gitea/modules/timeutil"
 | 
			
		||||
	"code.gitea.io/gitea/modules/translation"
 | 
			
		||||
	"code.gitea.io/gitea/modules/util"
 | 
			
		||||
@@ -123,8 +124,15 @@ func (r *ActionRunner) IsOnline() bool {
 | 
			
		||||
	return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Editable checks if the runner is editable by the user
 | 
			
		||||
func (r *ActionRunner) Editable(ownerID, repoID int64) bool {
 | 
			
		||||
// EditableInContext checks if the runner is editable by the "context" owner/repo
 | 
			
		||||
// ownerID == 0 and repoID == 0 means "admin" context, any runner including global runners could be edited
 | 
			
		||||
// ownerID == 0 and repoID != 0 means "repo" context, any runner belonging to the given repo could be edited
 | 
			
		||||
// ownerID != 0 and repoID == 0 means "owner(org/user)" context, any runner belonging to the given user/org could be edited
 | 
			
		||||
// ownerID != 0 and repoID != 0 means "owner" OR "repo" context, legacy behavior, but we should forbid using it
 | 
			
		||||
func (r *ActionRunner) EditableInContext(ownerID, repoID int64) bool {
 | 
			
		||||
	if ownerID != 0 && repoID != 0 {
 | 
			
		||||
		setting.PanicInDevOrTesting("ownerID and repoID should not be both set")
 | 
			
		||||
	}
 | 
			
		||||
	if ownerID == 0 && repoID == 0 {
 | 
			
		||||
		return true
 | 
			
		||||
	}
 | 
			
		||||
@@ -168,6 +176,12 @@ func init() {
 | 
			
		||||
	db.RegisterModel(&ActionRunner{})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// FindRunnerOptions
 | 
			
		||||
// ownerID == 0 and repoID == 0 means any runner including global runners
 | 
			
		||||
// repoID != 0 and WithAvailable == false means any runner for the given repo
 | 
			
		||||
// repoID != 0 and WithAvailable == true means any runner for the given repo, parent user/org, and global runners
 | 
			
		||||
// ownerID != 0 and repoID == 0 and WithAvailable == false means any runner for the given user/org
 | 
			
		||||
// ownerID != 0 and repoID == 0 and WithAvailable == true means any runner for the given user/org and global runners
 | 
			
		||||
type FindRunnerOptions struct {
 | 
			
		||||
	db.ListOptions
 | 
			
		||||
	IDs           []int64
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user