mirror of
				https://github.com/gradle/gradle-build-action.git
				synced 2025-11-04 09:58:56 +08:00 
			
		
		
		
	Warn when permissions not set for PR comment
This commit is contained in:
		@@ -1,6 +1,7 @@
 | 
				
			|||||||
import * as core from '@actions/core'
 | 
					import * as core from '@actions/core'
 | 
				
			||||||
import * as github from '@actions/github'
 | 
					import * as github from '@actions/github'
 | 
				
			||||||
import {SUMMARY_ENV_VAR} from '@actions/core/lib/summary'
 | 
					import {SUMMARY_ENV_VAR} from '@actions/core/lib/summary'
 | 
				
			||||||
 | 
					import {RequestError} from '@octokit/request-error'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import * as params from './input-params'
 | 
					import * as params from './input-params'
 | 
				
			||||||
import {BuildResult} from './build-results'
 | 
					import {BuildResult} from './build-results'
 | 
				
			||||||
@@ -30,34 +31,48 @@ export async function generateJobSummary(buildResults: BuildResult[], cacheListe
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
async function addPRComment(jobSummary: string): Promise<void> {
 | 
					async function addPRComment(jobSummary: string): Promise<void> {
 | 
				
			||||||
    try {
 | 
					    const context = github.context
 | 
				
			||||||
        const github_token = params.getGithubToken()
 | 
					    if (context.payload.pull_request == null) {
 | 
				
			||||||
 | 
					        core.info('No pull_request trigger: not adding PR comment')
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const context = github.context
 | 
					    const pull_request_number = context.payload.pull_request.number
 | 
				
			||||||
        if (context.payload.pull_request == null) {
 | 
					    core.info(`Adding Job Summary as comment to PR #${pull_request_number}.`)
 | 
				
			||||||
            core.info('No pull_request trigger: not adding PR comment')
 | 
					 | 
				
			||||||
            return
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const pull_request_number = context.payload.pull_request.number
 | 
					    const prComment = `<h3>Job Summary for gradle-build-action</h3>
 | 
				
			||||||
        core.info(`Adding Job Summary as comment to PR #${pull_request_number}.`)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        const prComment = `<h3>Job Summary for gradle-build-action</h3>
 | 
					 | 
				
			||||||
<h5>${github.context.workflow} :: <em>${github.context.job}</em></h5>
 | 
					<h5>${github.context.workflow} :: <em>${github.context.job}</em></h5>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
${jobSummary}`
 | 
					${jobSummary}`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        const octokit = github.getOctokit(github_token)
 | 
					    const github_token = params.getGithubToken()
 | 
				
			||||||
 | 
					    const octokit = github.getOctokit(github_token)
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
        await octokit.rest.issues.createComment({
 | 
					        await octokit.rest.issues.createComment({
 | 
				
			||||||
            ...context.repo,
 | 
					            ...context.repo,
 | 
				
			||||||
            issue_number: pull_request_number,
 | 
					            issue_number: pull_request_number,
 | 
				
			||||||
            body: prComment
 | 
					            body: prComment
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
    } catch (error) {
 | 
					    } catch (error) {
 | 
				
			||||||
        core.warning(`Failed to generate PR comment: ${String(error)}`)
 | 
					        if (error instanceof RequestError) {
 | 
				
			||||||
 | 
					            core.warning(buildWarningMessage(error))
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            throw error
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function buildWarningMessage(error: RequestError): string {
 | 
				
			||||||
 | 
					    const mainWarning = `Failed to generate PR comment.\n${String(error)}`
 | 
				
			||||||
 | 
					    if (error.message === 'Resource not accessible by integration') {
 | 
				
			||||||
 | 
					        return `${mainWarning}
 | 
				
			||||||
 | 
					Please ensure that the 'pull-requests: write' permission is available for the workflow job.
 | 
				
			||||||
 | 
					Note that this permission is never available for a workflow triggered from a repository fork.
 | 
				
			||||||
 | 
					        `
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return mainWarning
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function renderSummaryTable(results: BuildResult[]): string {
 | 
					function renderSummaryTable(results: BuildResult[]): string {
 | 
				
			||||||
    if (results.length === 0) {
 | 
					    if (results.length === 0) {
 | 
				
			||||||
        return 'No Gradle build results detected.'
 | 
					        return 'No Gradle build results detected.'
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user