mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Add workflow_run api + webhook (#33964)
Implements - https://docs.github.com/en/rest/actions/workflow-jobs?apiVersion=2022-11-28#list-jobs-for-a-workflow-run--code-samples - https://docs.github.com/en/rest/actions/workflow-jobs?apiVersion=2022-11-28#get-a-job-for-a-workflow-run--code-samples - https://docs.github.com/en/rest/actions/workflow-runs?apiVersion=2022-11-28#list-workflow-runs-for-a-repository - https://docs.github.com/en/rest/actions/workflow-runs?apiVersion=2022-11-28#get-a-workflow-run - `/actions/runs` for global + user + org (Gitea only) - `/actions/jobs` for global + user + org + repository (Gitea only) - workflow_run webhook + action trigger - limitations - workflow id is assigned to a string, this may result into problems in strongly typed clients Fixes - workflow_job webhook url to no longer contain the `runs/<run>` part to align with api - workflow instance does now use it's name inside the file instead of filename if set Refactoring - Moved a lot of logic from workflows/workflow_job into a shared module used by both webhook and api TODO - [x] Verify Keda Compatibility - [x] Edit Webhook API bug is resolved Closes https://github.com/go-gitea/gitea/issues/23670 Closes https://github.com/go-gitea/gitea/issues/23796 Closes https://github.com/go-gitea/gitea/issues/24898 Replaces https://github.com/go-gitea/gitea/pull/28047 and is much more complete --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
		| @@ -942,6 +942,8 @@ func Routes() *web.Router { | ||||
| 				m.Get("/{runner_id}", reqToken(), reqChecker, act.GetRunner) | ||||
| 				m.Delete("/{runner_id}", reqToken(), reqChecker, act.DeleteRunner) | ||||
| 			}) | ||||
| 			m.Get("/runs", reqToken(), reqChecker, act.ListWorkflowRuns) | ||||
| 			m.Get("/jobs", reqToken(), reqChecker, act.ListWorkflowJobs) | ||||
| 		}) | ||||
| 	} | ||||
|  | ||||
| @@ -1078,6 +1080,9 @@ func Routes() *web.Router { | ||||
| 					m.Get("/{runner_id}", reqToken(), user.GetRunner) | ||||
| 					m.Delete("/{runner_id}", reqToken(), user.DeleteRunner) | ||||
| 				}) | ||||
|  | ||||
| 				m.Get("/runs", reqToken(), user.ListWorkflowRuns) | ||||
| 				m.Get("/jobs", reqToken(), user.ListWorkflowJobs) | ||||
| 			}) | ||||
|  | ||||
| 			m.Get("/followers", user.ListMyFollowers) | ||||
| @@ -1202,6 +1207,7 @@ func Routes() *web.Router { | ||||
| 				}, context.ReferencesGitRepo(), reqToken(), reqRepoReader(unit.TypeActions)) | ||||
|  | ||||
| 				m.Group("/actions/jobs", func() { | ||||
| 					m.Get("/{job_id}", repo.GetWorkflowJob) | ||||
| 					m.Get("/{job_id}/logs", repo.DownloadActionsRunJobLogs) | ||||
| 				}, reqToken(), reqRepoReader(unit.TypeActions)) | ||||
|  | ||||
| @@ -1280,9 +1286,13 @@ func Routes() *web.Router { | ||||
| 				}, reqToken(), reqAdmin()) | ||||
| 				m.Group("/actions", func() { | ||||
| 					m.Get("/tasks", repo.ListActionTasks) | ||||
| 					m.Group("/runs/{run}", func() { | ||||
| 						m.Get("/artifacts", repo.GetArtifactsOfRun) | ||||
| 						m.Delete("", reqToken(), reqRepoWriter(unit.TypeActions), repo.DeleteActionRun) | ||||
| 					m.Group("/runs", func() { | ||||
| 						m.Group("/{run}", func() { | ||||
| 							m.Get("", repo.GetWorkflowRun) | ||||
| 							m.Delete("", reqToken(), reqRepoWriter(unit.TypeActions), repo.DeleteActionRun) | ||||
| 							m.Get("/jobs", repo.ListWorkflowRunJobs) | ||||
| 							m.Get("/artifacts", repo.GetArtifactsOfRun) | ||||
| 						}) | ||||
| 					}) | ||||
| 					m.Get("/artifacts", repo.GetArtifacts) | ||||
| 					m.Group("/artifacts/{artifact_id}", func() { | ||||
| @@ -1734,11 +1744,15 @@ func Routes() *web.Router { | ||||
| 					Patch(bind(api.EditHookOption{}), admin.EditHook). | ||||
| 					Delete(admin.DeleteHook) | ||||
| 			}) | ||||
| 			m.Group("/actions/runners", func() { | ||||
| 				m.Get("", admin.ListRunners) | ||||
| 				m.Post("/registration-token", admin.CreateRegistrationToken) | ||||
| 				m.Get("/{runner_id}", admin.GetRunner) | ||||
| 				m.Delete("/{runner_id}", admin.DeleteRunner) | ||||
| 			m.Group("/actions", func() { | ||||
| 				m.Group("/runners", func() { | ||||
| 					m.Get("", admin.ListRunners) | ||||
| 					m.Post("/registration-token", admin.CreateRegistrationToken) | ||||
| 					m.Get("/{runner_id}", admin.GetRunner) | ||||
| 					m.Delete("/{runner_id}", admin.DeleteRunner) | ||||
| 				}) | ||||
| 				m.Get("/runs", admin.ListWorkflowRuns) | ||||
| 				m.Get("/jobs", admin.ListWorkflowJobs) | ||||
| 			}) | ||||
| 			m.Group("/runners", func() { | ||||
| 				m.Get("/registration-token", admin.GetRegistrationToken) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user