Continuous Deployment #14
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
name: Continuous Deployment | |
on: | |
workflow_dispatch: | |
inputs: | |
tag: | |
description: 'Version of the data pack' | |
required: true | |
default: '1.0' | |
mc_version: | |
description: 'Minecraft version(s) the data pack runs in (human readable)' | |
required: true | |
default: '1.14x-1.21x' | |
mc_version_range: | |
description: 'Minecraft version(s) the data pack runs in (encoded in version range spec)' | |
required: true | |
default: '>=1.14 <=1.21' | |
jobs: | |
deploy: | |
runs-on: ubuntu-latest | |
name: Build and publish project | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
show-progress: false | |
- name: Extract tag | |
id: tag_version | |
run: echo "TAG_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV | |
# Automatically set version numbers | |
- name: Find and replace uninstall file name | |
uses: jacobtomlinson/gha-find-replace@v3 | |
with: | |
find: "${file_name}" | |
replace: ${{ github.event.repository.name }}-v${{ github.event.inputs.tag }}-mc${{ github.event.inputs.mc_version }}-datapack.zip | |
regex: false | |
include: "**uninstall.mcfunction" | |
- name: Find and replace data pack version | |
uses: jacobtomlinson/gha-find-replace@v3 | |
with: | |
find: "${version}" | |
replace: ${{ github.event.inputs.tag }} | |
regex: false | |
- name: Find and replace supported mc versions | |
uses: jacobtomlinson/gha-find-replace@v3 | |
with: | |
find: "${mc_version}" | |
replace: ${{ github.event.inputs.mc_version }} | |
regex: false | |
# Check for existence of datapack, mod and/or resourcepack folders. | |
- name: Check for data folder | |
id: check_datapack_folder | |
uses: andstor/file-existence-action@v3 | |
with: | |
files: "data" | |
- name: Check for mod folders | |
id: check_mod_folder | |
uses: andstor/file-existence-action@v3 | |
with: | |
files: "META-INF, net, fabric.mod.json, assets" | |
- name: Check for resource pack folder | |
id: check_assets_folder | |
uses: andstor/file-existence-action@v3 | |
with: | |
files: "assets/minecraft" | |
# Package project | |
- name: Create data pack zip file | |
uses: montudor/action-zip@v1 | |
if: steps.check_datapack_folder.outputs.files_exists == 'true' | |
with: | |
args: zip -qq "${{ github.event.repository.name }}-v${{ github.event.inputs.tag }}-mc${{ github.event.inputs.mc_version }}-datapack.zip" -r . -x assets/* net/* META-INF/* fabric.mod.json unused/* src/* wiki/* CHANGES.md ".*" | |
- name: Create mod jar file | |
uses: montudor/action-zip@v1 | |
if: steps.check_mod_folder.outputs.files_exists == 'true' | |
with: | |
args: zip -qq "${{ github.event.repository.name }}-v${{ github.event.inputs.tag }}-mc${{ github.event.inputs.mc_version }}-mod.jar" -r . -x unused/* src/* wiki/* CHANGES.md ".*" "${{ github.event.repository.name }}-v${{ github.event.inputs.tag }}-mc${{ github.event.inputs.mc_version }}-datapack.zip" | |
- name: Create asset pack zip file | |
uses: montudor/action-zip@v1 | |
if: steps.check_assets_folder.outputs.files_exists == 'true' | |
with: | |
args: zip -qq "${{ github.event.repository.name }}-v${{ github.event.inputs.tag }}-mc${{ github.event.inputs.mc_version }}-resourcepack.zip" -r . -x data/* net/* META-INF/* fabric.mod.json unused/* src/* wiki/* CHANGES.md ".*" "${{ github.event.repository.name }}-v${{ github.event.inputs.tag }}-mc${{ github.event.inputs.mc_version }}-datapack.zip" "${{ github.event.repository.name }}-v${{ github.event.inputs.tag }}-mc${{ github.event.inputs.mc_version }}-mod.jar" | |
# Upload | |
- name: Upload data pack version to Modrinth | |
uses: Kir-Antipov/mc-publish@v3.3 | |
if: steps.check_datapack_folder.outputs.files_exists == 'true' | |
with: | |
modrinth-id: HJR6V0I2 | |
modrinth-token: ${{ secrets.MODRINTH_TOKEN }} | |
game-versions: ${{ github.event.inputs.mc_version_range }} | |
game-version-filter: any | |
fail-mode: skip | |
name: "[DP] Release v${{ github.event.inputs.tag }}" | |
version: ${{ github.event.inputs.tag }} | |
changelog-file: CHANGES.md | |
loaders: | | |
datapack | |
files: | | |
./${{ github.event.repository.name }}-*.zip | |
- name: Upload mod version to Modrinth | |
uses: Kir-Antipov/mc-publish@v3.3 | |
if: steps.check_mod_folder.outputs.files_exists == 'true' | |
with: | |
modrinth-id: HJR6V0I2 | |
modrinth-token: ${{ secrets.MODRINTH_TOKEN }} | |
game-versions: ${{ github.event.inputs.mc_version_range }} | |
game-version-filter: any | |
fail-mode: skip | |
name: "[Mod] Release v${{ github.event.inputs.tag }}" | |
version: ${{ github.event.inputs.tag }}+mod | |
changelog-file: CHANGES.md | |
dependencies: | | |
fabric-api(optional){modrinth:P7dR8mSH} | |
modmenu(optional){modrinth:mOgUt4GM} | |
modmenu-badges-lib(optional){modrinth:eUw8l2Vi} | |
midnightlib(optional){modrinth:codAaoxh} | |
loaders: | | |
fabric | |
forge | |
quilt | |
files: | | |
./${{ github.event.repository.name }}-*-mod.jar | |
- name: Upload data pack version to CurseForge | |
uses: Kir-Antipov/mc-publish@v3.3 | |
if: steps.check_datapack_folder.outputs.files_exists == 'true' | |
with: | |
curseforge-id: 811791 | |
curseforge-token: ${{ secrets.CURSEFORGE_TOKEN }} | |
game-versions: ${{ github.event.inputs.mc_version_range }} | |
game-version-filter: any | |
fail-mode: skip | |
name: "Release v${{ github.event.inputs.tag }}" | |
version: ${{ github.event.inputs.tag }} | |
changelog-file: CHANGES.md | |
loaders: | | |
datapack | |
files: | | |
./${{ github.event.repository.name }}-*.zip | |
- name: Upload mod version to CurseForge | |
uses: Kir-Antipov/mc-publish@v3.3 | |
if: steps.check_mod_folder.outputs.files_exists == 'true' | |
with: | |
curseforge-id: 909654 | |
curseforge-token: ${{ secrets.CURSEFORGE_TOKEN }} | |
game-versions: ${{ github.event.inputs.mc_version_range }} | |
game-version-filter: any | |
fail-mode: skip | |
name: "Release v${{ github.event.inputs.tag }}" | |
version: ${{ github.event.inputs.tag }}+mod | |
changelog-file: CHANGES.md | |
dependencies: | | |
catalogue(optional){curseforge:459701} | |
catalogue-fabric(optional){curseforge:667377} | |
midnightlib(optional){curseforge:488090} | |
java: | | |
Java 21 | |
Java 17 | |
Java 18 | |
loaders: | | |
fabric | |
forge | |
quilt | |
files: | | |
./${{ github.event.repository.name }}-*-mod.jar | |
- name: Add changelog header for GitHub release | |
run: sed -i '1i_Changelog:_' CHANGES.md | |
- name: Upload outputs to GitHub releases | |
uses: Kir-Antipov/mc-publish@v3.3 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
github-tag: v${{ github.event.inputs.tag }} | |
game-versions: ${{ github.event.inputs.mc_version_range }} | |
name: Release v${{ github.event.inputs.tag }} | |
version: v${{ github.event.inputs.tag }} | |
changelog-file: CHANGES.md | |
files: | | |
./${{ github.event.repository.name }}-*.@(zip|jar) |