From 32dfe451dc7095237fa281e700391e5748b4dfc5 Mon Sep 17 00:00:00 2001 From: extremeheat Date: Sat, 23 Aug 2025 16:42:30 -0400 Subject: [PATCH] Add workflow to send artifacts back to minecraft-data (#51) * add a send script * update * fix marker --- .github/commands/bump.js | 17 +++++++++++++-- .github/commands/send.js | 24 ++++++++++++++++++++++ .github/workflows/build.yml | 14 +++++++++++++ .github/workflows/handle-mcdata-update.yml | 10 +++++++++ 4 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 .github/commands/send.js diff --git a/.github/commands/bump.js b/.github/commands/bump.js index a2a3b10..31ca036 100644 --- a/.github/commands/bump.js +++ b/.github/commands/bump.js @@ -6,6 +6,19 @@ const exec = (a, o) => { cp.execSync(a, { stdio: 'inherit', ...o }) } +const generateBody = (newVersion, issueNo, prNo) => ` +This automated PR sets up the relevant boilerplate for Minecraft version ${newVersion}. + +Links: +- Issue: ${issueNo ? `https://github.com/PrismarineJS/minecraft-data/issues/${issueNo}` : 'N/A'} +- PR: ${prNo ? `https://github.com/PrismarineJS/minecraft-data/pull/${prNo}` : 'N/A'} + +If the PR is passing, it will automatically send the generated artifacts to PrismarineJS/minecraft-data${prNo ? `#${prNo}` : ''}. + +If the PR is **not** passing: +* You can help contribute to this PR by opening a PR against this bump branch instead of main. +` + module.exports = async ([newVersion], helpers) => { try { bump(newVersion) @@ -17,8 +30,8 @@ module.exports = async ([newVersion], helpers) => { exec('git commit -m "Add version ' + newVersion + '"') exec('git push origin bump --force') const pr = await gh.createPullRequest( - 'Add version ' + newVersion, - 'This automated PR adds version ' + newVersion, + '🎈 Add version ' + newVersion, // special marker + generateBody(newVersion, process.env.MCDATA_ISSUE_NO, process.env.MCDATA_PULL_NO), 'bump', 'main' ) diff --git a/.github/commands/send.js b/.github/commands/send.js new file mode 100644 index 0000000..97aa08b --- /dev/null +++ b/.github/commands/send.js @@ -0,0 +1,24 @@ +const gh = require('gh-helpers')() + +module.exports = async ([mergedArtifactURL], helpers) => { + // Have minecraft-data handle this successful update + const dispatchPayload = { + owner: 'PrismarineJS', + repo: 'minecraft-data', + workflow: 'handle-mcpc-generator.yml', + branch: 'main', + inputs: { + versions: JSON.stringify(require('../../versions.json')), + mergedArtifactURL: mergedArtifactURL, + prNumber: process.env.PR_NUMBER + } + } + console.log('Sending workflow dispatch', dispatchPayload) + await gh.sendWorkflowDispatch(dispatchPayload) +} + +if (require.main === module) { + const merged = process.env.ARTIFACT_URL + console.log('Handling merged artifacts @', merged) + module.exports([merged], { reply: console.log }) +} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b4e2536..aa5860c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,6 +10,9 @@ on: permissions: pull-requests: write +env: + MARKER: '🎈' + jobs: define-versions: runs-on: ubuntu-latest @@ -92,8 +95,19 @@ jobs: merge-multiple: true - name: Upload artifact + id: uploadMerged uses: actions/upload-artifact@v4 with: name: merged-data path: artifacts/* if-no-files-found: error + + - name: Sending artifacts to minecraft-data + # Check if PR starts with marker + if: startsWith(github.event.pull_request.title, env.MARKER) + env: + ARTIFACT_URL: ${{ steps.uploadMerged.outputs.artifact-url }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PR_TITLE: ${{ github.event.pull_request.title }} + PR_NUMBER: ${{ github.event.pull_request.number }} + run: node .github/commands/send.js diff --git a/.github/workflows/handle-mcdata-update.yml b/.github/workflows/handle-mcdata-update.yml index 5585237..52cdbe1 100644 --- a/.github/workflows/handle-mcdata-update.yml +++ b/.github/workflows/handle-mcdata-update.yml @@ -6,6 +6,13 @@ on: description: 'What new version is like `1.21.6`' required: true default: '1.21.6' + pr_number: + description: 'What is the relevant minecraft-data PR URL?' + required: false + issue_number: + description: 'What is the relevant minecraft-data issue?' + required: false + jobs: update-mcdata: runs-on: ubuntu-latest @@ -16,4 +23,7 @@ jobs: - run: npm install # install gh-helpers - run: node .github/commands/bump.js ${{ github.event.inputs.version }} env: + MC_VERSION: ${{ github.event.inputs.version }} + MCDATA_PULL_NO: ${{ github.event.inputs.pr_number }} + MCDATA_ISSUE_NO: ${{ github.event.inputs.issue_number }} GITHUB_TOKEN: ${{ secrets.PAT_PASSWORD }}