Add global livability heat map (65–74°F + low mosquitoes) #7
This file contains hidden or 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: Mod CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| permissions: | |
| contents: read | |
| jobs: | |
| validate: | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: mod | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Java | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: "21" | |
| - name: Set up Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| with: | |
| gradle-version: "8.10.2" | |
| - name: Validate matrix and run common tests | |
| run: | | |
| chmod +x ./gradlew | |
| ./gradlew validateModMatrix :common:test --stacktrace --info | |
| - name: Upload Gradle reports | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: mod-validate-gradle-reports | |
| path: | | |
| mod/**/build/reports/** | |
| mod/**/build/test-results/** | |
| build: | |
| runs-on: ubuntu-latest | |
| needs: validate | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - minecraft-version: "1.21.2" | |
| loader: fabric | |
| - minecraft-version: "1.21.2" | |
| loader: neoforge | |
| - minecraft-version: "1.21.4" | |
| loader: fabric | |
| - minecraft-version: "1.21.4" | |
| loader: forge | |
| - minecraft-version: "1.21.4" | |
| loader: neoforge | |
| - minecraft-version: "1.21.5" | |
| loader: fabric | |
| - minecraft-version: "1.21.5" | |
| loader: forge | |
| - minecraft-version: "1.21.5" | |
| loader: neoforge | |
| - minecraft-version: "1.21.6" | |
| loader: fabric | |
| - minecraft-version: "1.21.6" | |
| loader: forge | |
| - minecraft-version: "1.21.6" | |
| loader: neoforge | |
| - minecraft-version: "1.21.7" | |
| loader: fabric | |
| - minecraft-version: "1.21.7" | |
| loader: forge | |
| - minecraft-version: "1.21.7" | |
| loader: neoforge | |
| - minecraft-version: "1.21.8" | |
| loader: fabric | |
| - minecraft-version: "1.21.8" | |
| loader: forge | |
| - minecraft-version: "1.21.8" | |
| loader: neoforge | |
| - minecraft-version: "1.21.9" | |
| loader: fabric | |
| - minecraft-version: "1.21.9" | |
| loader: forge | |
| - minecraft-version: "1.21.9" | |
| loader: neoforge | |
| - minecraft-version: "1.21.10" | |
| loader: fabric | |
| - minecraft-version: "1.21.10" | |
| loader: forge | |
| - minecraft-version: "1.21.10" | |
| loader: neoforge | |
| - minecraft-version: "1.21.11" | |
| loader: fabric | |
| - minecraft-version: "1.21.11" | |
| loader: forge | |
| - minecraft-version: "1.21.11" | |
| loader: neoforge | |
| defaults: | |
| run: | |
| working-directory: mod | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Java | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: "21" | |
| - name: Set up Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| with: | |
| gradle-version: "8.10.2" | |
| - name: Build matrix project | |
| id: build | |
| env: | |
| MINECRAFT_VERSION: ${{ matrix.minecraft-version }} | |
| LOADER: ${{ matrix.loader }} | |
| run: | | |
| chmod +x ./gradlew | |
| set -o pipefail | |
| VERSION_KEY="${MINECRAFT_VERSION//./_}" | |
| TASK=":versions:mc_${VERSION_KEY}:${LOADER}:build" | |
| LOG_FILE="build-${MINECRAFT_VERSION}-${LOADER}.log" | |
| echo "Building ${TASK}" | |
| ./gradlew "${TASK}" --stacktrace --info 2>&1 | tee "${LOG_FILE}" | |
| echo "log_file=${LOG_FILE}" >> "${GITHUB_OUTPUT}" | |
| - name: Write failure summary | |
| if: failure() | |
| env: | |
| MINECRAFT_VERSION: ${{ matrix.minecraft-version }} | |
| LOADER: ${{ matrix.loader }} | |
| run: | | |
| LOG_FILE="${{ steps.build.outputs.log_file }}" | |
| VERSION_KEY="${MINECRAFT_VERSION//./_}" | |
| { | |
| echo "### Mod build failed: ${LOADER} / ${MINECRAFT_VERSION}" | |
| echo "" | |
| echo "**Gradle task:** \`:versions:mc_${VERSION_KEY}:${LOADER}:build\`" | |
| echo "" | |
| if [ -f "${LOG_FILE}" ]; then | |
| echo "#### Error highlights" | |
| echo '```text' | |
| grep -E "FAILURE:|What went wrong:|Execution failed for task|error:|Caused by:|> Could not|BUILD FAILED" "${LOG_FILE}" | tail -n 40 || true | |
| echo '```' | |
| echo "" | |
| echo "#### Last 120 log lines" | |
| echo '```text' | |
| tail -n 120 "${LOG_FILE}" | |
| echo '```' | |
| else | |
| echo "No build log was captured." | |
| fi | |
| } >> "${GITHUB_STEP_SUMMARY}" | |
| - name: Upload Gradle reports | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: mod-${{ matrix.minecraft-version }}-${{ matrix.loader }}-gradle-reports | |
| path: | | |
| mod/**/build/reports/** | |
| mod/**/build/test-results/** | |
| mod/**/build/tmp/** | |
| mod/build-*.log | |
| summary: | |
| runs-on: ubuntu-latest | |
| needs: [validate, build] | |
| if: always() | |
| steps: | |
| - name: Report overall mod CI status | |
| run: | | |
| { | |
| echo "### Mod CI summary" | |
| echo "" | |
| echo "- validate: ${{ needs.validate.result }}" | |
| echo "- build matrix: ${{ needs.build.result }}" | |
| } >> "${GITHUB_STEP_SUMMARY}" | |
| if [ "${{ needs.validate.result }}" != "success" ] || [ "${{ needs.build.result }}" != "success" ]; then | |
| echo "One or more mod CI jobs failed. Open the failed matrix job for the detailed Gradle log summary." | |
| exit 1 | |
| fi |