Skip to content

Release #113 by @Xikaro #113

Release #113 by @Xikaro

Release #113 by @Xikaro #113

Workflow file for this run

name: Release
run-name: "Release #${{ github.run_number }} by @${{ github.actor }}"
env:
RELEASE_TYPE: "beta"
MINECRAFT_VERSION: "1.20.1"
on:
push:
# tags:
# - "*.*.*"
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
info:
name: Project Info
runs-on: ubuntu-latest
outputs:
project_version: ${{ steps.project_version.outputs.tag }}
project_name: ${{ steps.project_name.outputs.value }}
changelog: ${{ steps.changelog.outputs.description }}
truncated_changelog: ${{ steps.truncated.outputs.text }}
diff: ${{ steps.lockfile.outputs.diff }}
release_type: ${{ env.RELEASE_TYPE }}
minecraft_version: ${{ env.MINECRAFT_VERSION }}
steps:
- name: Checkout
uses: actions/checkout@v4.2.2
- name: Check lockfile
shell: bash
run: |
set +e
echo "🔎 Getting modpack info..."
if [ ! -f pakku-lock.json ]; then
echo "::error::Could not find pakku-lock.json" && exit 1
else
echo "✔️ pakku-lock.json"
fi
if [ ! -f pakku.json ]; then
echo "::error::Could not find pakku.json" && exit 1
else
echo "✔️ pakku.json"
fi
- name: Get previous lockfile
id: lockfile
shell: bash
run: |
set +e
echo "🔎 Getting previous lockfile..."
if [ "$latest_tag" = ${{ github.ref_name }} ]; then
latest_tag_prev=$(git describe --tags --abbrev=0 $(git describe --tags --abbrev=0)^)
latest_tagged_commit=$(git rev-list -n 1 --pretty=format:"%h" $latest_tag_prev | sed -n 2p)
if git cat-file -e $latest_tagged_commit:./pakku-lock.json; then
git show $latest_tagged_commit:./pakku-lock.json > ./pakku-lock-prev.json
curl https://github.com/juraj-hrivnak/pakku/releases/latest/download/pakku.jar -o pakku.jar -L -J
java -jar pakku.jar diff -v --markdown PROJECTS_DIFF.md ./pakku-lock-pre.json ./pakku-lock.json
else
echo "❌ File pakku-lock.json not found in previous tag"
fi
fi
if [ ! -f PROJECTS_DIFF.md ]; then
touch PROJECTS_DIFF.md
fi
{
echo 'diff<<EOF'
cat -v PROJECTS_DIFF.md
echo EOF
} >> "$GITHUB_OUTPUT"
- name: Get Project Name
id: project_name
uses: ActionsTools/read-json-action@v1.0.5
with:
file_path: "pakku.json"
prop_path: "name"
- name: Get Project Version
id: project_version
uses: "WyriHaximus/github-action-get-previous-tag@v1.4.0"
with:
fallback: build.${{ github.run_number }}
- name: Changelog Parser
id: changelog
uses: coditory/changelog-parser@v1.0.2
with:
path: CHANGELOG.md
- name: Truncate Changelog
id: truncated
uses: cisox/read-more-action@v1.0.2
with:
text: '${{ steps.changelog.outputs.description }}'
max_chars: '1450'
read_more: '** [Read more...](https://github.com/${{ github.repository }}/releases/tag/${{ steps.project_version.outputs.tag }}) **'
- name: Upload Diff
id: diff
uses: actions/upload-artifact@v4.4.3
with:
name: Mods-diff
path: PROJECTS_DIFF.md
- name: Generate Github Summary
run: |
echo "📃 Project Name=${{ steps.project_name.outputs.value }}" >> $GITHUB_STEP_SUMMARY
echo "📃 Project Version=${{ steps.project_version.outputs.tag }}" >> $GITHUB_STEP_SUMMARY
echo "📃 MC Versions=${{ env.MINECRAFT_VERSION }}" >> $GITHUB_STEP_SUMMARY
echo "📃 Release Type=${{ env.RELEASE_TYPE }}" >> $GITHUB_STEP_SUMMARY
echo "${{ steps.truncated.outputs.text }}" >> $GITHUB_STEP_SUMMARY
echo "${{ steps.lockfile.outputs.diff }}" >> $GITHUB_STEP_SUMMARY
# build-modpack:
# name: Build Modpack
# runs-on: ubuntu-latest
# needs: [info]
# steps:
# - name: Checkout
# uses: actions/checkout@v4.2.2
# - name: Replace strings
# shell: bash
# run: |
# set +e
# VERSION=${{ needs.info.outputs.project_version }}
# sed -i -e "s/DEV/${VERSION}/g" pakku.json
# sed -i -e "s/DEV/${VERSION}/g" config/fancymenu/customization/gui_main_menu.txt
# # - name: Cache pakku
# # uses: actions/cache@v4.1.2
# # with:
# # path: build/.cache
# # key: ${{ runner.OS }}-pakku-cache-${{ hashFiles('build/.cache/') }}
# # restore-keys: ${{ runner.OS }}-pakku-cache-
# - name: Export modpack
# run: |
# curl https://github.com/juraj-hrivnak/pakku/releases/latest/download/pakku.jar -o pakku.jar -L -J
# java -jar pakku.jar export
# - name: Rename artifact curseforge
# run: |
# cd ./build/curseforge/
# mv *.zip $(basename -s .zip *.zip)-curseforge.zip
- name: Upload artifact CurseForge
uses: actions/upload-artifact@v4.4.3
with:
name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-curseforge
path: ./build/curseforge/${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-curseforge.zip
if-no-files-found: error
- name: Rename artifact modrinth
run: |
cd ./build/modrinth/
mv *.mrpack $(basename -s .mrpack *.mrpack)-modrinth.mrpack
- name: Upload artifact modrinth
uses: actions/upload-artifact@v4.4.3
with:
name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-modrinth
path: ./build/modrinth/${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-modrinth.mrpack
if-no-files-found: warn
# build-server:
# name: Build Server Pack
# runs-on: ubuntu-latest
# needs: [info]
# steps:
# - name: Checkout
# uses: actions/checkout@v4.2.2
# - name: Replace strings
# shell: bash
# run: |
# set +e
# VERSION=${{ needs.info.outputs.project_version }}
# sed -i -e "s/DEV/${VERSION}/g" pakku.json
# sed -i -e "s/DEV/${VERSION}/g" config/fancymenu/customization/gui_main_menu.txt
# # - name: Cache pakku
# # uses: actions/cache@v4.1.2
# # with:
# # path: build/.cache
# # key: ${{ runner.OS }}-pakku-cache-${{ hashFiles('build/.cache/') }}
# # restore-keys: ${{ runner.OS }}-pakku-cache-
# - name: Export modpack
# run: |
# mv -vf ./.pakku/server-overrides/* ./
# curl https://github.com/juraj-hrivnak/pakku/releases/latest/download/pakku.jar -o pakku.jar -L -J
# java -jar pakku.jar export
# - name: Rename artifact server
# run: |
# cd ./build/serverpack/
# mv *.zip $(basename -s .zip *.zip)-serverpack.zip
# - name: Upload artifact server
# uses: actions/upload-artifact@v4.4.3
# with:
# name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-serverpack
# path: ./build/serverpack/${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-serverpack.zip
# if-no-files-found: error
# build-multimc:
# name: Build MultiMC Pack
# runs-on: ubuntu-latest
# needs: [info]
# steps:
# - name: Checkout
# uses: actions/checkout@v4.2.2
# - name: Replace strings
# shell: bash
# run: |
# set +e
# VERSION=${{ needs.info.outputs.project_version }}
# sed -i -e "s/DEV/${VERSION}/g" pakku.json
# sed -i -e "s/DEV/${VERSION}/g" config/fancymenu/customization/gui_main_menu.txt
# sed -i -e "s/DEV/${VERSION}/g" .pakku/multimc-overrides/instance.cfg
# # - name: Cache pakku
# # uses: actions/cache@v4.1.2
# # with:
# # path: build/.cache
# # key: ${{ runner.OS }}-pakku-cache-${{ hashFiles('build/.cache/') }}
# # restore-keys: ${{ runner.OS }}-pakku-cache-
# - name: Export
# run: |
# curl https://github.com/juraj-hrivnak/pakku/releases/latest/download/pakku.jar -o pakku.jar -L -J
# java -jar pakku.jar --debug fetch
# java -jar pakku.jar --debug export
# - name: Move files
# run: |
# ls
# mkdir -p .pakku/multimc-overrides/flame
# mv -vf ./build/.cache/curseforge/manifest.json .pakku/multimc-overrides/flame/manifest.json
# mv -vf ./build/.cache/curseforge/overrides .pakku/multimc-overrides/.minecraft
# mv -vf ./mods .pakku/multimc-overrides/.minecraft/mods
# cd .pakku/multimc-overrides/
# zip -r ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-multimc.zip icon.png mmc-pack.json instance.cfg .minecraft/ flame/
# - name: Upload zip multimc
# uses: actions/upload-artifact@v4.4.3
# with:
# name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-multimc
# path: .pakku/multimc-overrides/${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-multimc.zip
# if-no-files-found: error
# release-curseforge:
# name: Deploy to CurseForge
# needs: [info, build-modpack, build-server]
# runs-on: ubuntu-latest
# outputs:
# id: ${{ steps.cf_release.outputs.id }}
# steps:
# - name: Check if CF_API_TOKEN exist
# shell: bash
# run: |
# if [ "${{ secrets.CF_API_TOKEN }}" == '' ]; then
# echo '::error::No value found for secret key `CF_API_TOKEN`. See https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository' && exit 1
# fi
# - name: Download artifact curseforge
# uses: actions/download-artifact@v4.1.8
# with:
# name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-curseforge
# - name: Download artifact server
# uses: actions/download-artifact@v4.1.8
# with:
# name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-serverpack
# - name: Upload Curseforge
# id: cf_release
# uses: Xikaro/upload-curseforge-modpack-action@1.1.1
# with:
# api-token: ${{ secrets.CF_API_TOKEN }}
# project-id: ${{ vars.CF_MODPACK_ID }}
# display-name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}
# modpack-path: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-curseforge.zip
# server-display-name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-serverpack
# modpack-server-path: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-serverpack.zip
# changelog: |
# ${{ needs.info.outputs.changelog }}
# ${{ needs.info.outputs.diff }}
# changelog-format: markdown
# game-version: ${{ needs.info.outputs.minecraft_version }}
# release-type: ${{ needs.info.outputs.release_type }}
# release-modrinth:
# name: Deploy to Modrinth
# needs: [info, build-modpack, build-server]
# runs-on: ubuntu-latest
# steps:
# - name: Check if MODRINTH_API_TOKEN exist
# shell: bash
# run: |
# if [ "${{ secrets.MODRINTH_API_TOKEN }}" == '' ]; then
# echo '::error::No value found for secret key `MODRINTH_API_TOKEN`. See https://docs.github.com/en/ actionssecurity-guides/ encrypted-secrets#creating-encrypted-secrets-for-a-repository' && exit 1
# fi
# - name: Download artifact modrinth
# uses: actions/download-artifact@v4.1.8
# with:
# name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-modrinth
# - name: Download artifact server
# uses: actions/download-artifact@v4.1.8
# with:
# name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-serverpack
# - name: Upload Modrinth
# id: cf_release
# uses: Xikaro/upload-curseforge-modpack-action@1.1.1
# with:
# api-token: ${{ secrets.MODRINTH_API_TOKEN }}
# project-id: ${{ vars.MODRINTH_MODPACK_ID }}
# modpack-path: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-modrinth.mrpack
# modpack-server-path: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-serverpack.zip
# changelog: ${{ needs.info.outputs.changelog }}
# changelog-format: markdown
# game-version: ${{ needs.info.outputs.minecraft_version }}
# display-name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}
# server-display-name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-serverpack
# release-type: ${{ needs.info.outputs.release_type }}
# release-github:
# name: Deploy to GitHub
# needs: [info, build-modpack, build-server, build-multimc]
# runs-on: ubuntu-latest
# steps:
# - name: Checkout
# uses: actions/checkout@v4.2.2
# - name: Download artifact
# uses: actions/download-artifact@v4.1.8
# with:
# merge-multiple: true
# - name: Сlose fixed in dev
# uses: Xikaro/close-issues-based-on-label@master
# env:
# LABEL: "2. Status: In Dev"
# COMMENT: In ${{ needs.info.outputs.project_version }}
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# - name: Create release
# uses: softprops/action-gh-release@v2.0.8
# with:
# name: ${{ needs.info.outputs.project_version }}
# tag_name: ${{ needs.info.outputs.project_version }}
# body: |
# ${{ needs.info.outputs.changelog }}
# ```markdown
# ${{ needs.info.outputs.diff }}
# ```
# files: |
# ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-curseforge.zip
# ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-serverpack.zip
# ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-multimc.zip
# prerelease: ${{ env.RELEASE_TYPE != 'release' }}
# generate_release_notes: true
# token: ${{ secrets.GITHUB_TOKEN }}
# discord-message:
# name: Discord Message
# needs: [info, release-github]
# runs-on: ubuntu-latest
# steps:
# - name: Send Discord message
# uses: hugoalh/send-discord-webhook-ghaction@v7.0.2
# with:
# key: ${{ secrets.DISCORD_RELEASES }}
# username: "TerraFirmaGreg"
# avatar_url: "https://raw.githubusercontent.com/TerraFirmaGreg-Team/.github/main/branding/logo.png"
# content_links_no_embed: .+
# content: |
# **Release**: `${{ needs.info.outputs.project_version }}`
# **Release Type**: `${{ needs.info.outputs.release_type }}`
# **Game Version**: `${{ needs.info.outputs.minecraft_version }}`
# [CurseForge](https://www.curseforge.com/minecraft/modpacks/terrafirmagreg/files/5855711) • [GitHub](https://github.com/${{ github.repository }}/releases/tag/${{ needs.info.outputs.project_version }}) • [Issues](https://github.com/${{ github.repository }}/issues)
# ```markdown
# ${{ needs.info.outputs.truncated_changelog }}
# ```
# ** [Read more...](https://github.com/${{ github.repository }}/releases/tag/${{ needs.info.outputs.project_version }}) **