Files
TFG/.github/workflows/release.yml
2024-10-29 08:17:46 +05:00

402 lines
16 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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'
- 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 }}) **