Release #172 by @Xikaro #172
Workflow file for this run
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: "release" | |
MC_VERSION: "1.12.2" | |
on: | |
push: | |
branches: | |
- pakku | |
# 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 }} | |
diff: ${{ steps.lockfile.outputs.diff }} | |
release_type: ${{ env.RELEASE_TYPE }} | |
mc_version: ${{ env.MC_VERSION }} | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
- 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 | |
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/[email protected] | |
with: | |
file_path: "pakku.json" | |
prop_path: "name" | |
- name: Get Project Version | |
id: project_version | |
uses: "WyriHaximus/[email protected]" | |
with: | |
fallback: build.${{ github.run_number }} | |
- name: Changelog Parser | |
id: changelog | |
uses: coditory/[email protected] | |
with: | |
path: CHANGELOG.md | |
- name: Upload Diff | |
id: diff | |
uses: actions/[email protected] | |
with: | |
name: 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.MC_VERSION }}" >> $GITHUB_STEP_SUMMARY | |
echo "📃 Release Type=${{ env.RELEASE_TYPE }}" >> $GITHUB_STEP_SUMMARY | |
echo "${{ steps.changelog.outputs.description }}" >> $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/[email protected] | |
- name: Replace strings | |
shell: bash | |
run: | | |
set +e | |
grooovy="./groovy/runConfig.json" | |
cat <<< $(jq '.debug = false' $grooovy) > $grooovy | |
sed -i -e "s/DEV/${{ needs.info.outputs.project_version }}/g" pakku.json | |
- name: Cache pakku | |
uses: actions/[email protected] | |
with: | |
path: build/.cache | |
key: ${{ runner.OS }}-pakku-cache-${{ hashFiles('build/.cache/') }} | |
restore-keys: | | |
${{ runner.OS }}-pakku-cache- | |
- name: Export modpack | |
run: | | |
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/[email protected] | |
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/[email protected] | |
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/[email protected] | |
- name: Replace strings | |
shell: bash | |
run: | | |
set +e | |
grooovy="./groovy/runConfig.json" | |
cat <<< $(jq '.debug = false' $grooovy) > $grooovy | |
sed -i -e "s/DEV/${{ needs.info.outputs.project_version }}/g" pakku.json | |
- name: Cache pakku | |
uses: actions/[email protected] | |
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/* ./ | |
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/[email protected] | |
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/[email protected] | |
- name: Replace strings | |
shell: bash | |
run: | | |
set +e | |
grooovy="./groovy/runConfig.json" | |
cat <<< $(jq '.debug = false' $grooovy) > $grooovy | |
- name: Cache pakku | |
uses: actions/[email protected] | |
with: | |
path: build/.cache | |
key: ${{ runner.OS }}-pakku-cache-${{ hashFiles('build/.cache/') }} | |
restore-keys: | | |
${{ runner.OS }}-pakku-cache- | |
- name: Export | |
run: | | |
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/[email protected] | |
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/[email protected] | |
# with: | |
# name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-curseforge | |
# - name: Download artifact server | |
# uses: actions/[email protected] | |
# with: | |
# name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-serverpack | |
# - name: Upload Curseforge | |
# id: cf_release | |
# uses: Xikaro/[email protected] | |
# 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 }} | |
# changelog-format: markdown | |
# game-version: ${{ needs.info.outputs.mc_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/[email protected] | |
# with: | |
# name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-modrinth | |
# - name: Download artifact server | |
# uses: actions/[email protected] | |
# with: | |
# name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-serverpack | |
# - name: Upload Modrinth | |
# id: cf_release | |
# uses: Xikaro/[email protected] | |
# 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.mc_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/[email protected] | |
- name: Download artifact | |
uses: actions/[email protected] | |
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/[email protected] | |
with: | |
prerelease: false | |
generate_release_notes: true | |
name: ${{ needs.info.outputs.project_version }} | |
body: | | |
${{ needs.info.outputs.changelog }} | |
```${{ 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 | |
tag_name: 4.5.3 | |
# tag_name: ${{ needs.info.outputs.project_version }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
discord-message: | |
name: Discord Message | |
needs: [info, release-github] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Send Discord message | |
uses: hugoalh/[email protected] | |
with: | |
key: ${{ secrets.RELEASES_1_12 }} | |
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.mc_version }}` | |
[CurseForge](https://www.curseforge.com/minecraft/modpacks/terrafirmagreg/files/${{ needs.release-curseforge.outputs.id }}) • [GitHub](https://github.com/${{ github.repository }}/releases/tag/${{ needs.info.outputs.project_version }}) • [Issues](https://github.com/${{ github.repository }}/issues) | |
```${{ needs.info.outputs.changelog }}``` | |
** [Read more...](https://github.com/${{ github.repository }}/releases/tag/${{ needs.info.outputs.project_version }}) ** |