Merge pull request #6 from Fauli1221/main #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: Modpack Release | Pipeline | |
on: | |
push: | |
branches: | |
- main | |
env: | |
pack-file: 'pack.toml' | |
default-release-modrinth: 'true' | |
default-release-curseforge: 'false' | |
jobs: | |
parse-current-modpacks: | |
name: Parse current modpacks to a list | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
outputs: | |
modpack-folders: ${{ steps.list-modpacks.outputs.modpack-folders }} | |
steps: | |
- name: Check Out Git Repository | |
uses: actions/checkout@v4 | |
- name: List Modpacks | |
id: list-modpacks | |
run: | | |
modpackFolders=() | |
for folder in *; do | |
if [ -d "$folder" ]; then | |
if [ -e "$folder/${{ env.pack-file }}" ]; then | |
modpackFolders+=("$folder") | |
fi | |
fi | |
done | |
echo "modpack-folders=$(jq --compact-output --null-input '$ARGS.positional' --args -- "${modpackFolders[@]}")" >> "$GITHUB_OUTPUT" | |
- name: Current detected modpacks | |
run: | | |
echo "::notice ::⚙ Current detected modpacks: ${{ steps.list-modpacks.outputs.modpack-folders }}" | |
release-please: | |
needs: | |
- parse-current-modpacks | |
if: ${{ (needs.parse-current-modpacks.outputs.modpack-folders) != '[]' }} | |
strategy: | |
fail-fast: false | |
matrix: | |
modpack: ${{ fromJson(needs.parse-current-modpacks.outputs.modpack-folders) }} | |
name: Handle Releases | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: ${{ matrix.modpack }} | |
permissions: | |
contents: write | |
pull-requests: write | |
steps: | |
- name: Perform Release with Release Please | |
id: release-please | |
uses: google-github-actions/release-please-action@v3 | |
with: | |
monorepo-tags: true | |
path: ${{ matrix.modpack }} | |
release-type: simple | |
package-name: ${{ matrix.modpack }} | |
prerelease: true | |
changelog-types: > | |
[{"type":"feat","section":"★ Features","hidden":false}, | |
{"type":"fix","section":"♻ Bug Fixes","hidden":false}, | |
{"type":"mod","section":"☀ Modpack Changes","hidden":false}, | |
{"type":"update","section":"⚘ Modpack Updates","hidden":false}, | |
{"type":"chore","section":"⛭ Miscellaneous","hidden":true}] | |
- name: Parse tag from PR title | |
uses: actions-ecosystem/action-regex-match@v2 | |
id: version | |
with: | |
text: ${{ fromJson(steps.release-please.outputs.pr).title }} | |
regex: '(?<=\s)(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$' | |
if: ${{ steps.release-please.outputs.pr != '' }} | |
- name: Check Out Git Repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Bump Version | |
uses: ./.github/actions/bump-pack | |
with: | |
release-tag: ${{ steps.version.outputs.match }} | |
modpack: ${{ matrix.modpack }} | |
branch: ${{ fromJson(steps.release-please.outputs.pr).headBranchName }} | |
if: ${{ steps.release-please.outputs.pr != '' }} | |
- name: Get Latest tag | |
id: tag | |
uses: WyriHaximus/github-action-get-previous-tag@v1 | |
if: ${{ steps.release-please.outputs.releases_created }} | |
- name: Parse Pack File | |
id: parse | |
uses: ./.github/actions/parse | |
with: | |
modpack: ${{ matrix.modpack }} | |
if: ${{ steps.release-please.outputs.releases_created }} | |
- name: Set Mod Vendors | |
id: set-mod-vendors | |
run: | | |
[[ ! -z "${{ secrets.CURSEFORGE_TOKEN }}" && ! -z "${{ secrets.CURSEFORGE_ID }}" ]] && echo "curseforge=true" >> $GITHUB_OUTPUT || echo "curseforge=false" >> $GITHUB_OUTPUT | |
[[ ! -z "${{ secrets.MODRINTH_TOKEN }}" && ! -z "${{ secrets.MODRINTH_ID }}" ]] && echo "modrinth=true" >> $GITHUB_OUTPUT || echo "modrinth=false" >> $GITHUB_OUTPUT | |
shell: bash | |
if: ${{ steps.release-please.outputs.releases_created }} | |
- name: Build Modpack | |
uses: ./.github/actions/build | |
with: | |
modpack: ${{ matrix.modpack }} | |
release-tag: ${{ steps.tag.outputs.tag }} | |
build-modrinth: ${{ env.default-release-modrinth }} | |
build-curse: ${{ env.default-release-curseforge }} | |
if: ${{ steps.release-please.outputs.releases_created }} | |
# --- Release | |
- name: Release Modpack to Vendors | |
uses: ./.github/actions/release | |
with: | |
modpack: ${{ matrix.modpack }} | |
release-tag: ${{ steps.tag.outputs.tag }} | |
loader: ${{ steps.parse.outputs.loader }} | |
game-version: ${{ steps.parse.outputs.game-version }} | |
upload-modrinth: ${{ steps.set-mod-vendors.outputs.modrinth }} | |
upload-curse: ${{ steps.set-mod-vendors.outputs.curseforge }} | |
MODRINTH_ID: ${{ secrets.MODRINTH_ID }} | |
MODRINTH_TOKEN: ${{ secrets.MODRINTH_TOKEN }} | |
CURSEFORGE_ID: ${{ secrets.CURSEFORGE_ID }} | |
CURSEFORGE_TOKEN: ${{ secrets.CURSEFORGE_TOKEN }} | |
if: | | |
steps.release-please.outputs.releases_created && | |
(steps.set-mod-vendors.outputs.modrinth || steps.set-mod-vendors.outputs.curseforge) |