Repository navigation
Port baseSteam to Minecraft 1.20.1 #50
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: CodeQL | |
| 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] | |
| schedule: | |
| - cron: '53 7 * * 4' | |
| permissions: | |
| actions: read | |
| contents: read | |
| security-events: write | |
| jobs: | |
| analyze: | |
| name: Analyze Java | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 90 | |
| 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 jar --no-daemon --stacktrace) | |
| (cd "$basemetals" && ./gradlew $MMD_GRADLE_TOOLCHAINS jar --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 "power=$powerjar" >> "$GITHUB_OUTPUT" | |
| echo "bootstrap=$bootstrap" >> "$GITHUB_OUTPUT" | |
| echo "mavenizer=$mavenizer" >> "$GITHUB_OUTPUT" | |
| - name: Initialize CodeQL | |
| uses: github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4 | |
| with: | |
| languages: java-kotlin | |
| - name: Compile baseSteam production code | |
| run: | | |
| chmod +x ./gradlew | |
| ./gradlew $MMD_GRADLE_TOOLCHAINS clean classes --rerun-tasks --no-build-cache --no-daemon --stacktrace \ | |
| "-Pforge47MavenizerJar=${{ steps.dependencies.outputs.mavenizer }}" \ | |
| -PforgeCapabilityBootstrapJar=${{ steps.dependencies.outputs.bootstrap }} \ | |
| -PpowerAdvantageDeobfJar=${{ steps.dependencies.outputs.power }} \ | |
| -PbaseMetalsDeobfJar=${{ steps.dependencies.outputs.basemetals }} \ | |
| -PoreSpawnDeobfJar=${{ steps.dependencies.outputs.orespawn }} | |
| - name: Analyze | |
| uses: github/codeql-action/analyze@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4 |