Auto Snapshot Update #8
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Experimental workflow to automate updating to a new Minecraft snapshot. | |
name: Auto Snapshot Update | |
on: | |
workflow_dispatch: | |
inputs: | |
mc_version: | |
description: "Minecraft version to update to" | |
required: true | |
yarn_mappings: | |
description: "Yarn mappings version" | |
required: true | |
fabric_loader: | |
description: "Fabric Loader version" | |
required: true | |
fapi_version: | |
description: "Fabric API version" | |
required: true | |
cf_game_version: | |
description: "CurseForge GameVersion" | |
required: true | |
permissions: | |
# To push changes to the new snapshot branch. | |
contents: write | |
# To trigger the CI workflow. | |
actions: write | |
jobs: | |
update: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
# Include all branches in case the new snapshot branch already exists. | |
fetch-depth: 0 | |
- name: Set up Python 3.12 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- name: Set up Java 21 | |
uses: actions/setup-java@v4 | |
with: | |
java-version: "21" | |
distribution: "microsoft" | |
- name: Grant execute permission for gradlew | |
run: chmod +x gradlew | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@v4 | |
with: | |
build-scan-publish: true | |
build-scan-terms-of-use-url: "https://gradle.com/help/legal-terms-of-use" | |
build-scan-terms-of-use-agree: "yes" | |
- name: Create and checkout new snapshot branch | |
run: | | |
BRANCH_NAME="${{ github.event.inputs.mc_version }}" | |
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) | |
if [ "$CURRENT_BRANCH" = "$BRANCH_NAME" ]; then | |
echo "Already on branch $BRANCH_NAME. Skipping branch creation." | |
elif git show-ref --quiet refs/heads/$BRANCH_NAME; then | |
echo "Branch $BRANCH_NAME already exists but is not currently checked out. Failing the workflow." | |
exit 1 | |
else | |
git checkout -b $BRANCH_NAME | |
echo "Created and checked out new branch: $BRANCH_NAME" | |
fi | |
shell: bash | |
- name: Run migrateMappings task | |
run: | | |
./gradlew migrateMappings --mappings ${{ github.event.inputs.yarn_mappings }} | |
shell: bash | |
- name: Replace src/main/java with remapped files | |
run: | | |
rm -rf ./src/main/java | |
mv ./remappedSrc ./src/main/java | |
shell: bash | |
- name: Update version constants | |
run: | | |
python scripts/update_version_constants.py "${{ github.event.inputs.mc_version }}" "${{ github.event.inputs.yarn_mappings }}" "${{ github.event.inputs.fabric_loader }}" "${{ github.event.inputs.fapi_version }}" "${{ github.event.inputs.cf_game_version }}" | |
shell: bash | |
# To fix any style issues that the migration scripts might cause | |
- name: Run spotlessApply task | |
run: ./gradlew spotlessApply | |
- name: Commit and push changes | |
run: | | |
git config --global user.name "Wurst-Bot" | |
git config --global user.email "[email protected]" | |
git add . | |
git commit -m "[Wurst-Bot] Update to ${{ github.event.inputs.mc_version }}" | |
git push --set-upstream origin ${{ github.event.inputs.mc_version }} | |
shell: bash | |
# For some reason the commit above doesn't automatically trigger the CI | |
# workflow, so we need to explicitly start it here. | |
- name: Trigger CI on the new branch | |
env: | |
GH_TOKEN: ${{ github.token }} | |
run: | | |
gh workflow run gradle.yml --ref ${{ github.event.inputs.mc_version }} | |
shell: bash |