@@ -49,17 +49,27 @@ const (
4949// handleFailedJobLogs gets logs for all failed jobs in a workflow run
5050func handleFailedJobLogs (ctx context.Context , client * github.Client , owner , repo string , runID int64 , returnContent bool , tailLines int , contentWindowSize int ) (* mcp.CallToolResult , any , error ) {
5151 // First, get all jobs for the workflow run
52- jobs , resp , err := client .Actions .ListWorkflowJobs (ctx , owner , repo , runID , & github.ListWorkflowJobsOptions {
53- Filter : "latest" ,
54- })
55- if err != nil {
56- return ghErrors .NewGitHubAPIErrorResponse (ctx , "failed to list workflow jobs" , resp , err ), nil , nil
52+ opts := & github.ListWorkflowJobsOptions {
53+ Filter : "latest" ,
54+ ListOptions : github.ListOptions {PerPage : 100 },
55+ }
56+ var allJobs []* github.WorkflowJob
57+ for {
58+ jobs , resp , err := client .Actions .ListWorkflowJobs (ctx , owner , repo , runID , opts )
59+ if err != nil {
60+ return ghErrors .NewGitHubAPIErrorResponse (ctx , "failed to list workflow jobs" , resp , err ), nil , nil
61+ }
62+ _ = resp .Body .Close ()
63+ allJobs = append (allJobs , jobs .Jobs ... )
64+ if resp .NextPage == 0 {
65+ break
66+ }
67+ opts .Page = resp .NextPage
5768 }
58- defer func () { _ = resp .Body .Close () }()
5969
6070 // Filter for failed jobs
6171 var failedJobs []* github.WorkflowJob
62- for _ , job := range jobs . Jobs {
72+ for _ , job := range allJobs {
6373 if job .GetConclusion () == "failure" {
6474 failedJobs = append (failedJobs , job )
6575 }
@@ -69,7 +79,7 @@ func handleFailedJobLogs(ctx context.Context, client *github.Client, owner, repo
6979 result := map [string ]any {
7080 "message" : "No failed jobs found in this workflow run" ,
7181 "run_id" : runID ,
72- "total_jobs" : len (jobs . Jobs ),
82+ "total_jobs" : len (allJobs ),
7383 "failed_jobs" : 0 ,
7484 }
7585 r , _ := json .Marshal (result )
@@ -97,7 +107,7 @@ func handleFailedJobLogs(ctx context.Context, client *github.Client, owner, repo
97107 result := map [string ]any {
98108 "message" : fmt .Sprintf ("Retrieved logs for %d failed jobs" , len (failedJobs )),
99109 "run_id" : runID ,
100- "total_jobs" : len (jobs . Jobs ),
110+ "total_jobs" : len (allJobs ),
101111 "failed_jobs" : len (failedJobs ),
102112 "logs" : logResults ,
103113 "return_format" : map [string ]bool {"content" : returnContent , "urls" : ! returnContent },
0 commit comments