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
  •  
  •  
  •  
68 changes: 10 additions & 58 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
* text=auto
* text=auto eol=lf

*.bat text eol=crlf
#*.bat text eol=lf
*.gradle text diff=java
mcmod.info text
*.java text
Expand All @@ -16,60 +15,13 @@ gradlew text eol=lf
*.xml text
*.yml text
*.yaml text
*.toml text

# Documents
*.pdf binary

# Graphics
*.eps binary
*.gif binary
*.ico binary
*.jpg binary
*.jpeg binary
*.png binary
*.psd binary
# SVG treated as an asset (binary) by default. If you want to treat it as text,
# comment-out the following line and uncomment the line after.
*.svg binary
#*.svg text
*.tif binary
*.tiff binary
*.webp binary
*.xcf binary

# Other
*.exe binary
*.jar binary

###############################
# Git Large File System (LFS) #
###############################

# Archives
#*.7z filter=lfs diff=lfs merge=lfs -text
#*.br filter=lfs diff=lfs merge=lfs -text
#*.bz2 filter=lfs diff=lfs merge=lfs -text
#*.gz filter=lfs diff=lfs merge=lfs -text
#*.tar filter=lfs diff=lfs merge=lfs -text
#*.zip filter=lfs diff=lfs merge=lfs -text

# Documents
#*.pdf filter=lfs diff=lfs merge=lfs -text

# Graphics
#*.eps filter=lfs diff=lfs merge=lfs -text
#*.gif filter=lfs diff=lfs merge=lfs -text
#*.ico filter=lfs diff=lfs merge=lfs -text
#*.jpg filter=lfs diff=lfs merge=lfs -text
#*.jpeg filter=lfs diff=lfs merge=lfs -text
#*.png filter=lfs diff=lfs merge=lfs -text
#*.psd filter=lfs diff=lfs merge=lfs -text
#*.tif filter=lfs diff=lfs merge=lfs -text
#*.tiff filter=lfs diff=lfs merge=lfs -text
#*.webp filter=lfs diff=lfs merge=lfs -text
#*.xcf filter=lfs diff=lfs merge=lfs -text

# Other
#*.exe filter=lfs diff=lfs merge=lfs -text
#*.jar filter=lfs diff=lfs merge=lfs -text
*.gif binary
*.ico binary
*.jpg binary
*.jpeg binary
*.png binary
*.psd binary
*.svg binary
*.jar binary
*.zip binary
210 changes: 210 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
name: MMDLib 1.12 CI

on:
push:
branches:
- master-1.12
- 'feature/**'
pull_request:
branches:
- master-1.12

permissions:
contents: read

concurrency:
group: mmdlib-1.12-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
cold-forge-bootstrap:
name: Cold Forge bootstrap
runs-on: ubuntu-latest
timeout-minutes: 75

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'

- name: Install pinned Java 8 compilation toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
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: Stage checksum-verified legacy dependencies
id: dependencies
shell: bash
run: |
set -euo pipefail
mirror="$RUNNER_TEMP/legacy-dependency-mirror"
bash gradle/stage-legacy-dependencies.sh "$mirror"
echo "repository=$mirror" >> "$GITHUB_OUTPUT"

- name: Bootstrap Forge from an empty cache
shell: bash
env:
GRADLE_USER_HOME: ${{ runner.temp }}/mmdlib-cold-gradle
run: |
set -euo pipefail
test ! -e .gradle
test ! -e "$GRADLE_USER_HOME"
mkdir -p "$GRADLE_USER_HOME"
chmod +x ./gradlew
gradle_args=(
classes verifyReleaseDependencies
-PlegacyDependencyVerificationRepository="${{ steps.dependencies.outputs.repository }}"
--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
)
./gradlew "${gradle_args[@]}"

- name: Verify same-cache bootstrap offline
shell: bash
env:
GRADLE_USER_HOME: ${{ runner.temp }}/mmdlib-cold-gradle
run: |
set -euo pipefail
gradle_args=(
classes verifyReleaseDependencies
-PlegacyDependencyVerificationRepository="${{ steps.dependencies.outputs.repository }}"
--rerun-tasks --offline --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
)
./gradlew "${gradle_args[@]}"

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

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'

- name: Install pinned Java 8 compilation and runtime toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
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: Set up Gradle
uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6

- name: Stage checksum-verified dependencies
id: dependencies
shell: bash
run: |
set -euo pipefail
mirror="$RUNNER_TEMP/legacy-dependency-mirror"
bash gradle/stage-legacy-dependencies.sh "$mirror"
echo "repository=$mirror" >> "$GITHUB_OUTPUT"

- name: Prepare clean packaged Forge runtime
id: forge
shell: bash
run: |
set -euo pipefail
runtime="$RUNNER_TEMP/forge-1.12.2-2847-runtime"
bash gradle/prepare-packaged-forge-runtime.sh "$runtime" "$JAVA_HOME_8_X64/bin/java"
echo "runtime=$runtime" >> "$GITHUB_OUTPUT"

- name: Prepare Forge 2859 compatibility runtime
id: compat
shell: bash
run: |
set -euo pipefail
runtime="$RUNNER_TEMP/forge-1.12.2-2859-runtime"
bash gradle/prepare-packaged-forge-runtime.sh "$runtime" "$JAVA_HOME_8_X64/bin/java" compat
echo "runtime=$runtime" >> "$GITHUB_OUTPUT"

- name: Build, test, audit, qualify runtimes, and generate Eclipse launches
shell: bash
run: |
set -euo pipefail
chmod +x ./gradlew
gradle_args=(
clean check build javadoc verifyReleaseDependencies verifyReleaseArtifacts
writeReleaseChecksums prepareEclipse packagedForgeRuntimeTest
-PlegacyDependencyVerificationRepository="${{ steps.dependencies.outputs.repository }}"
-PpackagedForgeRuntimeRoot="${{ steps.forge.outputs.runtime }}"
-PpackagedForgeCompatRuntimeRoot="${{ steps.compat.outputs.runtime }}"
--no-daemon --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
)
./gradlew "${gradle_args[@]}"
cp build/release/SHA256SUMS "$RUNNER_TEMP/first-SHA256SUMS"

- name: Verify reproducible release archives
shell: bash
run: |
set -euo pipefail
gradle_args=(
clean build javadoc verifyReleaseArtifacts writeReleaseChecksums
-PlegacyDependencyVerificationRepository="${{ steps.dependencies.outputs.repository }}"
--offline --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
)
./gradlew "${gradle_args[@]}"
cmp "$RUNNER_TEMP/first-SHA256SUMS" build/release/SHA256SUMS

- name: Upload audited release candidate
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: MMDLib-1.12.2-${{ github.sha }}
if-no-files-found: error
retention-days: 30
path: |
build/libs/MMDLib-1.0.0.112021.jar
build/libs/MMDLib-1.0.0.112021-sources.jar
build/libs/MMDLib-1.0.0.112021-javadoc.jar
build/libs/MMDLib-1.0.0.112021-deobf.jar
build/release/SHA256SUMS
CHANGELOG.txt

- name: Upload bounded diagnostics on failure
if: failure()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: MMDLib-1.12.2-diagnostics-${{ github.sha }}
if-no-files-found: ignore
retention-days: 14
path: |
build/test-results/**
build/reports/**
build/packaged-forge-*-run/logs/**
build/packaged-forge-*-run/*-console.txt
build/packaged-forge-*-run/crash-reports/**
build/problems/**
80 changes: 80 additions & 0 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: CodeQL

on:
push:
branches:
- master-1.12
- 'feature/**'
pull_request:
branches:
- master-1.12
schedule:
- cron: '47 7 * * 4'

permissions:
actions: read
contents: read
security-events: write

jobs:
analyze:
name: Analyze Java
runs-on: ubuntu-latest
timeout-minutes: 60

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'

- name: Install pinned Java 8 compilation toolchain
uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5
with:
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: Set up Gradle
uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6

- name: Initialize CodeQL
uses: github/codeql-action/init@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4
with:
languages: java-kotlin

- name: Stage checksum-verified dependencies
id: dependencies
shell: bash
run: |
set -euo pipefail
mirror="$RUNNER_TEMP/legacy-dependency-mirror"
bash gradle/stage-legacy-dependencies.sh "$mirror"
echo "repository=$mirror" >> "$GITHUB_OUTPUT"

- name: Compile production code
shell: bash
run: |
set -euo pipefail
chmod +x ./gradlew
gradle_args=(
clean classes
-PlegacyDependencyVerificationRepository="${{ steps.dependencies.outputs.repository }}"
--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
)
./gradlew "${gradle_args[@]}"

- name: Analyze
uses: github/codeql-action/analyze@db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28 # v4
Loading
Loading