name: Build run-name: "Build #${{ github.run_number }}" on: push: tags: - "*.*.*" concurrency: group: ${{ github.ref }} cancel-in-progress: true env: RELEASE_TYPE: "RELEASE" jobs: info: name: Project Info runs-on: ubuntu-latest outputs: project_version: ${{ steps.project_version.outputs.tag }} project_name: ${{ steps.project_name.outputs.value }} mc_version: ${{ steps.mc_version.outputs.value }} changelog: ${{ steps.changelog.outputs.description }} steps: - name: Checkout uses: actions/checkout@v4.1.4 - name: Get tag id: project_version uses: "WyriHaximus/github-action-get-previous-tag@v1.4.0" with: fallback: build.${{ github.run_number }} - name: Get project name id: project_name uses: ActionsTools/read-json-action@main with: file_path: ".github/buildtools/modpack/manifest.json" prop_path: "name" - name: Get project name id: mc_version uses: ActionsTools/read-json-action@main with: file_path: ".github/buildtools/modpack/manifest.json" prop_path: "minecraft.version" - name: Changelog Parser id: changelog uses: coditory/changelog-parser@v1.0.2 with: path: CHANGELOG.md build-cf: name: Build CF Pack runs-on: ubuntu-latest needs: [info] steps: - name: Checkout uses: actions/checkout@v4.1.4 - name: Replace strings shell: bash run: | VERSION=${{ needs.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.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-cf.zip manifest.json modlist.html overrides - name: Upload zip cf uses: actions/upload-artifact@v4.3.3 with: name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-cf path: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-cf.zip retention-days: 5 build-mmc: name: Build MMC Pack runs-on: ubuntu-latest needs: [info] steps: - name: Checkout uses: actions/checkout@v4.1.4 - name: Replace strings shell: bash run: | VERSION=${{ needs.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.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-mmc.zip icon.png mmc-pack.json instance.cfg .minecraft/ flame/ - name: Upload zip mmc uses: actions/upload-artifact@v4.3.3 with: name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-mmc path: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-mmc.zip retention-days: 5 build-server: name: Build Server Pack runs-on: ubuntu-latest needs: [info] steps: - name: Checkout uses: actions/checkout@v4.1.4 - 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 cd .minecraft zip -r ./${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-server.zip ./* - name: Upload zip uses: actions/upload-artifact@v4.3.3 with: name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-server path: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-server.zip retention-days: 5 release-curseforge: name: Deploy to CurseForge needs: [info, build-cf, build-server] 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.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-cf - name: Download serverpack uses: actions/download-artifact@v4.1.0 with: name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-server - 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 }} modpack-path: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-cf.zip modpack-server-path: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-server.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 }}-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.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-mrd.zip # modpack-server-path: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-server.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 }}-server # release-type: ${{ env.RELEASE_TYPE }} release-github: name: Deploy to GitHub needs: [info, build-cf, build-mmc, build-server] 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.info.outputs.project_version }} body: ${{ needs.info.outputs.changelog }} files: | ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-cf.zip ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-mmc.zip ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-server.zip tag_name: ${{ needs.info.outputs.project_version }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} discord-message: name: Discord Message needs: [info, release-github, release-curseforge] runs-on: ubuntu-latest steps: - name: Send Discord message uses: tsickert/discord-webhook@v6.0.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.info.outputs.project_version }} embed-url: https://github.com/${{ github.repository }}/releases/tag/${{ needs.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.info.outputs.mc_version }}` **Website Link**: [CurseForge](https://www.curseforge.com/minecraft/modpacks/terrafirmagreg/files/${{ needs.release-curseforge.outputs.cf_release_id }}) ** Сhangelog ** ```${{ needs.info.outputs.changelog }}``` ** [More details...](https://github.com/TerraFirmaGreg-Team/Modpack-1.20.x/blob/main/CHANGELOG.md) ** embed-color: 5814783 # close-fixed-issues: # name: Close Fixed Issues # needs: [info, release-github, release-curseforge] # runs-on: ubuntu-latest # steps: # - name: Checkout # uses: actions/checkout@v4.1.4 # - name: Сlose fixed in dev # uses: juraj-hrivnak/close-issues-based-on-label@master # env: # LABEL: "2. Status: Fixed in Dev" # VERSION: ${{ needs.info.outputs.project_version }} # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}