diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..adec0c0 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "monthly" diff --git a/.github/workflows/format-crash-report-in-issue-body.yml b/.github/workflows/format-crash-report-in-issue-body.yml index 0ff6cf3..50e3d17 100644 --- a/.github/workflows/format-crash-report-in-issue-body.yml +++ b/.github/workflows/format-crash-report-in-issue-body.yml @@ -4,12 +4,15 @@ on: issues: types: [opened] +permissions: + issues: write + jobs: format-crash-report: runs-on: ubuntu-latest steps: - name: Format crash report - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: script: | const issueNumber = context.issue.number @@ -23,7 +26,7 @@ jobs: // Check if issue contains code block if (issueBody.includes('```')) { - console.log('Issue body seems to contain code block; skipping formatting') + core.info('Issue body seems to contain code block; skipping formatting') return } @@ -32,9 +35,9 @@ jobs: const newIssueBody = issueBody.replace(crashReportPattern, '\n```\n$&\n```\n') if (newIssueBody === issueBody) { - console.log('Did not find crash report in issue body') + core.info('Did not find crash report in issue body') } else { - console.log('Found crash report in issue body, formatting it') + core.notice('Found crash report in issue body, formatting it') github.rest.issues.update({ owner: owner, repo: repo, diff --git a/.github/workflows/minecraft-crash-reported-upstream-check.yml b/.github/workflows/minecraft-crash-reported-upstream-check.yml index 6d23448..5f4470e 100644 --- a/.github/workflows/minecraft-crash-reported-upstream-check.yml +++ b/.github/workflows/minecraft-crash-reported-upstream-check.yml @@ -3,6 +3,9 @@ on: issue_comment: types: [created, edited] +permissions: + issues: write + jobs: check-reported-upstream: runs-on: ubuntu-latest @@ -11,7 +14,7 @@ jobs: # Ignore pull request comments, see # https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows#issue_comment if: ${{ !github.event.issue.pull_request }} - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: script: | // See documentation for payload properties @@ -21,7 +24,7 @@ jobs: const sender = context.payload.sender.login if (issue.user.login !== sender) { - console.log('Ignoring comment by user other than author') + core.info('Ignoring comment by user other than author') return } @@ -29,11 +32,11 @@ jobs: const issueLabels = issue.labels.map(label => label.name) if (issueLabels.includes(reportedUpstreamLabel)) { - console.log('Ignoring issue because it already has upstream label') + core.info('Ignoring issue because it already has upstream label') return } if (!issueLabels.includes('Minecraft')) { - console.log('Ignoring issue because it is not labeled as Minecraft') + core.info('Ignoring issue because it is not labeled as Minecraft') return } @@ -44,10 +47,10 @@ jobs: const matchedMojiraIssueKey = /(?= 300) { - throw new Error(`GET request to ${url} failed with ${status} '${result.statusText}': ${data}`) + throw new Error(`GET request to ${url} failed with ${status} '${response.statusText}': ${data}`) } return data } @@ -58,26 +53,26 @@ jobs: const foundModdedStrings = moddedStrings.filter(s => issueBody.includes(s)) if (foundModdedStrings.length === 0) { - console.log('Did not find modded string in issue body, searching attachments') + core.info('Did not find modded string in issue body, searching attachments') // Try searching in attachments // There is currently no API so try to find URL then get attachment content, see https://github.community/t/get-files-attached-in-issue/117443 const attachmentPattern = new RegExp(`https://github\\.com/${owner}/${repo}/files/\\d+/[a-zA-Z0-9_\\-.]+`, 'g') const attachmentUrls = Array.from(issueBody.matchAll(attachmentPattern), m => m[0]) - console.log('Found attachment URLs', attachmentUrls) + core.info(`Found attachment URLs: ${attachmentUrls}`) for (const url of attachmentUrls) { let attachment = undefined try { attachment = await httpGet(url) } catch (e) { // Only log message because complete error is rather verbose - console.log('Failed getting attachment for ' + url, e.message) + core.warning(`Failed getting attachment for ${url}: ${e.message}`) continue } if (!isMinecraftIssue) { isMinecraftIssue = minecraftRegex.test(attachment) if (isMinecraftIssue) { - console.log('Found Minecraft string in attachment') + core.info('Found Minecraft string in attachment') } } @@ -92,14 +87,15 @@ jobs: let isCrashFromModdedMinecraft = foundModdedStrings.length > 0 if (isCrashFromModdedMinecraft) { - console.log('Found modded strings', foundModdedStrings) + core.notice(`Found modded strings: ${foundModdedStrings}`) } else { - console.log('Did not find modded strings') + core.info('Did not find modded strings') } isMinecraftIssue = isMinecraftIssue || isCrashFromModdedMinecraft - console.log('Is Minecraft issue: ' + isMinecraftIssue) if (isMinecraftIssue) { + core.notice('Detected issue to be about Minecraft') + let commentBody if (isCrashFromModdedMinecraft) { // Don't tell user to report modded crashes on Mojang's bug tracker; they will most likely be considered Invalid