Warn when permissions not set for PR comment

This commit is contained in:
daz 2024-01-01 17:05:35 -07:00
parent d16a3f4093
commit a4107da76d
No known key found for this signature in database

View file

@ -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,9 +31,6 @@ export async function generateJobSummary(buildResults: BuildResult[], cacheListe
} }
async function addPRComment(jobSummary: string): Promise<void> { async function addPRComment(jobSummary: string): Promise<void> {
try {
const github_token = params.getGithubToken()
const context = github.context const context = github.context
if (context.payload.pull_request == null) { if (context.payload.pull_request == null) {
core.info('No pull_request trigger: not adding PR comment') core.info('No pull_request trigger: not adding PR comment')
@ -47,16 +45,33 @@ async function addPRComment(jobSummary: string): Promise<void> {
${jobSummary}` ${jobSummary}`
const github_token = params.getGithubToken()
const octokit = github.getOctokit(github_token) 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) {