name: Build run-name: "Build #${{ github.run_number }}" on: push: tags: - "*.*.*" concurrency: group: ${{ github.ref }} cancel-in-progress: true 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: ${{ steps.changelog.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 uses: coditory/changelog-parser@v1.0.2 with: path: CHANGELOG.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/main_menu.txt sed -i -e "s/DEV/${VERSION}/g" config/bcc-common.toml - 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/main_menu.txt sed -i -e "s/DEV/${VERSION}/g" config/bcc-common.toml - 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 mv -vf {config,defaultconfigs,kubejs,mods} .minecraft/ mv -vf .github/buildtools/modpack/mmc-pack.json ./ mv -vf .github/buildtools/modpack/instance.cfg ./ zip -r ${{ needs.modpack-info.outputs.project_name }}-${{ needs.modpack-info.outputs.project_version }}-mmc.zip mmc-pack.json instance.cfg .minecraft/ - 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: Replace strings shell: bash run: | VERSION=${{ needs.modpack-info.outputs.project_version }} sed -i -e "s/DEV/${VERSION}/g" config/bcc-common.toml - 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 .minecraft/* - 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: name: Release needs: [modpack-info, build-cf-modpack, build-mmc-modpack, build-serverpack] if: startsWith(github.ref, 'refs/tags/') uses: ./.github/workflows/release.yml with: project_name: ${{ needs.modpack-info.outputs.project_name }} project_version: ${{ needs.modpack-info.outputs.project_version }} mc_version: ${{ needs.modpack-info.outputs.mc_version }} changelog: ${{ needs.modpack-info.outputs.changelog }} secrets: inherit