From b2fc90444181df128b636e2d421a24557655635b Mon Sep 17 00:00:00 2001 From: Oliver Date: Sun, 16 Mar 2025 17:17:23 +0100 Subject: [PATCH] Add quick-e2e tool for E2E environment setup --- settings.gradle.kts | 3 +- tools/quick-e2e/README.md | 50 ++++++++++++++++ tools/quick-e2e/build.gradle.kts | 59 +++++++++++++++++++ tools/quick-e2e/http/paper-downloads-api.http | 11 ++++ .../main/java/de/oliver/quicke2e/Main.java | 9 +++ 5 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 tools/quick-e2e/README.md create mode 100644 tools/quick-e2e/build.gradle.kts create mode 100644 tools/quick-e2e/http/paper-downloads-api.http create mode 100644 tools/quick-e2e/src/main/java/de/oliver/quicke2e/Main.java diff --git a/settings.gradle.kts b/settings.gradle.kts index 088fc9fd..6de0a313 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -24,4 +24,5 @@ include(":libraries:packets:implementations:1_21_4") include(":libraries:packets:test_plugin") -include(":tools:deployment") \ No newline at end of file +include(":tools:deployment") +include(":tools:quick-e2e") \ No newline at end of file diff --git a/tools/quick-e2e/README.md b/tools/quick-e2e/README.md new file mode 100644 index 00000000..6a7bff20 --- /dev/null +++ b/tools/quick-e2e/README.md @@ -0,0 +1,50 @@ +# Quick E2E environment setup + +## Features + +Generate a new E2E environment with the following options: +- **Server type**: paper, folia ... +- **Server version**: 1.19.4, 1.20.1 ... +- **Server Build**: latest, a specific build +- **Pre-installed plugins**: links to modrinth +- **Custom plugin providers**: build from monorepo +- **EULA**: true, false +- **OP**: a specific username + +Update an existing E2E environment, if there is a new build or plugin version available. + +Delete an existing E2E environment. + +## Usage + +### Generate a new E2E environment + +Command line arguments: +```bash +java -jar quick-e2e.jar + -- + --server-type paper + --server-version 1.21.4 + --server-build latest + --pre-installed-plugins "viaversion,luckperms,worldedit" + --custom-plugin-providers "monorepo" + --eula true + --op "OliverHD" +``` + +Configuration file: +```json +{ + "serverType": "paper", + "serverVersion": "1.21.4", + "serverBuild": "latest", + "preInstalledPlugins": ["viaversion", "luckperms", "worldedit"], + "customPluginProviders": ["monorepo"], + "eula": true, + "op": "OliverHD" +} +``` + +```bash +java -jar quick-e2e.jar --generate --config-file config.json +``` \ No newline at end of file diff --git a/tools/quick-e2e/build.gradle.kts b/tools/quick-e2e/build.gradle.kts new file mode 100644 index 00000000..4920448d --- /dev/null +++ b/tools/quick-e2e/build.gradle.kts @@ -0,0 +1,59 @@ +plugins { + id("java") + id("maven-publish") + id("com.gradleup.shadow") +} + +group = "de.oliver" +description = "Tool to setup a complete environment for testing" + +java { + toolchain.languageVersion.set(JavaLanguageVersion.of(21)) +} + +repositories { + mavenCentral() + maven("https://repo.papermc.io/repository/maven-public/") + maven("https://repo.fancyplugins.de/releases") +} + +dependencies { + compileOnly("com.google.code.gson:gson:2.12.1") + implementation("com.squareup.okhttp3:okhttp:4.12.0") + implementation("org.jetbrains:annotations:26.0.2") + + implementation("de.oliver.FancyAnalytics:java-sdk:0.0.2") + implementation("de.oliver.FancyAnalytics:logger:0.0.6") +} + +tasks { + jar { + manifest { + attributes["Main-Class"] = "de.oliver.deployment.Main" + } + } + + shadowJar{ + archiveClassifier.set("") + } + + compileJava { + options.encoding = Charsets.UTF_8.name() // We want UTF-8 for everything + + // Set the release flag. This configures what version bytecode the compiler will emit, as well as what JDK APIs are usable. + // See https://openjdk.java.net/jeps/247 for more information. + options.release.set(21) + } + + java { + withSourcesJar() + withJavadocJar() + } + + javadoc { + options.encoding = Charsets.UTF_8.name() // We want UTF-8 for everything + } + processResources { + filteringCharset = Charsets.UTF_8.name() // We want UTF-8 for everything + } +} diff --git a/tools/quick-e2e/http/paper-downloads-api.http b/tools/quick-e2e/http/paper-downloads-api.http new file mode 100644 index 00000000..0a9c4d89 --- /dev/null +++ b/tools/quick-e2e/http/paper-downloads-api.http @@ -0,0 +1,11 @@ +### Get project list +GET https://api.papermc.io/v2/projects/ + +### Get version list of a project +GET https://api.papermc.io/v2/projects/paper + +### Get build list of a version +GET https://api.papermc.io/v2/projects/paper/versions/1.21.4 + +### Download a build +GET https://api.papermc.io/v2/projects/paper/versions/1.21.4/builds/211/downloads/paper-1.21.4-211.jar \ No newline at end of file diff --git a/tools/quick-e2e/src/main/java/de/oliver/quicke2e/Main.java b/tools/quick-e2e/src/main/java/de/oliver/quicke2e/Main.java new file mode 100644 index 00000000..5e950383 --- /dev/null +++ b/tools/quick-e2e/src/main/java/de/oliver/quicke2e/Main.java @@ -0,0 +1,9 @@ +package de.oliver.quicke2e; + +public class Main { + + public static void main(String[] args) { + + } + +}