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 }}