Skip to content

CI

CI #235

Workflow file for this run

name: CI
on:
push:
branches:
- main
workflow_dispatch:
schedule:
- cron: '0 4 * * *' # Runs daily at 04:00 UTC
permissions:
packages: write
contents: write
env:
STUBGEN_BUILD_NUM: 29
MINECRAFT_VERSION: 1.21.8
OPENJDK_REPO: https://github.com/openjdk/jdk21u-dev
ADDITIONAL_DEFINITION_URLS: |
https://raw.githubusercontent.com/LuaLink/LuaLinkV2/master/src/main/resources/lua/script.lua
https://raw.githubusercontent.com/LuaLink/LuaLinkV2/master/src/main/resources/lua/scheduler.lua
SOURCES_JAR_URLS: |
https://repo.papermc.io/repository/maven-public/net/kyori/adventure-text-logger-slf4j/4.23.0/adventure-text-logger-slf4j-4.23.0-sources.jar
https://repo.papermc.io/repository/maven-public/net/kyori/adventure-text-minimessage/4.23.0/adventure-text-minimessage-4.23.0-sources.jar
https://repo.papermc.io/repository/maven-public/net/kyori/adventure-text-serializer-gson/4.23.0/adventure-text-serializer-gson-4.23.0-sources.jar
https://repo.papermc.io/repository/maven-public/net/kyori/adventure-platform-bukkit/4.4.0/adventure-platform-bukkit-4.4.0-sources.jar
https://repo.papermc.io/repository/maven-public/net/kyori/adventure-api/4.23.0/adventure-api-4.23.0-sources.jar
jobs:
build:
runs-on: ubuntu-latest
if: "!contains(github.event.commits[0].message, '[ci-skip]')"
steps:
- uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: 21
distribution: 'adopt'
- name: Install xmllint
run: sudo apt-get update && sudo apt-get install -y libxml2-utils zip
- name: Download LuaLink/LuaStubGen JAR
run: |
mkdir -p $RUNNER_TEMP/stubgen
curl -L -o $RUNNER_TEMP/stubgen/LuaStubGen.jar https://github.com/LuaLink/LuaStubGen/releases/download/$STUBGEN_BUILD_NUM/LuaStubGen-1.0-SNAPSHOT-all.jar
- name: Resolve Paper API Snapshot Sources JAR
id: resolve-paper
run: |
METADATA_URL="https://repo.papermc.io/repository/maven-public/io/papermc/paper/paper-api/${MINECRAFT_VERSION}-R0.1-SNAPSHOT/maven-metadata.xml"
curl -s "$METADATA_URL" -o metadata.xml
VERSION=$(xmllint --xpath "string(//snapshotVersion[classifier='sources']/value)" metadata.xml)
JAR_URL="https://repo.papermc.io/repository/maven-public/io/papermc/paper/paper-api/${MINECRAFT_VERSION}-R0.1-SNAPSHOT/paper-api-${VERSION}-sources.jar"
echo "PAPER_API_SOURCES_URL=$JAR_URL" >> $GITHUB_ENV
- name: Download Source JARs
run: |
mkdir -p $RUNNER_TEMP/sources
curl -L -o $RUNNER_TEMP/sources/paper-api-sources.jar "$PAPER_API_SOURCES_URL"
IFS=$'\n'
for url in $SOURCES_JAR_URLS; do
filename=$(basename "$url")
curl -L -o $RUNNER_TEMP/sources/"$filename" "$url"
done
- name: Clean previous Paper definitions
run: rm -rf library/paper
- name: Generate Lua definitions for Paper
run: |
mkdir -p library/paper
jar_files=$(ls $RUNNER_TEMP/sources/*.jar | tr '\n' ' ')
java -jar $RUNNER_TEMP/stubgen/LuaStubGen.jar --output-dir=library/paper $jar_files
- name: Download additional definitions
run: |
mkdir -p library/lualink
IFS=$'\n'
for url in $ADDITIONAL_DEFINITION_URLS; do
filename=$(basename "$url")
curl -L -o library/lualink/"$filename" "$url"
done
- name: Clone OpenJDK sources and generate Java stubs
run: |
git clone --depth 1 $OPENJDK_REPO $RUNNER_TEMP/openjdk
mkdir -p $RUNNER_TEMP/java-jar
cd $RUNNER_TEMP/openjdk
ALLOWED_CLASSES=(
java.base/share/classes/java/util/Map.java
java.base/share/classes/java/util/HashMap.java
java.base/share/classes/java/util/Collection.java
java.base/share/classes/java/util/Collections.java
java.base/share/classes/java/util/List.java
java.base/share/classes/java/util/Arrays.java
java.base/share/classes/java/util/ArrayList.java
java.base/share/classes/java/util/Set.java
java.base/share/classes/java/util/HashSet.java
java.base/share/classes/java/util/stream/Stream.java
java.base/share/classes/java/lang/Character.java
java.base/share/classes/java/util/UUID.java
java.base/share/classes/java/util/concurrent/CompletableFuture.java
java.base/share/classes/java/util/function/Function.java
java.base/share/classes/java/util/function/BiFunction.java
java.base/share/classes/java/util/function/Consumer.java
java.base/share/classes/java/util/function/BiConsumer.java
java.base/share/classes/java/util/function/Predicate.java
java.base/share/classes/java/lang/Object.java
java.base/share/classes/java/util/Objects.java
java.base/share/classes/java/net/URI.java.java
java.base/share/classes/java/net/URL.java
java.base/share/classes/java/io/File.java
java.base/share/classes/java/nio/file/Path.java
java.base/share/classes/java/util/regex/Pattern.java
java.base/share/classes/java/util/regex/Matcher.java
java.base/share/classes/java/text/SimpleDateFormat.java
java.base/share/classes/java/util/Locale.java
java.base/share/classes/java/util/Iterator.java
java.base/share/classes/java/util/ListIterator.java
java.base/share/classes/java/lang/Iterable.java
java.base/share/classes/java/text/DecimalFormat.java
java.base/share/classes/java/util/function/Supplier.java
java.base/share/classes/java/util/Optional.java
java.base/share/classes/java/util/logging/Logger.java
java.base/share/classes/java/lang/Class.java
java.base/share/classes/java/lang/System.java
java.base/share/classes/java/lang/String.java
java.base/share/classes/java/lang/StringBuilder.java
java.base/share/classes/java/lang/Number.java
java.base/share/classes/java/lang/Integer.java
java.base/share/classes/java/lang/Short.java
java.base/share/classes/java/lang/Byte.java
java.base/share/classes/java/lang/Double.java
java.base/share/classes/java/lang/Float.java
java.base/share/classes/java/lang/Boolean.java
java.base/share/classes/java/lang/Math.java
java.base/share/classes/java/math/BigInteger.java
java.base/share/classes/java/math/BigDecimal.java
)
FILES=""
for f in "${ALLOWED_CLASSES[@]}"; do
path="./src/${f}"
if [[ -f "$path" ]]; then
FILES+=" $path"
fi
done
zip -r $RUNNER_TEMP/java-jar/openjdk-src.jar $FILES
cd "$GITHUB_WORKSPACE"
mkdir -p library/java
java -jar $RUNNER_TEMP/stubgen/LuaStubGen.jar --output-dir=library/java $RUNNER_TEMP/java-jar/openjdk-src.jar
- name: Commit and push changes
run: |
git config --local user.name "GitHub Action"
git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
git add library/paper
git add library/lualink
git add library/java
git commit -m "Update Lua definitions" || echo "No changes to commit"
git push origin HEAD:main