Skip to content

Commit eb48ccc

Browse files
authored
Merge pull request #27 from SkyBlade1978/feature/prepare-basesteam-1.20.6
Bring baseSteam to Minecraft 1.20.6
2 parents fa896b8 + 1de10a3 commit eb48ccc

135 files changed

Lines changed: 1955 additions & 1490 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/verify-published-pins.sh‎

Lines changed: 45 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,55 @@ value() { sed -n "s/^$1=//p" gradle.properties | tr -d '\r'; }
66
require_merged() {
77
local repo="$1" ref="$2" status
88
[[ "$ref" =~ ^[a-f0-9]{40}$ ]]
9-
status="$(gh api "repos/MinecraftModDevelopmentMods/$repo/compare/$ref...master-1.20.1" --jq '.status')"
9+
status="$(gh api "repos/MinecraftModDevelopmentMods/$repo/compare/$ref...master-1.20.6" --jq '.status')"
1010
case "$status" in
1111
identical|ahead) ;;
12-
*) echo "::error::$repo $ref is not on upstream master-1.20.1 ($status)."; exit 1 ;;
12+
*) echo "::error::$repo $ref is not on upstream master-1.20.6 ($status)."; exit 1 ;;
1313
esac
1414
}
1515

16-
file_id="$(value poweradvantage_public_file_id)"
17-
expected="$(value poweradvantage_player_sha256)"
18-
if [[ ! "$file_id" =~ ^[1-9][0-9]*$ || ! "$expected" =~ ^[A-F0-9]{64}$ ]]; then
19-
echo '::error::A verified public basePower 1.20.1 file ID and player checksum are required.'
20-
exit 1
21-
fi
22-
require_merged basePower "$(value poweradvantage_source_ref)"
16+
download() {
17+
local url="$1" expected="$2" path="$3"
18+
[[ "$expected" =~ ^[A-F0-9]{64}$ ]]
19+
curl --fail --silent --show-error --location --proto '=https' --proto-redir '=https' \
20+
--retry 3 --output "$path" "$url"
21+
printf '%s %s\n' "$expected" "$path" | sha256sum -c -
22+
}
23+
24+
public_jar() {
25+
local name="$1" project="$2" id="$3" sha="$4" jar="$5"
26+
if [[ ! "$id" =~ ^[1-9][0-9]*$ ]]; then
27+
echo "::error::A verified public $name file ID is required."
28+
exit 1
29+
fi
30+
download "https://www.curseforge.com/api/v1/mods/$project/files/$id/download" "$sha" "$jar"
31+
}
32+
33+
power_ref="$(value poweradvantage_source_ref)"
34+
orespawn_ref="$(value orespawn_source_commit)"
35+
require_merged basePower "$power_ref"
2336
require_merged BaseMetals "$(value basemetals_source_commit)"
37+
require_merged OreSpawn "$orespawn_ref"
38+
39+
inputs="${RUNNER_TEMP:?}/forge50-release-dependencies"
40+
mkdir -p "$inputs"
41+
power="$inputs/basePower-$(value poweradvantage_version).jar"
42+
metals="$inputs/BaseMetals-$(value basemetals_version).jar"
43+
orespawn="$inputs/OreSpawn-$(value orespawn_version).jar"
44+
public_jar basePower 1780140 "$(value poweradvantage_public_file_id)" "$(value poweradvantage_deobf_sha256)" "$power"
45+
public_jar BaseMetals 240967 "$(value basemetals_public_file_id)" "$(value basemetals_deobf_sha256)" "$metals"
46+
public_jar OreSpawn 245586 "$(value orespawn_public_file_id)" "$(value orespawn_deobf_sha256)" "$orespawn"
2447

