Compare commits

..

12 Commits

Author SHA1 Message Date
9aae9cd77b add Project settings and artifact naming
All checks were successful
github-mirror / push-github (push) Successful in 4s
Build / Gradle-Build (push) Successful in 23s
Test / Gradle-Test (push) Successful in 13s
2025-02-08 16:51:21 +01:00
ca52d8f04c Merge pull request 'Add CI/CD' (#2) from feat/ci-cd into master
All checks were successful
github-mirror / push-github (push) Successful in 4s
Build / Gradle-Build (push) Successful in 45s
Test / Gradle-Test (push) Successful in 17s
Reviewed-on: #2
2025-02-07 13:44:44 +00:00
6dc1446143 fix directory not existing failing the job
All checks were successful
github-mirror / push-github (push) Successful in 4s
Build / Gradle-Build (push) Successful in 1m2s
Test / Gradle-Test (push) Successful in 31s
2025-02-07 14:40:22 +01:00
eb18df79c9 add test workflow
Some checks failed
github-mirror / push-github (push) Successful in 4s
Build / Gradle-Build (push) Successful in 1m50s
Test / Gradle-Test (push) Failing after 51s
2025-02-07 10:33:26 +01:00
e1f20aeeaf bump gradle version
All checks were successful
github-mirror / push-github (push) Successful in 4s
Build / Gradle-Build (push) Successful in 1m56s
2025-02-06 14:15:59 +01:00
a2e96c7df9 x2
Some checks failed
github-mirror / push-github (push) Successful in 3s
Build / Gradle-Build (push) Failing after 1m36s
2025-02-06 14:00:51 +01:00
be62aad19c fix disappeared part of name
Some checks failed
github-mirror / push-github (push) Successful in 3s
Build / Gradle-Build (push) Failing after 1s
2025-02-06 13:59:56 +01:00
d6d37f391a test different java version
Some checks failed
github-mirror / push-github (push) Successful in 4s
Build / Gradle-Build (push) Failing after 1s
2025-02-06 13:57:50 +01:00
9e80e06d18 add gradle build workflow
Some checks failed
github-mirror / push-github (push) Successful in 4s
Build / Gradle-Build (push) Failing after 1m2s
2025-02-06 12:13:40 +01:00
de46e7625a add github mirror action
All checks were successful
github-mirror / push-github (push) Successful in 5s
2025-02-06 12:05:19 +01:00
614ca976b9 remove jline and adjust logging 2025-02-06 11:54:13 +01:00
2b3423c1c9 add logback logging and compatability. Also test Ping command. 2024-12-23 01:25:01 +01:00
10 changed files with 217 additions and 42 deletions

View File

@@ -0,0 +1,17 @@
name: github-mirror
on: push
jobs:
push-github:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Push to GitHub
uses: pixta-dev/repository-mirroring-action@v1
with:
target_repo_url:
git@github.com:EkiciLP/TomatenMusic3.git
ssh_private_key:
${{ secrets.MIRROR_SSH_PRIVATE_KEY }}

View File

@@ -0,0 +1,47 @@
name: Build
on:
push:
jobs:
Gradle-Build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: '23'
check-latest: true
distribution: 'zulu'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
add-job-summary: always
cache-cleanup: on-success
- name: Cache Gradle dependencies
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Build
run: chmod +x gradlew; ./gradlew assemble
- name: Move artifacts
run: mkdir artifacts; mv app/build/libs/*.jar artifacts;
- name: Upload artifact
uses: christopherhx/gitea-upload-artifact@v4
with:
name: artifacts
path: artifacts

View File

@@ -0,0 +1,53 @@
name: Test
on:
push:
jobs:
Gradle-Test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
java-version: '23'
check-latest: true
distribution: 'zulu'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
add-job-summary: always
cache-cleanup: on-success
- name: Cache Gradle dependencies
uses: actions/cache@v4
with:
path: |
~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Test
env:
DISCORD_TEST_TOKEN: ${{ secrets.DISCORD_TOKEN }}
run: chmod +x gradlew; ./gradlew test
- name: Move Test Results
if: always()
continue-on-error: true
run: |
mkdir test-results/;
[ -d app/build/test-results/test/ ] && mv app/build/test-results/test/*.xml test-results/ || true
- name: Upload Test Result
uses: christopherhx/gitea-upload-artifact@v4
if: always()
with:
name: test-results
path: test-results/

View File

@@ -14,6 +14,9 @@ plugins {
repositories { repositories {
// Use Maven Central for resolving dependencies. // Use Maven Central for resolving dependencies.
mavenCentral() mavenCentral()
maven {
url = uri("https://git.tomatentum.net/api/packages/tueem/maven")
}
} }
dependencies { dependencies {
@@ -23,16 +26,22 @@ dependencies {
testRuntimeOnly("org.junit.platform:junit-platform-launcher") testRuntimeOnly("org.junit.platform:junit-platform-launcher")
// This dependency is used by the application. // This dependency is used by the application.
implementation(libs.guava)
implementation(libs.javacord) implementation(libs.javacord)
implementation(libs.dotenv) implementation(libs.dotenv)
implementation(libs.log4j) implementation(libs.slf4j)
implementation(libs.logback)
implementation(libs.log4jtoslf4j)
implementation(libs.jultoslf4j)
implementation(libs.marinaralib)
implementation(libs.marinarajavacord)
} }
// Apply a specific Java toolchain to ease working on different environments. // Apply a specific Java toolchain to ease working on different environments.
java { java {
toolchain { toolchain {
languageVersion = JavaLanguageVersion.of(21) languageVersion = JavaLanguageVersion.of(23)
} }
} }

View File

@@ -1,54 +1,37 @@
package net.tomatentum.tomatenmusic3; package net.tomatentum.tomatenmusic3;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.config.Configurator;
import org.apache.logging.log4j.core.config.builder.api.AppenderComponentBuilder;
import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilder;
import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFactory;
import org.apache.logging.log4j.core.config.builder.api.RootLoggerComponentBuilder;
import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration;
import org.javacord.api.DiscordApi; import org.javacord.api.DiscordApi;
import org.javacord.api.DiscordApiBuilder; import org.javacord.api.DiscordApiBuilder;
import org.javacord.api.entity.intent.Intent; import org.javacord.api.entity.intent.Intent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.LoggerContext;
import io.github.cdimascio.dotenv.Dotenv; import io.github.cdimascio.dotenv.Dotenv;
import net.tomatentum.marinara.Marinara;
import net.tomatentum.marinara.wrapper.javacord.JavacordWrapper;
import net.tomatentum.tomatenmusic3.command.PingCommand;
public class App { public class App {
public static void main(String[] args) { public static void main(String[] args) {
new App().connect(); new App().connect();
} }
private static String LOGGERPATTERN = "%-22d{dd MMM yyyy HH:mm:ss} (%t) [%c{3}] %p: %m%n";
private Config config; private Config config;
private DiscordApi client; private DiscordApi client;
private Logger logger; private Logger logger = LoggerFactory.getLogger(getClass());
private Marinara marinara;
private App() { private App() {
Dotenv env = Dotenv.configure().ignoreIfMissing().load(); Dotenv env = Dotenv.configure().ignoreIfMissing().load();
this.config = new Config(env); this.config = new Config(env);
initLogger();
}
private void initLogger() { LoggerContext loggerctx = (LoggerContext) LoggerFactory.getILoggerFactory();
ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder(); if (config.isDevelopment())
AppenderComponentBuilder cbuilder = loggerctx.getLogger("root").setLevel(Level.DEBUG);
builder.newAppender("Console", "Console")
.add(builder
.newLayout("PatternLayout")
.addAttribute("pattern", LOGGERPATTERN)
);
RootLoggerComponentBuilder rlbuilder =
builder.newRootLogger(config.isDevelopment() ? Level.DEBUG : Level.INFO)
.add(builder.newAppenderRef("Console"));
BuiltConfiguration logconf = builder.add(cbuilder).add(rlbuilder).build();
Configurator.reconfigure(logconf);
logger = LogManager.getLogger(this);
} }
public void connect() { public void connect() {
@@ -56,9 +39,15 @@ public class App {
.setToken(config.token()) .setToken(config.token())
.addIntents(Intent.GUILD_VOICE_STATES) .addIntents(Intent.GUILD_VOICE_STATES)
.login().join(); .login().join();
logger.log(Level.INFO, "connected as {}", client.getYourself().getName()); initMarinara();
logger.info("connected as {}", client.getYourself().getName());
} }
private void initMarinara() {
this.marinara = Marinara.load(new JavacordWrapper(client));
marinara.getRegistry().addInteractions(new PingCommand());
marinara.getRegistry().registerCommands();
}
} }

View File

@@ -0,0 +1,27 @@
package net.tomatentum.tomatenmusic3.command;
import java.time.Duration;
import java.time.Instant;
import org.javacord.api.entity.message.MessageFlag;
import org.javacord.api.interaction.SlashCommandInteraction;
import net.tomatentum.marinara.interaction.InteractionHandler;
import net.tomatentum.marinara.interaction.commands.annotation.SlashCommand;
public class PingCommand implements InteractionHandler {
@SlashCommand(
name = "ping",
description = "Tests bot's connection."
)
public void execPing(SlashCommandInteraction interaction) {
Duration ping = Duration.between(interaction.getCreationTimestamp(), Instant.now());
interaction.createImmediateResponder()
.append("Pong! " + ping.toMillis() + "ms")
.setFlags(MessageFlag.EPHEMERAL)
.respond().join();
}
}

View File

@@ -0,0 +1,11 @@
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{STRICT} %-20.-20t %-46([%boldWhite(%logger{30})]) %highlight(%p): %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
</root>
</configuration>

16
build.gradle.kts Normal file
View File

@@ -0,0 +1,16 @@
import java.io.ByteArrayOutputStream
allprojects {
group = "net.tomatentum.tomatenmusic3"
version = "1.0.0-RC1" + (if (!project.hasProperty("release")) ("-" + getGitHash()) else "")
description = "A simple Discord Music Bot written in Java with Javacord"
}
fun getGitHash(): String {
val output = ByteArrayOutputStream()
project.exec {
commandLine("git", "rev-parse", "--short", "HEAD")
standardOutput = output
}
return output.toString().trim()
}

View File

@@ -2,17 +2,23 @@
# https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format # https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format
[versions] [versions]
guava = "33.0.0-jre"
junit-jupiter = "5.10.2" junit-jupiter = "5.10.2"
javacord = "3.8.0" javacord = "3.8.0"
dotenv = "3.0.0" dotenv = "3.0.0"
log4j = "2.24.1" logback = "1.5.15"
slf4j = "2.0.16"
log4jtoslf4j = "2.24.3"
jultoslf4j = "2.0.16"
marinara = "1.0.0-RC1-9d88ca9"
[libraries] [libraries]
guava = { module = "com.google.guava:guava", version.ref = "guava" }
junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit-jupiter" } junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit-jupiter" }
javacord = { module = "org.javacord:javacord", version.ref = "javacord" } javacord = { module = "org.javacord:javacord", version.ref = "javacord" }
dotenv = { module = "io.github.cdimascio:dotenv-java", version.ref = "dotenv"} dotenv = { module = "io.github.cdimascio:dotenv-java", version.ref = "dotenv"}
log4j = { module = "org.apache.logging.log4j:log4j-core", version.ref = "log4j"} logback = { module = "ch.qos.logback:logback-classic", version.ref = "logback"}
slf4j = { module = "org.slf4j:slf4j-api", version.ref = "slf4j"}
log4jtoslf4j = { module = "org.apache.logging.log4j:log4j-to-slf4j", version.ref = "log4jtoslf4j"}
jultoslf4j = { module = "org.slf4j:jul-to-slf4j", version.ref = "jultoslf4j"}
marinaralib = { module = "net.tomatentum.Marinara:lib-dev", version.ref = "marinara"}
marinarajavacord = { module = "net.tomatentum.Marinara:wrapper-javacord-dev", version.ref = "marinara"}

View File

@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip
networkTimeout=10000 networkTimeout=10000
validateDistributionUrl=true validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME