mirror of
https://github.com/gradle/gradle-build-action
synced 2024-11-23 18:12:15 +00:00
Warn when permissions not set for PR comment
This commit is contained in:
parent
d16a3f4093
commit
a4107da76d
1 changed files with 28 additions and 13 deletions
|
@ -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.'
|
||||||
|
|
Loading…
Reference in a new issue