diff --git a/app/controllers/api/v1/projects/actions/runs_controller.rb b/app/controllers/api/v1/projects/actions/runs_controller.rb index 3e9e2024c..474ab8d91 100644 --- a/app/controllers/api/v1/projects/actions/runs_controller.rb +++ b/app/controllers/api/v1/projects/actions/runs_controller.rb @@ -58,4 +58,15 @@ class Api::V1::Projects::Actions::RunsController < Api::V1::Projects::Actions::B redirect_to file_path end + def cancel + return render_error("请输入正确的流水线记录ID!") if params[:run_id].blank? + http = Gitea::Api::Hat::Http.new($gitea_hat_client.config) + gitea_result = http.post("/repos/#{@project&.owner&.login}/#{@project&.identifier}/actions/runs/#{params[:run_id]}/cancel") rescue nil + if gitea_result + render_ok + else + render_error("停止流水线任务失败") + end + end + end \ No newline at end of file diff --git a/config/routes/api.rb b/config/routes/api.rb index 0e320d8d1..3d694b291 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -193,6 +193,7 @@ defaults format: :json do post '/jobs/:job', to: 'runs#job_show' post '/rerun', to: 'runs#rerun' post '/jobs/:job/rerun', to: 'runs#job_rerun' + post '/jobs/:job/cancel', to: 'runs#cancel' get '/jobs/:job/logs', to: 'runs#job_logs' end end