Files
TFG/.github/workflows/release.yml
dependabot[bot] 95cadd00a7 Bump actions/upload-artifact in the dependencies group
Bumps the dependencies group with 1 update: [actions/upload-artifact](https://github.com/actions/upload-artifact).


Updates `actions/upload-artifact` from 4.4.0 to 4.4.3
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.4.0...v4.4.3)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-28 21:49:22 +00:00

383 lines
14 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: "release"
MC_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 }}
diff: ${{ steps.lockfile.outputs.diff }}
release_type: ${{ env.RELEASE_TYPE }}
mc_version: ${{ env.MC_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: Upload Diff
id: diff
uses: actions/upload-artifact@v4.4.3
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/checkout@v4.2.2
- name: Replace strings
shell: bash
run: |
set +e
sed -i -e "s/DEV/${{ needs.info.outputs.project_version }}/g" pakku.json
- 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: |
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
sed -i -e "s/DEV/${{ needs.info.outputs.project_version }}/g" pakku.json
- 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/* ./
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
- 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: |
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 }}
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/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.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/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: false
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.RELEASES_1_20 }}
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)
```markdown
${{ needs.info.outputs.changelog }}
```
** [Read more...](https://github.com/${{ github.repository }}/releases/tag/${{ needs.info.outputs.project_version }}) **