331 lines
13 KiB
YAML
331 lines
13 KiB
YAML
name: Release
|
||
run-name: "Release #${{ github.run_number }}"
|
||
|
||
on:
|
||
push:
|
||
tags:
|
||
- "*.*.*"
|
||
|
||
concurrency:
|
||
group: ${{ github.ref }}
|
||
cancel-in-progress: true
|
||
|
||
env:
|
||
RELEASE_TYPE: "RELEASE"
|
||
|
||
jobs:
|
||
modpack-info:
|
||
name: Modpack Info
|
||
runs-on: ubuntu-latest
|
||
outputs:
|
||
project_name: ${{ steps.info.outputs.project_name }}
|
||
project_version: ${{ steps.info.outputs.project_version }}
|
||
mc_version: ${{ steps.info.outputs.mc_version }}
|
||
changelog_ru: ${{ steps.changelog_ru.outputs.description }}
|
||
changelog_en: ${{ steps.changelog_en.outputs.description }}
|
||
|
||
steps:
|
||
- name: Checkout
|
||
uses: actions/checkout@v4.1.1
|
||
|
||
- name: Get tag
|
||
id: version
|
||
uses: "WyriHaximus/github-action-get-previous-tag@v1.3.0"
|
||
with:
|
||
fallback: tag_not_found
|
||
|
||
- name: Modpack info
|
||
id: info
|
||
shell: bash
|
||
run: |
|
||
set +e
|
||
|
||
if [ ! -f ./.github/buildtools/modpack/manifest.json ]; then
|
||
echo "::error::Could not find manifest.json" && exit 1
|
||
fi
|
||
manifestjson=`cat ./.github/buildtools/modpack/manifest.json`
|
||
|
||
project_name=`echo $(jq -r '.name' <<< "$manifestjson")`
|
||
echo "project_name=$project_name" >> $GITHUB_OUTPUT
|
||
|
||
mc_version=`echo $(jq -r '.minecraft.version' <<< "$manifestjson")`
|
||
echo "mc_version=$mc_version" >> $GITHUB_OUTPUT
|
||
|
||
if [[ ${{ startsWith(github.ref, 'refs/tags/') }} == true ]]; then
|
||
echo "project_version=${{ steps.version.outputs.tag }}" >> $GITHUB_OUTPUT
|
||
else
|
||
echo "project_version=build.${{ github.run_number }}" >> $GITHUB_OUTPUT
|
||
fi
|
||
|
||
- name: Changelog Parser
|
||
id: changelog_ru
|
||
uses: coditory/changelog-parser@v1.0.2
|
||
with:
|
||
path: CHANGELOG_RU.md
|
||
|
||
- name: Changelog Parser
|
||
id: changelog_en
|
||
uses: coditory/changelog-parser@v1.0.2
|
||
with:
|
||
path: CHANGELOG_EN.md
|
||
|
||
build-cf-modpack:
|
||
name: Build CF Modpack
|
||
runs-on: ubuntu-latest
|
||
needs: [modpack-info]
|
||
steps:
|
||
- name: Checkout
|
||
uses: actions/checkout@v4.1.1
|
||
|
||
- name: Replace strings
|
||
shell: bash
|
||
run: |
|
||
VERSION=${{ needs.modpack-info.outputs.project_version }}
|
||
sed -i -e "s/DEV/${VERSION}/g" .github/buildtools/modpack/manifest.json
|
||
sed -i -e "s/DEV/${VERSION}/g" config/fancymenu/customization/gui_main_menu.txt
|
||
|
||
- name: Export CF
|
||
run: |
|
||
mkdir -p overrides
|
||
mv -vf {config,defaultconfigs,kubejs} overrides/
|
||
mv -vf .github/buildtools/modpack/manifest.json ./
|
||
mv -vf .github/buildtools/modpack/modlist.html ./
|
||
zip -r ${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-cf.zip manifest.json modlist.html overrides
|
||
|
||
- name: Upload zip cf
|
||
uses: actions/upload-artifact@v4.0.0
|
||
with:
|
||
name: ${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-cf
|
||
path: ${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-cf.zip
|
||
retention-days: 5
|
||
|
||
build-mmc-modpack:
|
||
name: Build MMC Modpack
|
||
runs-on: ubuntu-latest
|
||
needs: [modpack-info]
|
||
steps:
|
||
- name: Checkout
|
||
uses: actions/checkout@v4.1.1
|
||
|
||
- name: Replace strings
|
||
shell: bash
|
||
run: |
|
||
VERSION=${{ needs.modpack-info.outputs.project_version }}
|
||
sed -i -e "s/DEV/${VERSION}/g" .github/buildtools/modpack/instance.cfg
|
||
sed -i -e "s/DEV/${VERSION}/g" config/fancymenu/customization/gui_main_menu.txt
|
||
|
||
- name: Download Mods
|
||
run: |
|
||
git submodule init
|
||
cd mods
|
||
git config --global credential.helper '!f() {
|
||
echo "username=Xikaro";
|
||
echo "password=${{ secrets.USER_TOKEN_XIKARO }}"; }; f'
|
||
git submodule update --recursive
|
||
|
||
- name: Export MMC
|
||
run: |
|
||
mkdir -p .minecraft
|
||
mkdir -p flame
|
||
mv -vf {config,defaultconfigs,kubejs,mods} .minecraft/
|
||
mv -vf .github/buildtools/modpack/mmc-pack.json ./
|
||
mv -vf .github/buildtools/modpack/instance.cfg ./
|
||
mv -vf .github/buildtools/modpack/modlist.html ./
|
||
mv -vf .github/buildtools/modpack/manifest.json flame/
|
||
find .minecraft/mods -name "probejs-*" -delete;
|
||
find .minecraft/mods -name ".git" -delete;
|
||
zip -r ${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-mmc.zip icon.png mmc-pack.json instance.cfg .minecraft/ flame/
|
||
|
||
- name: Upload zip mmc
|
||
uses: actions/upload-artifact@v4.0.0
|
||
with:
|
||
name: ${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-mmc
|
||
path: ${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-mmc.zip
|
||
retention-days: 5
|
||
|
||
build-serverpack:
|
||
name: Build Serverpack
|
||
runs-on: ubuntu-latest
|
||
needs: [modpack-info]
|
||
steps:
|
||
- name: Checkout
|
||
uses: actions/checkout@v4.1.1
|
||
|
||
- name: Download Mods
|
||
run: |
|
||
git submodule init
|
||
cd mods
|
||
git config --global credential.helper '!f() {
|
||
echo "username=Xikaro";
|
||
echo "password=${{ secrets.USER_TOKEN_XIKARO }}"; }; f'
|
||
git submodule update --recursive
|
||
|
||
- name: Export serverpack
|
||
run: |
|
||
mkdir -p .minecraft
|
||
mv -vf {config,defaultconfigs,kubejs,mods,.github/buildtools/serverpack/*} .minecraft
|
||
cat .github/buildtools/client_mod.txt | while read -r line; do find .minecraft/mods -name "$line" -delete; done
|
||
zip -r ${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-server.zip ./
|
||
|
||
- name: Upload zip
|
||
uses: actions/upload-artifact@v4.0.0
|
||
with:
|
||
name: ${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-server
|
||
path: ${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-server.zip
|
||
retention-days: 5
|
||
|
||
release-curseforge:
|
||
name: Deploy to CurseForge
|
||
needs: [modpack-info, build-cf-modpack, build-serverpack]
|
||
runs-on: ubuntu-latest
|
||
outputs:
|
||
cf_release_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 cf modpack
|
||
uses: actions/download-artifact@v4.1.0
|
||
with:
|
||
name: ${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-cf
|
||
|
||
- name: Download serverpack
|
||
uses: actions/download-artifact@v4.1.0
|
||
with:
|
||
name: ${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-server
|
||
|
||
- name: Upload Curseforge
|
||
id: cf_release
|
||
uses: SwitchAlpha/upload-curseforge-modpack-action@master
|
||
with:
|
||
api-token: ${{ secrets.CF_API_TOKEN }}
|
||
project-id: ${{ vars.CF_MODPACK_ID }}
|
||
modpack-path: ${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-cf.zip
|
||
modpack-server-path: ${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-server.zip
|
||
changelog: |
|
||
RU
|
||
${{ needs.modpack-info.outputs.changelog_ru }}
|
||
|
||
EN
|
||
${{ needs.modpack-info.outputs.changelog_en }}
|
||
changelog-format: markdown
|
||
game-version: ${{ needs.modpack-info.outputs.mc_version }}
|
||
display-name: ${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}
|
||
server-display-name: ${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-server
|
||
release-type: ${{ env.RELEASE_TYPE }}
|
||
|
||
# release-modrinth:
|
||
# name: Deploy to Modrinth
|
||
# 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 modpack
|
||
# uses: actions/download-artifact@v4.1.0
|
||
# with:
|
||
# name: modpack_mrd
|
||
|
||
# - name: Download serverpack
|
||
# uses: actions/download-artifact@v4.1.0
|
||
# with:
|
||
# name: server_pack
|
||
|
||
# - name: Upload Modrinth
|
||
# id: cf_release
|
||
# uses: SwitchAlpha/upload-curseforge-modpack-action@master
|
||
# with:
|
||
# api-token: ${{ secrets.MODRINTH_API_TOKEN }}
|
||
# project-id: ${{ vars.MODRINTH_MODPACK_ID }}
|
||
# modpack-path: ${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-mrd.zip
|
||
# modpack-server-path: ${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-server.zip
|
||
# changelog: |
|
||
# ${{ needs.modpack-info.outputs.changelog_ru }}
|
||
# ${{ needs.modpack-info.outputs.changelog_en }}
|
||
# changelog-format: markdown
|
||
# game-version: ${{ needs.modpack-info.outputs.mc_version }}
|
||
# display-name: ${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}
|
||
# server-display-name: ${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-server
|
||
# release-type: ${{ env.RELEASE_TYPE }}
|
||
|
||
release-github:
|
||
name: Deploy to GitHub
|
||
needs: [modpack-info, build-cf-modpack, build-mmc-modpack, build-serverpack]
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- name: Download modpack
|
||
uses: actions/download-artifact@v4.1.0
|
||
with:
|
||
merge-multiple: true
|
||
|
||
- name: Create release
|
||
uses: softprops/action-gh-release@v1
|
||
with:
|
||
prerelease: false
|
||
generate_release_notes: true
|
||
name: ${{ needs.modpack-info.outputs.project_version }}
|
||
body: |
|
||
RU
|
||
${{ needs.modpack-info.outputs.changelog_ru }}
|
||
|
||
EN
|
||
${{ needs.modpack-info.outputs.changelog_en }}
|
||
files: |
|
||
${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-cf.zip
|
||
${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-mmc.zip
|
||
${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-server.zip
|
||
tag_name: ${{ needs.modpack-info.outputs.project_version }}
|
||
env:
|
||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
|
||
discord-message:
|
||
name: Discord Message
|
||
#needs: [modpack-info, release-github, release-curseforge]
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- name: Send Discord message
|
||
uses: tsickert/discord-webhook@v5.4.0
|
||
with:
|
||
webhook-url: ${{secrets.RELEASES_1_20}}
|
||
username: "TerraFirmaGreg"
|
||
avatar-url: "https://raw.githubusercontent.com/TerraFirmaGreg-Team/.github/main/branding/curseforge.png"
|
||
embed-title: Release ${{ needs.modpack-info.outputs.project_version }}
|
||
embed-url: https://github.com/${{ github.repository }}/releases/tag/${{ needs.modpack-info.outputs.project_version }}
|
||
embed-thumbnail-url: https://raw.githubusercontent.com/TerraFirmaGreg-Team/.github/main/branding/logo.png
|
||
embed-description: |
|
||
**Release Type**: `${{ env.RELEASE_TYPE }}`
|
||
**GameVersion**: `${{ needs.modpack-info.outputs.mc_version }}`
|
||
**Website Link**: [CurseForge](https://www.curseforge.com/minecraft/modpacks/terrafirmagreg/files/${{ needs.release-curseforge.outputs.cf_release_id }})
|
||
|
||
**Changelog**
|
||
:flag_ru:
|
||
```${{ needs.modpack-info.outputs.changelog_ru }}```
|
||
:flag_gb:
|
||
```${{ needs.modpack-info.outputs.changelog_en }}```
|
||
embed-color: 5814783
|
||
|
||
# close-fixed-issues:
|
||
# name: Close Fixed Issues
|
||
# needs: [modpack-info, release-github, release-curseforge]
|
||
# runs-on: ubuntu-latest
|
||
# steps:
|
||
# - name: Checkout
|
||
# uses: actions/checkout@v4.1.1
|
||
|
||
# - name: Сlose fixed in dev
|
||
# uses: juraj-hrivnak/close-issues-based-on-label@master
|
||
# env:
|
||
# LABEL: "2. Status: Fixed in Dev"
|
||
# VERSION: ${{ needs.modpack-info.outputs.project_version }}
|
||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
|
||
|
||
|