Release #113 by @Xikaro #113
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: 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 }}) ** |