25-
player="${RUNNER_TEMP:?}/basePower-public-player.jar"
26-
curl --fail --silent --show-error --location --proto '=https' --proto-redir '=https' \
27-
--output "$player" "https://www.curseforge.com/api/v1/mods/1780140/files/$file_id/download"
28-
read -r actual _ < <(sha256sum < "$player")
29-
if [[ "${actual^^}" != "$expected" ]]; then
30-
echo "::error::Public basePower file $file_id SHA-256 is ${actual^^}, expected $expected."
31-
exit 1
32-
fi
33-
printf 'power_player=%s\n' "$player" >> "${GITHUB_OUTPUT:?}"
48+
installer="$inputs/forge-1.20.6-50.2.0-installer.jar"
49+
download 'https://maven.minecraftforge.net/net/minecraftforge/forge/1.20.6-50.2.0/forge-1.20.6-50.2.0-installer.jar' \
50+
"$(value forge_installer_sha256)" "$installer"
51+
{
52+
printf 'power_ref=%s\n' "$power_ref"
53+
printf 'orespawn_ref=%s\n' "$orespawn_ref"
54+
} >> "${GITHUB_OUTPUT:?}"
55+
{
56+
printf 'POWER_PLAYER=%s\n' "$power"
57+
printf 'METALS_PLAYER=%s\n' "$metals"
58+
printf 'ORESPAWN_PLAYER=%s\n' "$orespawn"
59+
printf 'FORGE_INSTALLER=%s\n' "$installer"
60+
} >> "${GITHUB_ENV:?}"

‎.github/workflows/ci.yml‎

Lines changed: 46 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -1,173 +1,119 @@
1-
name: baseSteam 1.20 CI
1+
name: baseSteam 1.20.6 CI
22

33
on:
44
push:
5-
branches: [master-1.20.1, feature/basesteam-1.20.1-port, feature/prepare-basesteam-1.20.1]
5+
branches: [master-1.20.6, 'feature/**']
66
pull_request:
7-
branches: [master-1.20.1]
7+
branches: [master-1.20.6]
88

99
permissions:
1010
contents: read
1111

1212
concurrency:
13-
group: basesteam-1.20-${{ github.workflow }}-${{ github.ref }}
13+
group: basesteam-1.20.6-${{ github.workflow }}-${{ github.ref }}
1414
cancel-in-progress: true
1515

