neuralgia/.github/workflows/release.yml
2024-01-20 21:06:16 +05:00

331 lines
13 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 }}"
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 }}