Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
126 changes: 82 additions & 44 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
name: IronAgeFurniture 1.10 CI
name: IronAgeFurniture 1.10.2 CI

on:
push:
branches:
- master-1.10
- "feature/**"
- 'feature/**'
pull_request:
branches:
- master-1.10
Expand All @@ -17,79 +17,117 @@ concurrency:
cancel-in-progress: true

jobs:
build:
name: Build, test, and audit
cold-forge-bootstrap:
name: Cold Forge bootstrap
runs-on: ubuntu-latest
timeout-minutes: 60

steps:
- name: Check out source
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7

- name: Check out pinned OreSpawn
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- name: Install pinned Java 25 ForgeGradle Mavenizer runtime
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
repository: MinecraftModDevelopmentMods/OreSpawn
ref: 5a50df1158e948c8db55814e819090b34c12d765
path: .ci-dependencies/OreSpawn
distribution: temurin
java-version: '25.0.3+9.0.LTS'

- name: Check out pinned Power Advantage
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- name: Install pinned Java 8 compiler toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
repository: MinecraftModDevelopmentMods/PowerAdvantage
ref: 88e9818b4b7011a430436b40367fb1609073875b
path: .ci-dependencies/PowerAdvantage
distribution: temurin
java-version: '8.0.502+7'

- name: Install pinned Java 17 Gradle runtime
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '17.0.1+12'

- name: Bootstrap Forge from an empty cache
shell: bash
env:
GRADLE_USER_HOME: ${{ runner.temp }}/iron-age-furniture-cold-gradle
run: |
set -euo pipefail
test ! -e .gradle
test ! -e "$GRADLE_USER_HOME"
mkdir -p "$GRADLE_USER_HOME"
chmod +x ./gradlew
./gradlew verifyMavenizerCompatibilityFixture help \
--no-daemon --no-build-cache --stacktrace --max-workers=2 \
-Dorg.gradle.java.installations.paths="$JAVA_HOME,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64" \
-Dorg.gradle.java.installations.auto-detect=false \
-Dorg.gradle.java.installations.auto-download=false \
| tee "$RUNNER_TEMP/cold-forge-bootstrap.log"
find "$GRADLE_USER_HOME" .gradle/mavenizer \
-type f \( -name '*.jar' -o -name '*.json' -o -name '*.pom' -o -name '*.module' \) -print0 \
| sort -z | xargs -0 -r sha256sum > "$RUNNER_TEMP/mavenizer-before.sha256"
test -s "$RUNNER_TEMP/mavenizer-before.sha256"

- name: Verify same-cache preparation is idempotent
shell: bash
env:
GRADLE_USER_HOME: ${{ runner.temp }}/iron-age-furniture-cold-gradle
run: |
set -euo pipefail
./gradlew verifyMavenizerCompatibilityFixture help \
--no-daemon --no-build-cache --stacktrace --max-workers=2 \
-Dorg.gradle.java.installations.paths="$JAVA_HOME,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64" \
-Dorg.gradle.java.installations.auto-detect=false \
-Dorg.gradle.java.installations.auto-download=false
find "$GRADLE_USER_HOME" .gradle/mavenizer \
-type f \( -name '*.jar' -o -name '*.json' -o -name '*.pom' -o -name '*.module' \) -print0 \
| sort -z | xargs -0 -r sha256sum > "$RUNNER_TEMP/mavenizer-after.sha256"
diff -u "$RUNNER_TEMP/mavenizer-before.sha256" "$RUNNER_TEMP/mavenizer-after.sha256"

build:
name: Build, test, and audit
runs-on: ubuntu-latest
timeout-minutes: 60

- name: Install pinned Java 25 Mavenizer runtime
steps:
- name: Check out source
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7

- name: Install pinned Java 25 ForgeGradle Mavenizer runtime
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: "25.0.3+9.0.LTS"
java-version: '25.0.3+9.0.LTS'

- name: Install Java 8 toolchain
- name: Install pinned Java 8 compiler toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: "8.0.502+7"
java-version: '8.0.502+7'

- name: Install Java 17 for Gradle
- name: Install pinned Java 17 Gradle runtime
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: microsoft
java-version: "17"
distribution: temurin
java-version: '17.0.1+12'

- name: Set up Gradle
uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6

- name: Build and test pinned Power Advantage fluid API
id: poweradvantage
shell: bash
run: |
set -euo pipefail
dependency_root="$GITHUB_WORKSPACE/.ci-dependencies"
orespawn="$dependency_root/OreSpawn"
poweradvantage="$dependency_root/PowerAdvantage"
chmod +x "$orespawn/gradlew" "$poweradvantage/gradlew"
(cd "$orespawn" && ./gradlew deobfJar --no-daemon --stacktrace)
orespawn_jar="$orespawn/build/libs-dev/OreSpawn-4.0.8.110021-deobf.jar"
test -f "$orespawn_jar"
(cd "$poweradvantage" && ./gradlew \
test --tests cyano.poweradvantage.api.fluid.FluidNetworkApiTest deobfJar \
-PoreSpawnDeobfJar="$orespawn_jar" --no-daemon --stacktrace)
poweradvantage_jar="$poweradvantage/build/libs-dev/PowerAdvantage-2.4.3.110021-deobf.jar"
test -f "$poweradvantage_jar"
echo "jar=$poweradvantage_jar" >> "$GITHUB_OUTPUT"