1616
jobs:
1717
build:
1818
name: Build, test, and audit
1919
runs-on: ubuntu-latest
20-
timeout-minutes: 105
20+
timeout-minutes: 75
2121
steps:
2222
- name: Check out baseSteam
2323
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
24-
- name: Verify merged dependency pins and public basePower bytes
24+
- name: Use canonical LF dependency inputs
25+
run: git config --global core.autocrlf false
26+
- name: Verify merged and public dependency pins
2527
id: public-pins
2628
env:
2729
GH_TOKEN: ${{ github.token }}
2830
run: bash .github/verify-published-pins.sh
29-
- name: Validate coordinated dependency pins
30-
shell: bash
31-
run: |
32-
set -euo pipefail
33-
power_ref=$(sed -n 's/^poweradvantage_source_ref=//p' gradle.properties | tr -d '\r')
34-
power_hash=$(sed -n 's/^poweradvantage_deobf_sha256=//p' gradle.properties | tr -d '\r')
35-
if [[ ! "$power_ref" =~ ^[a-f0-9]{40}$ || ! "$power_hash" =~ ^[A-F0-9]{64}$ ]]; then
36-
echo "::error::The exact basePower 1.20.1 dependency pin is pending."
37-
exit 1
38-
fi
39-
bm_ref=$(sed -n 's/^basemetals_source_commit=//p' gradle.properties | tr -d '\r')
40-
bm_hash=$(sed -n 's/^basemetals_deobf_sha256=//p' gradle.properties | tr -d '\r')
41-
if [[ ! "$bm_ref" =~ ^[a-f0-9]{40}$ || ! "$bm_hash" =~ ^[A-F0-9]{64}$ ]]; then
42-
echo "::error::The exact Base Metals 1.20.1 dependency pin is pending."
43-
exit 1
44-
fi
45-
os_ref=$(sed -n 's/^orespawn_source_commit=//p' gradle.properties | tr -d '\r')
46-
os_hash=$(sed -n 's/^orespawn_deobf_sha256=//p' gradle.properties | tr -d '\r')
47-
if [[ ! "$os_ref" =~ ^[a-f0-9]{40}$ || ! "$os_hash" =~ ^[A-F0-9]{64}$ ]]; then
48-
echo "::error::The exact OreSpawn 1.20.1 dependency pin is pending."
49-
exit 1
50-
fi
51-
echo "ORESPAWN_SOURCE_REF=$os_ref" >> "$GITHUB_ENV"
52-
echo "POWERADVANTAGE_SOURCE_REF=$power_ref" >> "$GITHUB_ENV"
53-
echo "BASEMETALS_SOURCE_REF=$bm_ref" >> "$GITHUB_ENV"
54-
- name: Check out pinned OreSpawn
31+
- name: Check out pinned OreSpawn tool source
5532
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
5633
with:
5734
repository: MinecraftModDevelopmentMods/OreSpawn
58-
ref: ${{ env.ORESPAWN_SOURCE_REF }}
35+
ref: ${{ steps.public-pins.outputs.orespawn_ref }}
5936
path: .ci-dependencies/OreSpawn
60-
- name: Use canonical LF dependency inputs
61-
# Use the same source bytes on hosted and local dependency builds.
62-
run: git config --global core.autocrlf false
63-
- name: Check out pinned Base Metals
64-
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
65-
with:
66-
repository: MinecraftModDevelopmentMods/BaseMetals
67-
ref: ${{ env.BASEMETALS_SOURCE_REF }}
68-
path: .ci-dependencies/BaseMetals
69-
- name: Check out basePower 1.20.1
37+
- name: Check out released basePower source
7038
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
7139
with:
7240
repository: MinecraftModDevelopmentMods/basePower
73-
ref: ${{ env.POWERADVANTAGE_SOURCE_REF }}
41+
ref: ${{ steps.public-pins.outputs.power_ref }}
7442
path: .ci-dependencies/basePower
75-
- name: Install pinned Java 25 Mavenizer runtime
43+
- name: Install Java 25 for Mavenizer
7644
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
7745
with:
7846
distribution: temurin
7947
java-version: '25.0.3+9.0.LTS'
80-
- name: Install Java 8 for legacy build utilities
48+
- name: Install Java 8 for the launcher helper
8149
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
8250
with:
8351
distribution: temurin
8452
java-version: '8.0.502+7'
85-
- name: Install Java 17 for Gradle
53+
- name: Install Java 21 for Gradle and production
8654
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
8755
with:
8856
distribution: temurin
89-
java-version: '17.0.1+12'
57+
java-version: '21.0.7+6.0.LTS'
9058
- name: Use pinned build toolchains
91-
# These are Gradle project properties, not JVM system properties.
92-
shell: bash
9359
run: >-
9460
echo "MMD_GRADLE_TOOLCHAINS=-Porg.gradle.java.installations.paths=$JAVA_HOME,$JAVA_HOME_8_X64,$JAVA_HOME_25_X64
9561
-Porg.gradle.java.installations.auto-detect=false
9662
-Porg.gradle.java.installations.auto-download=false" >> "$GITHUB_ENV"
9763
- name: Set up Gradle
9864
uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6
99-
- name: Build 1.20.1 dependency chain
100-
id: dependencies
65+
- name: Verify the Forge 50 build inputs
10166
shell: bash
67+
env:
68+
ORESPAWN_REF: ${{ steps.public-pins.outputs.orespawn_ref }}
69+
POWER_REF: ${{ steps.public-pins.outputs.power_ref }}
10270
run: |
10371
set -euo pipefail
10472
orespawn="$GITHUB_WORKSPACE/.ci-dependencies/OreSpawn"
105-
basemetals="$GITHUB_WORKSPACE/.ci-dependencies/BaseMetals"
10673
power="$GITHUB_WORKSPACE/.ci-dependencies/basePower"
107-
test "$(git -C "$orespawn" rev-parse HEAD)" = "$ORESPAWN_SOURCE_REF"
108-
test "$(git -C "$power" rev-parse HEAD)" = "$POWERADVANTAGE_SOURCE_REF"
109-
test "$(git -C "$basemetals" rev-parse HEAD)" = "$BASEMETALS_SOURCE_REF"
74+
test "$(git -C "$orespawn" rev-parse HEAD)" = "$ORESPAWN_REF"
75+
test "$(git -C "$power" rev-parse HEAD)" = "$POWER_REF"
11076
mavenizer="$orespawn/ci-fixtures/tools/minecraft-mavenizer-0.5.21-orespawn-compat.jar"
111-
printf '%s %s\n' '416DCA4797BC55826F0DDCF03FDC405F1990FC15C2133FA27A1F143BF7976177' "$mavenizer" | sha256sum -c -
112-
(cd "$orespawn" && ./gradlew $MMD_GRADLE_TOOLCHAINS assemble --no-daemon --stacktrace)
113-
(cd "$basemetals" && ./gradlew $MMD_GRADLE_TOOLCHAINS assemble --no-daemon --stacktrace)
114-
osjar="$orespawn/build/libs-dev/OreSpawn-4.1.0.120011-deobf.jar"
115-
bm_version=$(sed -n 's/^basemetals_version=//p' "$GITHUB_WORKSPACE/gradle.properties" | tr -d '\r')
116-
bmjar="$basemetals/build/libs-dev/BaseMetals-$bm_version-deobf.jar"
117-
(cd "$power" && ./gradlew $MMD_GRADLE_TOOLCHAINS jar unitBootstrapJar verifyReleaseDependencies \
118-
"-Pforge47MavenizerJar=$mavenizer" \
119-
-PbaseMetalsDeobfJar="$bmjar" -PoreSpawnDeobfJar="$osjar" \
120-
--no-daemon --stacktrace)
121-
powerjar="$power/build/libs-dev/basePower-2.4.12.120011-deobf.jar"
122-
bootstrap="$power/build/unit-bootstrap/forge-native-unit-bootstrap.jar"
123-
test -f "$osjar" && test -f "$bmjar" && test -f "$powerjar" && test -f "$bootstrap"
124-
echo "orespawn=$osjar" >> "$GITHUB_OUTPUT"
125-
echo "basemetals=$bmjar" >> "$GITHUB_OUTPUT"
126-
echo "orespawn_player=$orespawn/build/libs/OreSpawn-4.1.0.120011.jar" >> "$GITHUB_OUTPUT"
127-
echo "basemetals_player=$basemetals/build/libs/BaseMetals-$bm_version.jar" >> "$GITHUB_OUTPUT"
128-
echo "power=$powerjar" >> "$GITHUB_OUTPUT"
129-
echo "bootstrap=$bootstrap" >> "$GITHUB_OUTPUT"
130-
echo "mavenizer=$mavenizer" >> "$GITHUB_OUTPUT"
131-
- name: Verify source layout and recipe unlocks
77+
printf '%s %s\n' '4B14145595E900F178A082F2253A756F63897E6F61C2B8B5E7C819B82CD79E8C' "$mavenizer" | sha256sum -c -
78+
echo "MAVENIZER=$mavenizer" >> "$GITHUB_ENV"
79+
- name: Build the released basePower test bootstrap
80+
shell: bash
13281
run: |
133-
node tools/verify-native-port.js
134-
node tools/generate-recipe-unlocks.js --check
82+
set -euo pipefail
83+
power="$GITHUB_WORKSPACE/.ci-dependencies/basePower"
84+
(cd "$power" && bash ./gradlew $MMD_GRADLE_TOOLCHAINS unitBootstrapJar \
85+
"-Pforge50MavenizerJar=$MAVENIZER" "-PbaseMetalsDeobfJar=$METALS_PLAYER" "-PoreSpawnDeobfJar=$ORESPAWN_PLAYER" --no-daemon)
86+
echo "POWER_BOOTSTRAP=$power/build/unit-bootstrap/forge-native-unit-bootstrap.jar" >> "$GITHUB_ENV"
87+
echo "POWER_BOOTSTRAP_SOURCE=$power/test-rig/unit-bootstrap/ForgeCapabilityBootstrap.java" >> "$GITHUB_ENV"
88+
echo "POWER_REGISTRY_SOURCE=$power/test-rig/unit-support/zone/moddev/mc/advantageworks/unit/ForgeUnitRegistries.java" >> "$GITHUB_ENV"
13589
- name: Build and audit release artifacts
136-
run: >-
137-
./gradlew $MMD_GRADLE_TOOLCHAINS clean check build javadoc verifyReleaseDependencies verifyPlayerDependencies verifyReleaseArtifacts
138-
writeReleaseChecksums verifyEclipseProductionClasspath
139-
"-Pforge47MavenizerJar=${{ steps.dependencies.outputs.mavenizer }}"
140-
"-PpowerAdvantagePlayerJar=${{ steps.public-pins.outputs.power_player }}"
141-
"-PbaseMetalsPlayerJar=${{ steps.dependencies.outputs.basemetals_player }}"
142-
"-PoreSpawnPlayerJar=${{ steps.dependencies.outputs.orespawn_player }}"
143-
-PforgeCapabilityBootstrapJar=${{ steps.dependencies.outputs.bootstrap }}
144-
-PpowerAdvantageDeobfJar=${{ steps.dependencies.outputs.power }}
145-
-PbaseMetalsDeobfJar=${{ steps.dependencies.outputs.basemetals }}
146-
-PoreSpawnDeobfJar=${{ steps.dependencies.outputs.orespawn }}
147-
--no-daemon --stacktrace
90+
shell: bash
91+
run: |
92+
./gradlew $MMD_GRADLE_TOOLCHAINS clean check build javadoc verifyReleaseDependencies verifyReleaseArtifacts \
93+
writeReleaseChecksums verifyEclipseProductionClasspath --no-build-cache --no-daemon --stacktrace \
94+
"-Pforge50MavenizerJar=$MAVENIZER" "-PpowerAdvantageDeobfJar=$POWER_PLAYER" \
95+
"-PbaseMetalsDeobfJar=$METALS_PLAYER" "-PoreSpawnDeobfJar=$ORESPAWN_PLAYER" \
96+
"-PforgeCapabilityBootstrapJar=$POWER_BOOTSTRAP" "-PforgeCapabilityBootstrapSource=$POWER_BOOTSTRAP_SOURCE" \
97+
"-PforgeUnitRegistriesSource=$POWER_REGISTRY_SOURCE"
14898
- name: Upload audited release candidate
14999
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
150100
with:
151-
name: baseSteam-1.20.1-${{ github.sha }}
101+
name: baseSteam-1.20.6-${{ github.sha }}
152102
if-no-files-found: error
153103
retention-days: 30
154104
path: |
155-
build/libs/baseSteam-2.2.13.120011.jar
156-
build/libs/baseSteam-2.2.13.120011-sources.jar
157-
build/libs/baseSteam-2.2.13.120011-javadoc.jar
105+
build/libs/baseSteam-2.2.14.120061.jar
106+
build/libs/baseSteam-2.2.14.120061-sources.jar
107+
build/libs/baseSteam-2.2.14.120061-javadoc.jar
158108
build/release/SHA256SUMS
159109
CHANGELOG.txt
160110
- name: Upload diagnostics on failure
161111
if: failure()
162112
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
163113
with:
164-
name: baseSteam-1.20.1-diagnostics-${{ github.sha }}
114+
name: baseSteam-1.20.6-diagnostics-${{ github.sha }}
165115
if-no-files-found: ignore
166116
retention-days: 14
167117
path: |
168118
build/test-results/**
169119
build/reports/**
170-
build/*-run/logs/**
171-
build/problems/**
172-
.ci-dependencies/basePower/build/reports/**
173-
.ci-dependencies/basePower/build/libs-dev/*.jar

0 commit comments

Comments
 (0)