Skip to content

Create Update Upstream PR #189

Create Update Upstream PR

Create Update Upstream PR #189

name: Create Update Upstream PR
on:
workflow_dispatch:
inputs:
commit_hash:
description: 'The commit hash to be referenced'
required: false
permissions: write-all
jobs:
check_upstream:
runs-on: ubuntu-latest
outputs:
pr_description: ${{ steps.check_result.outputs.pr_description }}
commit_message: ${{ steps.check_result.outputs.commit_message }}
latest_commit_hash: ${{ steps.latest_commit_hash.outputs.hash }}
steps:
- name: Checkout Git Repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Run check-upstream.sh
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
id: check_result
env:
commit_hash: ${{ inputs.commit_hash }}
with:
result-encoding: string
script: |
const { commit_hash } = process.env
const result = await exec.getExecOutput('bash ./scripts/check-upstream.sh ' + commit_hash);
const output = result.stdout;
core.setOutput('pr_description', output);
core.setOutput('commit_message', 'Updated Upstream (Folia)\n' + output);
- name: Store latest commit hash to output
id: latest_commit_hash
run: echo "hash=$(<paper-ref)" >> $GITHUB_OUTPUT
update_patches_and_open_pr:
runs-on: ubuntu-latest
needs: check_upstream
if: ${{ startsWith(needs.check_upstream.outputs.pr_description, 'Folia Changes:') }}
steps:
- name: Checkout Git Repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Set up JDK
uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0
with:
distribution: 'temurin'
java-version: '21'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0
with:
cache-read-only: false
- name: Configure Git User Details
run: git config --global user.email "[email protected]" && git config --global user.name "Github Actions"
- run: chmod +x ./gradlew
- name: Update paper-ref
run: echo -n ${{ needs.check_upstream.outputs.latest_commit_hash }} > paper-ref
- name: Apply Patches
id: apply_patches
continue-on-error: true
run: ./gradlew applyAllPatches --stacktrace
- name: Rebuild Patches
if: steps.apply_patches.outcome == 'success'
continue-on-error: true
run: |
./gradlew rebuildFoliaPatches
./gradlew rebuildAllServerPatches
- name: Build
id: build_jar
if: steps.apply_patches.outcome == 'success'
continue-on-error: true
run: ./gradlew createMojmapPaperclipJar --stacktrace
- name: Specify Labels
id: labels
if: always()
run: |
if [ "${{ steps.apply_patches.outcome }}" != "success" ]; then
echo "result=upstream,rebase-required" >> $GITHUB_OUTPUT
elif [ "${{ steps.build_jar.outcome }}" != "success" ]; then
echo "result=upstream,build-failure" >> $GITHUB_OUTPUT
else
echo "result=upstream" >> $GITHUB_OUTPUT
fi
- name: Create a Pull Request
uses: peter-evans/create-pull-request@dd2324fc52d5d43c699a5636bcf19fceaa70c284 # v7.0.7
if: always()
with:
title: Updated Upstream (Folia)
body: ${{ needs.check_upstream.outputs.pr_description }}
commit-message: ${{ needs.check_upstream.outputs.commit_message }}
branch: upstream
labels: ${{ steps.labels.outputs.result }}
draft: ${{ steps.apply_patches.outcome != 'success' && steps.build_jar.outcome != 'success' }}
- name: Upload jar
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
if: steps.build_jar.outcome == 'success'
continue-on-error: true
with:
name: Okocraft-Build-${{ github.run_number }}
path: ./okocraft-server/build/libs/okocraft-paperclip-*.jar