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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 56 additions & 29 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
name: baseElectric 1.17 CI
name: baseElectric 1.18 CI

on:
push:
branches: [master-1.17.1, 'feature/**']
branches: [master-1.18.2, 'feature/**']
pull_request:
branches: [master-1.17.1]
branches: [master-1.18.2]

permissions:
contents: read

concurrency:
group: baseelectric-1.17-${{ github.workflow }}-${{ github.ref }}
group: baseelectric-1.18-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
Expand All @@ -24,7 +24,7 @@ jobs:
- name: Use canonical LF dependency inputs
# Apply before every dependency checkout, including OreSpawn.
run: git config --global core.autocrlf false
- name: Require coordinated 1.17.1 dependency pins
- name: Require coordinated 1.18.2 dependency pins
id: pins
shell: bash
run: |
Expand All @@ -35,9 +35,9 @@ jobs:
bm_ref="$(sed -n 's/^basemetals_source_commit=//p' gradle.properties | tr -d '\r')"
bm_sha="$(sed -n 's/^basemetals_deobf_sha256=//p' gradle.properties | tr -d '\r')"
bootstrap_sha="$(sed -n 's/^poweradvantage_unit_bootstrap_sha256=//p' gradle.properties | tr -d '\r')"
if [[ "$pin_state" != "LOCAL_CHECKPOINT" || ! "$power_ref" =~ ^[a-f0-9]{40}$ || ! "$bm_ref" =~ ^[a-f0-9]{40}$ ||
if [[ "$pin_state" != "PUBLISHED_RELEASE" || ! "$power_ref" =~ ^[a-f0-9]{40}$ || ! "$bm_ref" =~ ^[a-f0-9]{40}$ ||
! "$power_sha" =~ ^[A-F0-9]{64}$ || ! "$bm_sha" =~ ^[A-F0-9]{64}$ || ! "$bootstrap_sha" =~ ^[A-F0-9]{64}$ ]]; then
echo "The coordinated basePower and Base Metals 1.17.1 pins are pending" >&2
echo "The coordinated basePower and Base Metals 1.18.2 pins are pending" >&2
exit 1
fi
echo "power_ref=$power_ref" >> "$GITHUB_OUTPUT"
Expand All @@ -46,32 +46,25 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/OreSpawn
ref: b56e2b62a1a6ea4d1dd96f8646a87801a817dbdf
ref: d31f52f296739f34a0c13f554abf3e1ac071ae25
path: .ci-dependencies/OreSpawn
- name: Check out pinned Base Metals
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/BaseMetals
# Local-only startup fix; hosted checkout must wait for authorized source availability.
ref: ${{ steps.pins.outputs.basemetals_ref }}
path: .ci-dependencies/BaseMetals
- name: Check out basePower 1.17.1
- name: Check out basePower 1.18.2
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/basePower
# Local-only Power source; publish upstream before hosted builds.
ref: ${{ steps.pins.outputs.power_ref }}
path: .ci-dependencies/PowerAdvantage
- name: Install pinned Java 25 Mavenizer runtime
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '25.0.3+9.0.LTS'
- name: Install Java 16 production toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '16.0.2+7'
- name: Install Java 8 build utilities
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
Expand All @@ -86,12 +79,22 @@ jobs:
# These are Gradle project properties, not JVM system properties.
shell: bash
run: >-
echo "MMD_GRADLE_TOOLCHAINS=-Porg.gradle.java.installations.paths=$JAVA_HOME,$JAVA_HOME_16_X64,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64
echo "MMD_GRADLE_TOOLCHAINS=-Porg.gradle.java.installations.paths=$JAVA_HOME,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64
-Porg.gradle.java.installations.auto-detect=false
-Porg.gradle.java.installations.auto-download=false" >> "$GITHUB_ENV"
- name: Set up Gradle
uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6
- name: Build 1.17.1 dependency chain
- name: Stage the pinned Forge 40 Mavenizer compatibility fixture
id: mavenizer
shell: bash
run: |
set -euo pipefail
fixture="$RUNNER_TEMP/minecraft-mavenizer-0.5.21-orespawn-1.18.jar"
curl --fail --silent --show-error --location --retry 3 --output "$fixture" \
'https://raw.githubusercontent.com/MinecraftModDevelopmentMods/IronAgeFurniture/8283a09d4c75dc01a5b62a912be722654e960de8/ci-fixtures/tools/minecraft-mavenizer-0.5.21-orespawn-1.18.jar'
printf '%s %s\n' '28A6697BDF6D9500EC0AF9C1C949B9F3ED7DDFDA649CB5CAC4BEEA2E9567570A' "$fixture" | sha256sum --check
echo "fixture=$fixture" >> "$GITHUB_OUTPUT"
- name: Build 1.18.2 dependency chain
id: dependencies
shell: bash
run: |
Expand All @@ -104,47 +107,71 @@ jobs:
chmod +x "$orespawn/gradlew" "$basemetals/gradlew" "$power/gradlew"
(cd "$orespawn" && ./gradlew $MMD_GRADLE_TOOLCHAINS jar --no-daemon --stacktrace)
(cd "$basemetals" && ./gradlew $MMD_GRADLE_TOOLCHAINS jar --no-daemon --stacktrace)
osjar="$orespawn/build/libs-dev/OreSpawn-4.1.0.117011-deobf.jar"
bmjar="$basemetals/build/libs-dev/BaseMetals-3.1.1.117011-deobf.jar"
osjar="$orespawn/build/libs-dev/OreSpawn-4.1.0.118021-deobf.jar"
bmjar="$basemetals/build/libs-dev/BaseMetals-3.1.2.118021-deobf.jar"
(cd "$power" && ./gradlew $MMD_GRADLE_TOOLCHAINS jar verifyReleaseDependencies \
-PbaseMetalsDeobfJar="$bmjar" -PoreSpawnDeobfJar="$osjar" \
--no-daemon --stacktrace)
powerjar="$power/build/libs-dev/basePower-2.4.9.117011-deobf.jar"
powerjar="$power/build/libs-dev/basePower-2.4.10.118021-deobf.jar"
test -f "$osjar" && test -f "$bmjar" && test -f "$powerjar"
release="$RUNNER_TEMP/basePower-2.4.9.117011.jar"
release="$RUNNER_TEMP/basePower-2.4.10.118021.jar"
curl --fail --silent --show-error --location --retry 3 --output "$release" \
'https://maven.moddev.zone/releases/zone/moddev/mc/basepower/basePower/2.4.9.117011/basePower-2.4.9.117011.jar'
'https://maven.moddev.zone/releases/zone/moddev/mc/basepower/basePower/2.4.10.118021/basePower-2.4.10.118021.jar'
power_release_sha=$(sed -n 's/^poweradvantage_runtime_sha256=//p' gradle.properties | tr -d '\r')
printf '%s %s\n' "$power_release_sha" "$release" | sha256sum --check
pin() { sed -n "s/^$1=//p" gradle.properties | tr -d '\r'; }
fetch_runtime() {
local key="$1" url="$2" destination="$3" expected="$4"
[[ "$expected" =~ ^[A-F0-9]{64}$ ]]
curl --fail --silent --show-error --location --retry 3 --output "$destination" "$url"
printf '%s %s\n' "$expected" "$destination" | sha256sum --check
echo "$key=$destination" >> "$GITHUB_OUTPUT"
}
bm_version="$(pin basemetals_version)"
os_version="$(pin orespawn_version)"
forge_target="$(pin minecraft_version)-$(pin forge_version)"
maven='https://maven.moddev.zone/releases/zone/moddev/mc'
fetch_runtime basemetals_runtime "$maven/basemetals/BaseMetals/$bm_version/BaseMetals-$bm_version.jar" \
"$RUNNER_TEMP/BaseMetals-$bm_version.jar" "$(pin basemetals_runtime_sha256)"
fetch_runtime orespawn_runtime "$maven/orespawn/OreSpawn/$os_version/OreSpawn-$os_version.jar" \
"$RUNNER_TEMP/OreSpawn-$os_version.jar" "$(pin orespawn_runtime_sha256)"
fetch_runtime forge_installer "https://maven.minecraftforge.net/net/minecraftforge/forge/$forge_target/forge-$forge_target-installer.jar" \
"$RUNNER_TEMP/forge-$forge_target-installer.jar" "$(pin forge_installer_sha256)"
echo "orespawn=$osjar" >> "$GITHUB_OUTPUT"
echo "basemetals=$bmjar" >> "$GITHUB_OUTPUT"
echo "power=$powerjar" >> "$GITHUB_OUTPUT"
echo "power_runtime=$release" >> "$GITHUB_OUTPUT"
- name: Build and audit release artifacts
run: >-
./gradlew $MMD_GRADLE_TOOLCHAINS clean check build javadoc verifyReleaseDependencies verifyReleaseArtifacts
writeReleaseChecksums verifyEclipseProductionClasspath
writeReleaseChecksums verifyEclipseProductionClasspath verifyLocalRuntimeInputs
-PpowerAdvantageDeobfJar=${{ steps.dependencies.outputs.power }}
-PmavenizerCompatibilityJar=${{ steps.mavenizer.outputs.fixture }}
-PpowerAdvantageUnitBootstrapSource=${{ github.workspace }}/.ci-dependencies/PowerAdvantage/test-rig/unit-bootstrap/ForgeCapabilityBootstrap.java
-PbaseMetalsDeobfJar=${{ steps.dependencies.outputs.basemetals }}
-PoreSpawnDeobfJar=${{ steps.dependencies.outputs.orespawn }}
-PpowerAdvantageRuntimeJar=${{ steps.dependencies.outputs.power_runtime }}
-PbaseMetalsRuntimeJar=${{ steps.dependencies.outputs.basemetals_runtime }}
-PoreSpawnRuntimeJar=${{ steps.dependencies.outputs.orespawn_runtime }}
-PforgeInstallerJar=${{ steps.dependencies.outputs.forge_installer }}
--no-daemon --stacktrace
- name: Upload audited release candidate
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: baseElectric-1.17.1-${{ github.sha }}
name: baseElectric-1.18.2-${{ github.sha }}
if-no-files-found: error
retention-days: 30
path: |
build/libs/baseElectric-2.2.10.117011.jar
build/libs/baseElectric-2.2.10.117011-sources.jar
build/libs/baseElectric-2.2.10.117011-javadoc.jar
build/libs/baseElectric-2.2.11.118021.jar
build/libs/baseElectric-2.2.11.118021-sources.jar
build/libs/baseElectric-2.2.11.118021-javadoc.jar
build/release/SHA256SUMS
CHANGELOG.txt
- name: Upload diagnostics on failure
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: baseElectric-1.17.1-diagnostics-${{ github.sha }}
name: baseElectric-1.18.2-diagnostics-${{ github.sha }}
if-no-files-found: ignore
retention-days: 14
path: |
Expand Down
42 changes: 23 additions & 19 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: CodeQL

on:
push:
branches: [master-1.17.1, 'feature/**']
branches: [master-1.18.2, 'feature/**']
pull_request:
branches: [master-1.17.1]
branches: [master-1.18.2]
schedule:
- cron: '59 7 * * 4'

Expand All @@ -24,7 +24,7 @@ jobs:
- name: Use canonical LF dependency inputs
# Apply before every dependency checkout, including OreSpawn.
run: git config --global core.autocrlf false
- name: Require coordinated 1.17.1 dependency pins
- name: Require coordinated 1.18.2 dependency pins
id: pins
shell: bash
run: |
Expand All @@ -35,9 +35,9 @@ jobs:
bm_ref="$(sed -n 's/^basemetals_source_commit=//p' gradle.properties | tr -d '\r')"
bm_sha="$(sed -n 's/^basemetals_deobf_sha256=//p' gradle.properties | tr -d '\r')"
bootstrap_sha="$(sed -n 's/^poweradvantage_unit_bootstrap_sha256=//p' gradle.properties | tr -d '\r')"
if [[ "$pin_state" != "LOCAL_CHECKPOINT" || ! "$power_ref" =~ ^[a-f0-9]{40}$ || ! "$bm_ref" =~ ^[a-f0-9]{40}$ ||
if [[ "$pin_state" != "PUBLISHED_RELEASE" || ! "$power_ref" =~ ^[a-f0-9]{40}$ || ! "$bm_ref" =~ ^[a-f0-9]{40}$ ||
! "$power_sha" =~ ^[A-F0-9]{64}$ || ! "$bm_sha" =~ ^[A-F0-9]{64}$ || ! "$bootstrap_sha" =~ ^[A-F0-9]{64}$ ]]; then
echo "The coordinated basePower and Base Metals 1.17.1 pins are pending" >&2
echo "The coordinated basePower and Base Metals 1.18.2 pins are pending" >&2
exit 1
fi
echo "power_ref=$power_ref" >> "$GITHUB_OUTPUT"
Expand All @@ -46,32 +46,25 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/OreSpawn
ref: b56e2b62a1a6ea4d1dd96f8646a87801a817dbdf
ref: d31f52f296739f34a0c13f554abf3e1ac071ae25
path: .ci-dependencies/OreSpawn
- name: Check out pinned Base Metals
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/BaseMetals
# Local-only startup fix; hosted checkout must wait for authorized source availability.
ref: ${{ steps.pins.outputs.basemetals_ref }}
path: .ci-dependencies/BaseMetals
- name: Check out basePower 1.17.1
- name: Check out basePower 1.18.2
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: MinecraftModDevelopmentMods/basePower
# Local-only Power source; publish upstream before hosted builds.
ref: ${{ steps.pins.outputs.power_ref }}
path: .ci-dependencies/PowerAdvantage
- name: Install pinned Java 25 Mavenizer runtime
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '25.0.3+9.0.LTS'
- name: Install Java 16 production toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
distribution: temurin
java-version: '16.0.2+7'
- name: Install Java 8 build utilities
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
Expand All @@ -86,12 +79,22 @@ jobs:
# These are Gradle project properties, not JVM system properties.
shell: bash
run: >-
echo "MMD_GRADLE_TOOLCHAINS=-Porg.gradle.java.installations.paths=$JAVA_HOME,$JAVA_HOME_16_X64,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64
echo "MMD_GRADLE_TOOLCHAINS=-Porg.gradle.java.installations.paths=$JAVA_HOME,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64
-Porg.gradle.java.installations.auto-detect=false
-Porg.gradle.java.installations.auto-download=false" >> "$GITHUB_ENV"
- name: Set up Gradle
uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6
- name: Build 1.17.1 dependency chain
- name: Stage the pinned Forge 40 Mavenizer compatibility fixture
id: mavenizer
shell: bash
run: |
set -euo pipefail
fixture="$RUNNER_TEMP/minecraft-mavenizer-0.5.21-orespawn-1.18.jar"
curl --fail --silent --show-error --location --retry 3 --output "$fixture" \
'https://raw.githubusercontent.com/MinecraftModDevelopmentMods/IronAgeFurniture/8283a09d4c75dc01a5b62a912be722654e960de8/ci-fixtures/tools/minecraft-mavenizer-0.5.21-orespawn-1.18.jar'
printf '%s %s\n' '28A6697BDF6D9500EC0AF9C1C949B9F3ED7DDFDA649CB5CAC4BEEA2E9567570A' "$fixture" | sha256sum --check
echo "fixture=$fixture" >> "$GITHUB_OUTPUT"
- name: Build 1.18.2 dependency chain
id: dependencies
shell: bash
run: |
Expand All @@ -104,12 +107,12 @@ jobs:
chmod +x "$orespawn/gradlew" "$basemetals/gradlew" "$power/gradlew"
(cd "$orespawn" && ./gradlew $MMD_GRADLE_TOOLCHAINS jar --no-daemon --stacktrace)
(cd "$basemetals" && ./gradlew $MMD_GRADLE_TOOLCHAINS jar --no-daemon --stacktrace)
osjar="$orespawn/build/libs-dev/OreSpawn-4.1.0.117011-deobf.jar"
bmjar="$basemetals/build/libs-dev/BaseMetals-3.1.1.117011-deobf.jar"
osjar="$orespawn/build/libs-dev/OreSpawn-4.1.0.118021-deobf.jar"
bmjar="$basemetals/build/libs-dev/BaseMetals-3.1.2.118021-deobf.jar"
(cd "$power" && ./gradlew $MMD_GRADLE_TOOLCHAINS jar verifyReleaseDependencies \
-PbaseMetalsDeobfJar="$bmjar" -PoreSpawnDeobfJar="$osjar" \
--no-daemon --stacktrace)
powerjar="$power/build/libs-dev/basePower-2.4.9.117011-deobf.jar"
powerjar="$power/build/libs-dev/basePower-2.4.10.118021-deobf.jar"
test -f "$osjar" && test -f "$bmjar" && test -f "$powerjar"
echo "orespawn=$osjar" >> "$GITHUB_OUTPUT"
echo "basemetals=$bmjar" >> "$GITHUB_OUTPUT"
Expand All @@ -124,6 +127,7 @@ jobs:
chmod +x ./gradlew
./gradlew $MMD_GRADLE_TOOLCHAINS clean classes --rerun-tasks --no-build-cache --no-daemon --stacktrace \
-PpowerAdvantageDeobfJar=${{ steps.dependencies.outputs.power }} \
-PmavenizerCompatibilityJar=${{ steps.mavenizer.outputs.fixture }} \
-PbaseMetalsDeobfJar=${{ steps.dependencies.outputs.basemetals }} \
-PoreSpawnDeobfJar=${{ steps.dependencies.outputs.orespawn }}
- name: Analyze
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/validate-gradle-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ name: Validate Gradle Wrapper
on:
push:
branches:
- master-1.17.1
- master-1.18.2
- 'feature/**'
pull_request:
branches:
- master-1.17.1
- master-1.18.2

permissions:
contents: read
Expand Down
6 changes: 6 additions & 0 deletions CHANGELOG.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
baseElectric 2.2.11.118021 (Minecraft 1.18.2)

- Bring baseElectric to Minecraft 1.18.2, with the same machines and recipes.
- Keep saved power, inventories, drill facings and hydroturbines when upgrading.
- Use the released basePower 2.4.10.118021 and Base Metals 3.1.2 save hook.

baseElectric 2.2.10.117011 (Minecraft 1.17.1)

- Continue Electric Advantage as baseElectric, with its blocks and items in the shared basePower creative tab.
Expand Down
Loading
Loading