- name: Build, check, document, and audit
- name: Build, test, document, and audit
run: |
chmod +x ./gradlew
./gradlew clean check build javadoc verifyReleaseArtifacts verifyReleaseChecksums \
verifyEclipseProductionClasspath --no-daemon --stacktrace \
-PpowerAdvantageDeobfJar="${{ steps.poweradvantage.outputs.jar }}" \
-Dorg.gradle.java.installations.paths="$JAVA_HOME_25_X64,$JAVA_HOME_8_X64,$JAVA_HOME" \
--no-daemon --stacktrace \
-Dorg.gradle.java.installations.paths="$JAVA_HOME,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64" \
-Dorg.gradle.java.installations.auto-detect=false \
-Dorg.gradle.java.installations.auto-download=false

- name: Generate and audit Eclipse production launches
run: >-
./gradlew genEclipseRuns eclipse isolateEclipseProductionRuns verifyEclipseProductionClasspath
--no-daemon --stacktrace
-Dorg.gradle.java.installations.paths="$JAVA_HOME,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64"
-Dorg.gradle.java.installations.auto-detect=false
-Dorg.gradle.java.installations.auto-download=false

- name: Upload audited release candidate
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
Expand Down
71 changes: 24 additions & 47 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ on:
push:
branches:
- master-1.10
- "feature/**"
- 'feature/**'
pull_request:
branches:
- master-1.10
schedule:
- cron: "43 7 * * 4"
- cron: '43 7 * * 4'

permissions:
actions: read
Expand All @@ -26,60 +26,27 @@ jobs:
- name: Check out source
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7

- name: Check out pinned OreSpawn
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/OreSpawn
ref: 5a50df1158e948c8db55814e819090b34c12d765
path: .ci-dependencies/OreSpawn

- name: Check out pinned Power Advantage
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/PowerAdvantage
ref: 88e9818b4b7011a430436b40367fb1609073875b
path: .ci-dependencies/PowerAdvantage

- name: Install pinned Java 25 Mavenizer runtime
- name: Install pinned Java 25 ForgeGradle Mavenizer runtime
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: "25.0.3+9.0.LTS"
java-version: '25.0.3+9.0.LTS'

- name: Install Java 8 toolchain
- name: Install pinned Java 8 compiler toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: "8.0.502+7"
java-version: '8.0.502+7'

- name: Install Java 17 for Gradle
- name: Install pinned Java 17 Gradle runtime
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: microsoft
java-version: "17"
distribution: temurin
java-version: '17.0.1+12'

- name: Set up Gradle
uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6

- name: Build and test pinned Power Advantage fluid API
id: poweradvantage
shell: bash
run: |
set -euo pipefail
dependency_root="$GITHUB_WORKSPACE/.ci-dependencies"
orespawn="$dependency_root/OreSpawn"
poweradvantage="$dependency_root/PowerAdvantage"
chmod +x "$orespawn/gradlew" "$poweradvantage/gradlew"
(cd "$orespawn" && ./gradlew deobfJar --no-daemon --stacktrace)
orespawn_jar="$orespawn/build/libs-dev/OreSpawn-4.0.8.110021-deobf.jar"
test -f "$orespawn_jar"
(cd "$poweradvantage" && ./gradlew \
test --tests cyano.poweradvantage.api.fluid.FluidNetworkApiTest deobfJar \
-PoreSpawnDeobfJar="$orespawn_jar" --no-daemon --stacktrace)
poweradvantage_jar="$poweradvantage/build/libs-dev/PowerAdvantage-2.4.3.110021-deobf.jar"
test -f "$poweradvantage_jar"
echo "jar=$poweradvantage_jar" >> "$GITHUB_OUTPUT"

- name: Initialize CodeQL
uses: github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4
with:
Expand All @@ -88,12 +55,22 @@ jobs:
- name: Compile production code
run: |
chmod +x ./gradlew
# CodeQL must observe javac; a Gradle cache hit produces an empty database.
./gradlew clean classes --no-build-cache --no-daemon --stacktrace \
-PpowerAdvantageDeobfJar="${{ steps.poweradvantage.outputs.jar }}" \
-Dorg.gradle.java.installations.paths="$JAVA_HOME_25_X64,$JAVA_HOME_8_X64,$JAVA_HOME" \
-Dorg.gradle.java.installations.auto-detect=false \
gradle_args=(
clean classes --rerun-tasks --no-build-cache --no-daemon --stacktrace
"-Dorg.gradle.java.installations.paths=$JAVA_HOME,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64"
-Dorg.gradle.java.installations.auto-detect=false
-Dorg.gradle.java.installations.auto-download=false
)
for attempt in 1 2 3; do
if ./gradlew "${gradle_args[@]}"; then
exit 0
fi
if [ "$attempt" -eq 3 ]; then
echo "CodeQL compilation failed after $attempt attempts." >&2
exit 1
fi
echo "::warning::CodeQL compilation attempt $attempt failed; retrying with the preserved Forge cache."
done

