Build #28
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
run-name: Build #${{ github.run_number }} by @${{ github.actor }} | |
env: | |
RELEASE_TYPE: "release" | |
MC_VERSION: "1.12.2" | |
on: | |
push: | |
branches: | |
- pakku | |
# tags: | |
# - "*.*.*" | |
concurrency: | |
group: ${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
info: | |
name: Project Info | |
runs-on: ubuntu-latest | |
outputs: | |
project_version: ${{ steps.project_version.outputs.tag }} | |
project_name: ${{ steps.project_name.outputs.value }} | |
changelog: ${{ steps.changelog.outputs.description }} | |
diff: ${{ steps.lockfile.outputs.diff }} | |
release_type: ${{ env.RELEASE_TYPE }} | |
mc_version: ${{ env.MC_VERSION }} | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
- name: Check lockfile | |
shell: bash | |
run: | | |
set +e | |
echo "🔎 Getting modpack info..." | |
if [ ! -f pakku-lock.json ]; then | |
echo "::error::Could not find pakku-lock.json" && exit 1 | |
else | |
echo "✔️ pakku-lock.json" | |
fi | |
if [ ! -f pakku.json ]; then | |
echo "::error::Could not find pakku.json" && exit 1 | |
else | |
echo "✔️ pakku.json" | |
fi | |
- name: Get previous lockfile | |
id: lockfile | |
shell: bash | |
run: | | |
set +e | |
echo "🔎 Getting previous lockfile..." | |
if [ "$latest_tag" = ${{ github.ref_name }} ]; then | |
latest_tag_prev=$(git describe --tags --abbrev=0 $(git describe --tags --abbrev=0)^) | |
latest_tagged_commit=$(git rev-list -n 1 --pretty=format:"%h" $latest_tag_prev | sed -n 2p) | |
if git cat-file -e $latest_tagged_commit:./pakku-lock.json; then | |
git show $latest_tagged_commit:./pakku-lock.json > ./pakku-lock-prev.json | |
java -jar ./pakku.jar diff -v --markdown PROJECTS_DIFF.md ./pakku-lock-pre.json ./pakku-lock.json | |
else | |
echo "❌ File pakku-lock.json not found in previous tag" | |
fi | |
fi | |
if [ ! -f PROJECTS_DIFF.md ]; then | |
touch PROJECTS_DIFF.md | |
fi | |
{ | |
echo 'diff<<EOF' | |
cat -v --show-nonprinting PROJECTS_DIFF.md | |
echo EOF | |
} >> "$GITHUB_OUTPUT" | |
- name: Get Project Name | |
id: project_name | |
uses: ActionsTools/[email protected] | |
with: | |
file_path: "pakku.json" | |
prop_path: "name" | |
- name: Get Project Version | |
id: project_version | |
uses: "WyriHaximus/[email protected]" | |
with: | |
fallback: build.${{ github.run_number }} | |
- name: Changelog Parser | |
id: changelog | |
uses: coditory/[email protected] | |
with: | |
path: CHANGELOG.md | |
- name: Generate list using Markdown | |
run: | | |
echo "📃 Project Name=${{ steps.project_name.outputs.value }}" >> $GITHUB_STEP_SUMMARY | |
echo "📃 Project Version=${{ steps.project_version.outputs.tag }}" >> $GITHUB_STEP_SUMMARY | |
echo "📃 MC Versions=${{ env.MC_VERSION }}" >> $GITHUB_STEP_SUMMARY | |
echo "📃 Release Type=${{ env.RELEASE_TYPE }}" >> $GITHUB_STEP_SUMMARY | |
echo "${{ steps.changelog.outputs.description }}" >> $GITHUB_STEP_SUMMARY | |
echo "${{ steps.lockfile.outputs.diff }}" >> $GITHUB_STEP_SUMMARY | |
build-modpack: | |
name: Build Modpack | |
runs-on: ubuntu-latest | |
needs: [info] | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
- name: Replace strings | |
shell: bash | |
run: | | |
set +e | |
grooovy="./groovy/runConfig.json" | |
cat <<< $(jq '.debug = false' $grooovy) > $grooovy | |
sed -i -e "s/DEV/${{ needs.info.outputs.project_version }}/g" pakku.json | |
- name: Cache pakku | |
uses: actions/[email protected] | |
with: | |
path: build/.cache | |
key: ${{ runner.OS }}-pakku-cache-${{ hashFiles('build/.cache/') }} | |
restore-keys: | | |
${{ runner.OS }}-pakku-cache- | |
- name: Export modpack | |
run: | | |
java -jar ./pakku.jar export | |
- name: Rename artifact curseforge | |
run: | | |
cd ./build/curseforge/ | |
mv *.zip $(basename -s .zip *.zip)-curseforge.zip | |
- name: Upload artifact CurseForge | |
uses: actions/[email protected] | |
with: | |
name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-curseforge | |
path: ./build/curseforge/${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-curseforge.zip | |
if-no-files-found: error | |
- name: Rename artifact modrinth | |
run: | | |
cd ./build/modrinth/ | |
mv *.mrpack $(basename -s .mrpack *.mrpack)-modrinth.mrpack | |
- name: Upload artifact modrinth | |
uses: actions/[email protected] | |
with: | |
name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-modrinth | |
path: ./build/modrinth/${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-modrinth.mrpack | |
if-no-files-found: warn | |
build-server: | |
name: Build Server Pack | |
runs-on: ubuntu-latest | |
needs: [info] | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
- name: Replace strings | |
shell: bash | |
run: | | |
set +e | |
grooovy="./groovy/runConfig.json" | |
cat <<< $(jq '.debug = false' $grooovy) > $grooovy | |
sed -i -e "s/DEV/${{ needs.info.outputs.project_version }}/g" pakku.json | |
- name: Cache pakku | |
uses: actions/[email protected] | |
with: | |
path: build/.cache | |
key: ${{ runner.OS }}-pakku-cache-${{ hashFiles('build/.cache/') }} | |
restore-keys: | | |
${{ runner.OS }}-pakku-cache- | |
- name: Export modpack | |
run: | | |
mv -vf ./.pakku/server-overrides/* ./ | |
java -jar ./pakku.jar export | |
- name: Rename artifact server | |
run: | | |
cd ./build/serverpack/ | |
mv *.zip $(basename -s .zip *.zip)-serverpack.zip | |
- name: Upload artifact server | |
uses: actions/[email protected] | |
with: | |
name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-serverpack | |
path: ./build/serverpack/${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-serverpack.zip | |
if-no-files-found: error | |
build-multimc: | |
name: Build MultiMC Pack | |
runs-on: ubuntu-latest | |
needs: [info] | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
- name: Replace strings | |
shell: bash | |
run: | | |
set +e | |
grooovy="./groovy/runConfig.json" | |
cat <<< $(jq '.debug = false' $grooovy) > $grooovy | |
- name: Cache pakku | |
uses: actions/[email protected] | |
with: | |
path: build/.cache | |
key: ${{ runner.OS }}-pakku-cache-${{ hashFiles('build/.cache/') }} | |
restore-keys: | | |
${{ runner.OS }}-pakku-cache- | |
- name: Export | |
run: | | |
java -jar pakku.jar --debug fetch | |
java -jar pakku.jar --debug export | |
- name: Move files | |
run: | | |
ls | |
mkdir -p .pakku/multimc-overrides/flame | |
mv -vf ./build/.cache/curseforge/manifest.json .pakku/multimc-overrides/flame/manifest.json | |
mv -vf ./build/.cache/curseforge/overrides .pakku/multimc-overrides/.minecraft | |
mv -vf ./mods .pakku/multimc-overrides/.minecraft/mods | |
cd .pakku/multimc-overrides/ | |
zip -r ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-multimc.zip icon.png mmc-pack.json instance.cfg .minecraft/ flame/ | |
- name: Upload zip multimc | |
uses: actions/[email protected] | |
with: | |
name: ${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-multimc | |
path: .pakku/multimc-overrides/${{ needs.info.outputs.project_name }}-${{ needs.info.outputs.project_version }}-multimc.zip | |
if-no-files-found: error | |
release: | |
name: Release | |
needs: [info, build-modpack, build-server, build-multimc] | |
# if: startsWith(github.ref, 'refs/tags/') | |
uses: ./.github/workflows/release.yml | |
with: | |
project_name: ${{ needs.info.outputs.project_name }} | |
project_version: ${{ needs.info.outputs.project_version }} | |
mc_version: ${{ needs.info.outputs.mc_version }} | |
release_type: ${{ needs.info.outputs.release_type }} | |
changelog: ${{ needs.info.outputs.changelog }} | |
diff: ${{ needs.info.outputs.diff }} | |
secrets: inherit |