Repository navigation
Port baseSteam to Minecraft 1.20.1 #49
Workflow file for this run
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: baseSteam 1.20 CI | |
| on: | |
| push: | |
| branches: [master-1.20.1, feature/basesteam-1.20.1-port, feature/prepare-basesteam-1.20.1] | |
| pull_request: | |
| branches: [master-1.20.1] | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: basesteam-1.20-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| name: Build, test, and audit | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 105 | |
| steps: | |
| - name: Check out baseSteam | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 | |
| - name: Verify merged dependency pins and public basePower bytes | |
| id: public-pins | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| run: bash .github/verify-published-pins.sh | |
| - name: Validate coordinated dependency pins | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| power_ref=$(sed -n 's/^poweradvantage_source_ref=//p' gradle.properties | tr -d '\r') | |
| power_hash=$(sed -n 's/^poweradvantage_deobf_sha256=//p' gradle.properties | tr -d '\r') | |
| if [[ ! "$power_ref" =~ ^[a-f0-9]{40}$ || ! "$power_hash" =~ ^[A-F0-9]{64}$ ]]; then | |
| echo "::error::The exact basePower 1.20.1 dependency pin is pending." | |
| exit 1 | |
| fi | |
| bm_ref=$(sed -n 's/^basemetals_source_commit=//p' gradle.properties | tr -d '\r') | |
| bm_hash=$(sed -n 's/^basemetals_deobf_sha256=//p' gradle.properties | tr -d '\r') | |
| if [[ ! "$bm_ref" =~ ^[a-f0-9]{40}$ || ! "$bm_hash" =~ ^[A-F0-9]{64}$ ]]; then | |
| echo "::error::The exact Base Metals 1.20.1 dependency pin is pending." | |
| exit 1 | |
| fi | |
| os_ref=$(sed -n 's/^orespawn_source_commit=//p' gradle.properties | tr -d '\r') | |
| os_hash=$(sed -n 's/^orespawn_deobf_sha256=//p' gradle.properties | tr -d '\r') | |
| if [[ ! "$os_ref" =~ ^[a-f0-9]{40}$ || ! "$os_hash" =~ ^[A-F0-9]{64}$ ]]; then | |
| echo "::error::The exact OreSpawn 1.20.1 dependency pin is pending." | |
| exit 1 | |
| fi | |
| echo "ORESPAWN_SOURCE_REF=$os_ref" >> "$GITHUB_ENV" | |
| echo "POWERADVANTAGE_SOURCE_REF=$power_ref" >> "$GITHUB_ENV" | |
| echo "BASEMETALS_SOURCE_REF=$bm_ref" >> "$GITHUB_ENV" | |
| - name: Check out pinned OreSpawn | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 | |
| with: | |
| repository: MinecraftModDevelopmentMods/OreSpawn | |
| ref: ${{ env.ORESPAWN_SOURCE_REF }} | |
| path: .ci-dependencies/OreSpawn | |
| - name: Use canonical LF dependency inputs | |
| # Use the same source bytes on hosted and local dependency builds. | |
| run: git config --global core.autocrlf false | |
| - name: Check out pinned Base Metals | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 | |
| with: | |
| repository: MinecraftModDevelopmentMods/BaseMetals | |
| ref: ${{ env.BASEMETALS_SOURCE_REF }} | |
| path: .ci-dependencies/BaseMetals | |
| - name: Check out basePower 1.20.1 | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 | |
| with: | |
| repository: MinecraftModDevelopmentMods/basePower | |
| ref: ${{ env.POWERADVANTAGE_SOURCE_REF }} | |
| path: .ci-dependencies/basePower | |
| - 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 8 for legacy build utilities | |
| uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5 | |
| with: | |
| distribution: temurin | |
| java-version: '8.0.502+7' | |
| - name: Install Java 17 for Gradle | |
| uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5 | |
| with: | |
| distribution: temurin | |
| java-version: '17.0.1+12' | |
| - name: Use pinned build toolchains | |
| # 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_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.20.1 dependency chain | |
| id: dependencies | |
| shell: bash | |
| run: | | |
| set -euo pipefail | |
| orespawn="$GITHUB_WORKSPACE/.ci-dependencies/OreSpawn" | |
| basemetals="$GITHUB_WORKSPACE/.ci-dependencies/BaseMetals" | |
| power="$GITHUB_WORKSPACE/.ci-dependencies/basePower" | |
| test "$(git -C "$orespawn" rev-parse HEAD)" = "$ORESPAWN_SOURCE_REF" | |
| test "$(git -C "$power" rev-parse HEAD)" = "$POWERADVANTAGE_SOURCE_REF" | |
| test "$(git -C "$basemetals" rev-parse HEAD)" = "$BASEMETALS_SOURCE_REF" | |
| mavenizer="$orespawn/ci-fixtures/tools/minecraft-mavenizer-0.5.21-orespawn-compat.jar" | |
| printf '%s %s\n' '416DCA4797BC55826F0DDCF03FDC405F1990FC15C2133FA27A1F143BF7976177' "$mavenizer" | sha256sum -c - | |
| (cd "$orespawn" && ./gradlew $MMD_GRADLE_TOOLCHAINS assemble --no-daemon --stacktrace) | |
| (cd "$basemetals" && ./gradlew $MMD_GRADLE_TOOLCHAINS assemble --no-daemon --stacktrace) | |
| osjar="$orespawn/build/libs-dev/OreSpawn-4.1.0.120011-deobf.jar" | |
| bm_version=$(sed -n 's/^basemetals_version=//p' "$GITHUB_WORKSPACE/gradle.properties" | tr -d '\r') | |
| bmjar="$basemetals/build/libs-dev/BaseMetals-$bm_version-deobf.jar" | |
| (cd "$power" && ./gradlew $MMD_GRADLE_TOOLCHAINS jar unitBootstrapJar verifyReleaseDependencies \ | |
| "-Pforge47MavenizerJar=$mavenizer" \ | |
| -PbaseMetalsDeobfJar="$bmjar" -PoreSpawnDeobfJar="$osjar" \ | |
| --no-daemon --stacktrace) | |
| powerjar="$power/build/libs-dev/basePower-2.4.12.120011-deobf.jar" | |
| bootstrap="$power/build/unit-bootstrap/forge-native-unit-bootstrap.jar" | |
| test -f "$osjar" && test -f "$bmjar" && test -f "$powerjar" && test -f "$bootstrap" | |
| echo "orespawn=$osjar" >> "$GITHUB_OUTPUT" | |
| echo "basemetals=$bmjar" >> "$GITHUB_OUTPUT" | |
| echo "orespawn_player=$orespawn/build/libs/OreSpawn-4.1.0.120011.jar" >> "$GITHUB_OUTPUT" | |
| echo "basemetals_player=$basemetals/build/libs/BaseMetals-$bm_version.jar" >> "$GITHUB_OUTPUT" | |
| echo "power=$powerjar" >> "$GITHUB_OUTPUT" | |
| echo "bootstrap=$bootstrap" >> "$GITHUB_OUTPUT" | |
| echo "mavenizer=$mavenizer" >> "$GITHUB_OUTPUT" | |
| - name: Verify source layout and recipe unlocks | |
| run: | | |
| node tools/verify-native-port.js | |
| node tools/generate-recipe-unlocks.js --check | |
| - name: Build and audit release artifacts | |
| run: >- | |
| ./gradlew $MMD_GRADLE_TOOLCHAINS clean check build javadoc verifyReleaseDependencies verifyPlayerDependencies verifyReleaseArtifacts | |
| writeReleaseChecksums verifyEclipseProductionClasspath | |
| "-Pforge47MavenizerJar=${{ steps.dependencies.outputs.mavenizer }}" | |
| "-PpowerAdvantagePlayerJar=${{ steps.public-pins.outputs.power_player }}" | |
| "-PbaseMetalsPlayerJar=${{ steps.dependencies.outputs.basemetals_player }}" | |
| "-PoreSpawnPlayerJar=${{ steps.dependencies.outputs.orespawn_player }}" | |
| -PforgeCapabilityBootstrapJar=${{ steps.dependencies.outputs.bootstrap }} | |
| -PpowerAdvantageDeobfJar=${{ steps.dependencies.outputs.power }} | |
| -PbaseMetalsDeobfJar=${{ steps.dependencies.outputs.basemetals }} | |
| -PoreSpawnDeobfJar=${{ steps.dependencies.outputs.orespawn }} | |
| --no-daemon --stacktrace | |
| - name: Upload audited release candidate | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 | |
| with: | |
| name: baseSteam-1.20.1-${{ github.sha }} | |
| if-no-files-found: error | |
| retention-days: 30 | |
| path: | | |
| build/libs/baseSteam-2.2.13.120011.jar | |
| build/libs/baseSteam-2.2.13.120011-sources.jar | |
| build/libs/baseSteam-2.2.13.120011-javadoc.jar | |
| build/release/SHA256SUMS | |
| CHANGELOG.txt | |
| - name: Upload diagnostics on failure | |
| if: failure() | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 | |
| with: | |
| name: baseSteam-1.20.1-diagnostics-${{ github.sha }} | |
| if-no-files-found: ignore | |
| retention-days: 14 | |
| path: | | |
| build/test-results/** | |
| build/reports/** | |
| build/*-run/logs/** | |
| build/problems/** | |
| .ci-dependencies/basePower/build/reports/** | |
| .ci-dependencies/basePower/build/libs-dev/*.jar |