- name: Analyze
uses: github/codeql-action/analyze@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4
55 changes: 3 additions & 52 deletions .github/workflows/publish-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -317,22 +317,6 @@ jobs:
with:
ref: ${{ needs.preflight.outputs.release_sha }}

- name: Check out pinned OreSpawn for legacy targets
if: needs.preflight.outputs.minecraft_version == '1.10.2'
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/OreSpawn
ref: 5a50df1158e948c8db55814e819090b34c12d765
path: .ci-dependencies/OreSpawn

- name: Check out pinned Power Advantage for legacy targets
if: needs.preflight.outputs.minecraft_version == '1.10.2'
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/PowerAdvantage
ref: 88e9818b4b7011a430436b40367fb1609073875b
path: .ci-dependencies/PowerAdvantage

- name: Install pinned Java 25 Mavenizer runtime
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
Expand Down Expand Up @@ -386,33 +370,9 @@ jobs:
done
echo "paths=$paths" >> "$GITHUB_OUTPUT"

- name: Build pinned legacy dependency chain
if: needs.preflight.outputs.minecraft_version == '1.10.2'
id: legacy-dependencies
shell: bash
run: |
set -euo pipefail
dependency_root="$GITHUB_WORKSPACE/.ci-dependencies"
orespawn="$dependency_root/OreSpawn"
poweradvantage="$dependency_root/PowerAdvantage"
chmod +x "$orespawn/gradlew" "$poweradvantage/gradlew"
(cd "$orespawn" && ./gradlew deobfJar --no-daemon --stacktrace)
orespawn_jar="$orespawn/build/libs-dev/OreSpawn-4.0.8.110021-deobf.jar"
test -f "$orespawn_jar"
(cd "$poweradvantage" && ./gradlew \
test --tests cyano.poweradvantage.api.fluid.FluidNetworkApiTest deobfJar \
-PoreSpawnDeobfJar="$orespawn_jar" --no-daemon --stacktrace)
poweradvantage_jar="$poweradvantage/build/libs-dev/PowerAdvantage-2.4.3.110021-deobf.jar"
test -f "$poweradvantage_jar"
echo "poweradvantage_jar=$poweradvantage_jar" >> "$GITHUB_OUTPUT"
echo "orespawn_jar=$orespawn_jar" >> "$GITHUB_OUTPUT"

- name: Build, test, and audit once
env:
LOADER_NAME: ${{ needs.preflight.outputs.loader_name }}
MINECRAFT_VERSION: ${{ needs.preflight.outputs.minecraft_version }}
POWERADVANTAGE_JAR: ${{ steps.legacy-dependencies.outputs.poweradvantage_jar }}
ORESPAWN_JAR: ${{ steps.legacy-dependencies.outputs.orespawn_jar }}
run: |
set -euo pipefail
chmod +x ./gradlew
Expand All @@ -421,26 +381,17 @@ jobs:
-Dorg.gradle.java.installations.auto-detect=false
-Dorg.gradle.java.installations.auto-download=false
)
legacy_args=()
if [[ "$MINECRAFT_VERSION" == "1.10.2" ]]; then
test -f "$POWERADVANTAGE_JAR"
test -f "$ORESPAWN_JAR"
legacy_args+=(
"-PpowerAdvantageDeobfJar=$POWERADVANTAGE_JAR"
"-PoreSpawnDeobfJar=$ORESPAWN_JAR"
)
fi
if [[ "$LOADER_NAME" == "neoforge" ]]; then
# NeoGradle resolves model inputs during configuration under build/tmp.
# Cleaning in the same invocation removes those inputs before setup runs.
./gradlew clean --no-daemon --stacktrace --max-workers=2 \
"${legacy_args[@]}" "${java_args[@]}"
"${java_args[@]}"
./gradlew check build javadoc verifyReleaseArtifacts verifyReleaseChecksums \
--no-daemon --stacktrace --max-workers=2 "${legacy_args[@]}" "${java_args[@]}"
--no-daemon --stacktrace --max-workers=2 "${java_args[@]}"
else
# Preserve the established Forge release lifecycle.
./gradlew clean check build javadoc verifyReleaseArtifacts verifyReleaseChecksums \
--no-daemon --stacktrace "${legacy_args[@]}" "${java_args[@]}"
--no-daemon --stacktrace "${java_args[@]}"
fi

- name: Stage the immutable release artifact
Expand Down
Loading
Loading