add dockerfile, add get-metadata.sh, docker-build.sh

This commit is contained in:
dalbodeule 2024-06-13 01:33:11 +09:00
parent 2d28bf8bcb
commit 639ed5faed
No known key found for this signature in database
GPG Key ID: EFA860D069C9FA65
5 changed files with 282 additions and 1 deletions

34
Dockerfile Normal file
View File

@ -0,0 +1,34 @@
# Builder Stage
FROM ghcr.io/graalvm/graalvm-ce:latest AS builder
# Install necessary tools
RUN gu install native-image
# Set working directory
WORKDIR /app
# Install dependencies
COPY build.gradle.kts settings.gradle.kts gradlew ./
COPY gradle ./gradle
RUN ./gradlew --no-daemon dependencies
# Copy the source code
COPY src ./src
# Build the application
RUN ./gradlew nativeCompile
# Runner Stage
FROM alpine:latest AS runner
# Set working directory
WORKDIR /app
# Copy the native image from the builder stage
COPY --from=builder /app/chzzk_bot .
# Ensure the application binary is executable
RUN chmod +x /app/chzzk_bot
# Run the application
CMD ["./chzzk_bot"]

4
docker-build.sh Executable file
View File

@ -0,0 +1,4 @@
#!/bin/bash
current_time=$(date +"%Y%m%d%H%M")
docker build -t dalbodeule/chzzkbot:latest -t dalbodeule/chzzkbot:$current_time --push .

5
get-metadata.sh Executable file
View File

@ -0,0 +1,5 @@
#!/bin/bash
export RUN_AGENT=true
./gradlew -Pagent run
./gradlew metadataCopy --task run --dir src/main/resources/META-INF/native-image

View File

@ -8,6 +8,9 @@
{ {
"name":"[Lcom.zaxxer.hikari.util.ConcurrentBag$IConcurrentBagEntry;" "name":"[Lcom.zaxxer.hikari.util.ConcurrentBag$IConcurrentBagEntry;"
}, },
{
"name":"[Ljava.lang.Object;"
},
{ {
"name":"[Ljava.lang.String;" "name":"[Ljava.lang.String;"
}, },
@ -52,14 +55,81 @@
"name":"ch.qos.logback.classic.BasicConfigurator", "name":"ch.qos.logback.classic.BasicConfigurator",
"methods":[{"name":"<init>","parameterTypes":[] }] "methods":[{"name":"<init>","parameterTypes":[] }]
}, },
{
"name":"ch.qos.logback.classic.encoder.PatternLayoutEncoder",
"queryAllPublicMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"ch.qos.logback.classic.filter.ThresholdFilter",
"queryAllPublicMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"setLevel","parameterTypes":["java.lang.String"] }]
},
{ {
"name":"ch.qos.logback.classic.joran.SerializedModelConfigurator", "name":"ch.qos.logback.classic.joran.SerializedModelConfigurator",
"methods":[{"name":"<init>","parameterTypes":[] }] "methods":[{"name":"<init>","parameterTypes":[] }]
}, },
{
"name":"ch.qos.logback.classic.pattern.DateConverter",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"ch.qos.logback.classic.pattern.LevelConverter",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"ch.qos.logback.classic.pattern.LineSeparatorConverter",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"ch.qos.logback.classic.pattern.LoggerConverter",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"ch.qos.logback.classic.pattern.MessageConverter",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"ch.qos.logback.classic.pattern.ThreadConverter",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{ {
"name":"ch.qos.logback.classic.util.DefaultJoranConfigurator", "name":"ch.qos.logback.classic.util.DefaultJoranConfigurator",
"methods":[{"name":"<init>","parameterTypes":[] }] "methods":[{"name":"<init>","parameterTypes":[] }]
}, },
{
"name":"ch.qos.logback.core.ConsoleAppender",
"queryAllPublicMethods":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"ch.qos.logback.core.OutputStreamAppender",
"methods":[{"name":"setEncoder","parameterTypes":["ch.qos.logback.core.encoder.Encoder"] }]
},
{
"name":"ch.qos.logback.core.UnsynchronizedAppenderBase",
"methods":[{"name":"addFilter","parameterTypes":["ch.qos.logback.core.filter.Filter"] }]
},
{
"name":"ch.qos.logback.core.encoder.Encoder",
"methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
},
{
"name":"ch.qos.logback.core.encoder.LayoutWrappingEncoder",
"methods":[{"name":"setParent","parameterTypes":["ch.qos.logback.core.spi.ContextAware"] }]
},
{
"name":"ch.qos.logback.core.filter.Filter",
"methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
},
{
"name":"ch.qos.logback.core.pattern.PatternLayoutEncoderBase",
"methods":[{"name":"setPattern","parameterTypes":["java.lang.String"] }]
},
{
"name":"ch.qos.logback.core.spi.ContextAware",
"methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
},
{ {
"name":"com.fasterxml.jackson.databind.ext.Java7SupportImpl", "name":"com.fasterxml.jackson.databind.ext.Java7SupportImpl",
"methods":[{"name":"<init>","parameterTypes":[] }] "methods":[{"name":"<init>","parameterTypes":[] }]
@ -92,14 +162,30 @@
"name":"com.sun.crypto.provider.GaloisCounterMode$AESGCM", "name":"com.sun.crypto.provider.GaloisCounterMode$AESGCM",
"methods":[{"name":"<init>","parameterTypes":[] }] "methods":[{"name":"<init>","parameterTypes":[] }]
}, },
{
"name":"com.sun.crypto.provider.HmacCore$HmacSHA256",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{ {
"name":"com.sun.crypto.provider.HmacCore$HmacSHA384", "name":"com.sun.crypto.provider.HmacCore$HmacSHA384",
"methods":[{"name":"<init>","parameterTypes":[] }] "methods":[{"name":"<init>","parameterTypes":[] }]
}, },
{
"name":"com.sun.crypto.provider.TlsKeyMaterialGenerator",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{ {
"name":"com.sun.crypto.provider.TlsMasterSecretGenerator", "name":"com.sun.crypto.provider.TlsMasterSecretGenerator",
"methods":[{"name":"<init>","parameterTypes":[] }] "methods":[{"name":"<init>","parameterTypes":[] }]
}, },
{
"name":"com.sun.crypto.provider.TlsPrfGenerator$V12",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{ {
"name":"com.zaxxer.hikari.HikariConfig", "name":"com.zaxxer.hikari.HikariConfig",
"allDeclaredFields":true, "allDeclaredFields":true,
@ -117,12 +203,19 @@
{ {
"name":"java.io.FilePermission" "name":"java.io.FilePermission"
}, },
{
"name":"java.lang.Class",
"methods":[{"name":"getPermittedSubclasses","parameterTypes":[] }, {"name":"getRecordComponents","parameterTypes":[] }, {"name":"isRecord","parameterTypes":[] }, {"name":"isSealed","parameterTypes":[] }]
},
{ {
"name":"java.lang.ClassValue" "name":"java.lang.ClassValue"
}, },
{ {
"name":"java.lang.Module" "name":"java.lang.Module"
}, },
{
"name":"java.lang.Object"
},
{ {
"name":"java.lang.RuntimePermission" "name":"java.lang.RuntimePermission"
}, },
@ -139,6 +232,10 @@
{ {
"name":"java.lang.invoke.CallSite" "name":"java.lang.invoke.CallSite"
}, },
{
"name":"java.lang.reflect.RecordComponent",
"methods":[{"name":"getName","parameterTypes":[] }, {"name":"getType","parameterTypes":[] }]
},
{ {
"name":"java.net.NetPermission" "name":"java.net.NetPermission"
}, },
@ -182,6 +279,13 @@
{ {
"name":"java.sql.Date" "name":"java.sql.Date"
}, },
{
"name":"java.sql.ResultSet"
},
{
"name":"java.sql.SQLException",
"fields":[{"name":"next"}]
},
{ {
"name":"java.util.Date" "name":"java.util.Date"
}, },
@ -237,6 +341,15 @@
{ {
"name":"jdk.internal.misc.Unsafe" "name":"jdk.internal.misc.Unsafe"
}, },
{
"name":"kotlin.Any"
},
{
"name":"kotlin.Boolean"
},
{
"name":"kotlin.Int"
},
{ {
"name":"kotlin.Metadata", "name":"kotlin.Metadata",
"queryAllDeclaredMethods":true, "queryAllDeclaredMethods":true,
@ -246,6 +359,12 @@
"name":"kotlin.SafePublicationLazyImpl", "name":"kotlin.SafePublicationLazyImpl",
"fields":[{"name":"_value"}] "fields":[{"name":"_value"}]
}, },
{
"name":"kotlin.String"
},
{
"name":"kotlin.Unit"
},
{ {
"name":"kotlin.jvm.internal.DefaultConstructorMarker" "name":"kotlin.jvm.internal.DefaultConstructorMarker"
}, },
@ -253,6 +372,10 @@
"name":"kotlin.reflect.jvm.internal.ReflectionFactoryImpl", "name":"kotlin.reflect.jvm.internal.ReflectionFactoryImpl",
"methods":[{"name":"<init>","parameterTypes":[] }] "methods":[{"name":"<init>","parameterTypes":[] }]
}, },
{
"name":"kotlin.reflect.jvm.internal.impl.resolve.scopes.DescriptorKindFilter",
"allPublicFields":true
},
{ {
"name":"kotlinx.coroutines.CancellableContinuationImpl", "name":"kotlinx.coroutines.CancellableContinuationImpl",
"fields":[{"name":"_decisionAndIndex$volatile"}, {"name":"_parentHandle$volatile"}, {"name":"_state$volatile"}] "fields":[{"name":"_decisionAndIndex$volatile"}, {"name":"_parentHandle$volatile"}, {"name":"_state$volatile"}]
@ -295,12 +418,29 @@
}, },
{ {
"name":"net.dv8tion.jda.api.hooks.ListenerAdapter", "name":"net.dv8tion.jda.api.hooks.ListenerAdapter",
"methods":[{"name":"onGatewayPing","parameterTypes":["net.dv8tion.jda.api.events.GatewayPingEvent"] }, {"name":"onGenericGuild","parameterTypes":["net.dv8tion.jda.api.events.guild.GenericGuildEvent"] }, {"name":"onGenericSession","parameterTypes":["net.dv8tion.jda.api.events.session.GenericSessionEvent"] }, {"name":"onGuildReady","parameterTypes":["net.dv8tion.jda.api.events.guild.GuildReadyEvent"] }, {"name":"onHttpRequest","parameterTypes":["net.dv8tion.jda.api.events.http.HttpRequestEvent"] }, {"name":"onReady","parameterTypes":["net.dv8tion.jda.api.events.session.ReadyEvent"] }, {"name":"onShutdown","parameterTypes":["net.dv8tion.jda.api.events.session.ShutdownEvent"] }, {"name":"onStatusChange","parameterTypes":["net.dv8tion.jda.api.events.StatusChangeEvent"] }] "methods":[{"name":"onGatewayPing","parameterTypes":["net.dv8tion.jda.api.events.GatewayPingEvent"] }, {"name":"onGenericGuild","parameterTypes":["net.dv8tion.jda.api.events.guild.GenericGuildEvent"] }, {"name":"onGenericSession","parameterTypes":["net.dv8tion.jda.api.events.session.GenericSessionEvent"] }, {"name":"onGuildReady","parameterTypes":["net.dv8tion.jda.api.events.guild.GuildReadyEvent"] }, {"name":"onHttpRequest","parameterTypes":["net.dv8tion.jda.api.events.http.HttpRequestEvent"] }, {"name":"onReady","parameterTypes":["net.dv8tion.jda.api.events.session.ReadyEvent"] }, {"name":"onSessionDisconnect","parameterTypes":["net.dv8tion.jda.api.events.session.SessionDisconnectEvent"] }, {"name":"onSessionResume","parameterTypes":["net.dv8tion.jda.api.events.session.SessionResumeEvent"] }, {"name":"onShutdown","parameterTypes":["net.dv8tion.jda.api.events.session.ShutdownEvent"] }, {"name":"onStatusChange","parameterTypes":["net.dv8tion.jda.api.events.StatusChangeEvent"] }]
}, },
{ {
"name":"net.dv8tion.jda.internal.utils.FallbackLogger", "name":"net.dv8tion.jda.internal.utils.FallbackLogger",
"methods":[{"name":"<init>","parameterTypes":["java.lang.String"] }] "methods":[{"name":"<init>","parameterTypes":["java.lang.String"] }]
}, },
{
"name":"org.jetbrains.exposed.dao.id.EntityID"
},
{
"name":"org.jetbrains.exposed.sql.ColumnType",
"methods":[{"name":"getNullable","parameterTypes":[] }, {"name":"setNullable","parameterTypes":["boolean"] }]
},
{
"name":"org.jetbrains.exposed.sql.IColumnType"
},
{
"name":"org.jetbrains.exposed.sql.IntegerColumnType",
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"getNullable","parameterTypes":[] }, {"name":"setNullable","parameterTypes":["boolean"] }]
},
{
"name":"org.jetbrains.exposed.sql.statements.api.PreparedStatementApi"
},
{ {
"name":"org.mariadb.jdbc.Configuration", "name":"org.mariadb.jdbc.Configuration",
"allDeclaredFields":true "allDeclaredFields":true
@ -322,10 +462,34 @@
{ {
"name":"space.mori.chzzk_bot.discord.CommandInterface" "name":"space.mori.chzzk_bot.discord.CommandInterface"
}, },
{
"name":"space.mori.chzzk_bot.discord.commands.AddCommand",
"fields":[{"name":"INSTANCE"}]
},
{ {
"name":"space.mori.chzzk_bot.discord.commands.Ping", "name":"space.mori.chzzk_bot.discord.commands.Ping",
"fields":[{"name":"INSTANCE"}] "fields":[{"name":"INSTANCE"}]
}, },
{
"name":"space.mori.chzzk_bot.discord.commands.Register",
"fields":[{"name":"INSTANCE"}]
},
{
"name":"space.mori.chzzk_bot.discord.commands.RemoveCommand",
"fields":[{"name":"INSTANCE"}]
},
{
"name":"space.mori.chzzk_bot.discord.commands.UpdateCommand",
"fields":[{"name":"INSTANCE"}]
},
{
"name":"space.mori.chzzk_bot.models.Command",
"methods":[{"name":"<init>","parameterTypes":["org.jetbrains.exposed.dao.id.EntityID"] }]
},
{
"name":"space.mori.chzzk_bot.models.User",
"methods":[{"name":"<init>","parameterTypes":["org.jetbrains.exposed.dao.id.EntityID"] }]
},
{ {
"name":"sun.security.pkcs12.PKCS12KeyStore", "name":"sun.security.pkcs12.PKCS12KeyStore",
"methods":[{"name":"<init>","parameterTypes":[] }] "methods":[{"name":"<init>","parameterTypes":[] }]
@ -342,6 +506,14 @@
"name":"sun.security.provider.DSA$SHA256withDSA", "name":"sun.security.provider.DSA$SHA256withDSA",
"methods":[{"name":"<init>","parameterTypes":[] }] "methods":[{"name":"<init>","parameterTypes":[] }]
}, },
{
"name":"sun.security.provider.JavaKeyStore$DualFormatJKS",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"sun.security.provider.JavaKeyStore$JKS",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{ {
"name":"sun.security.provider.NativePRNG", "name":"sun.security.provider.NativePRNG",
"methods":[{"name":"<init>","parameterTypes":[] }, {"name":"<init>","parameterTypes":["java.security.SecureRandomParameters"] }] "methods":[{"name":"<init>","parameterTypes":[] }, {"name":"<init>","parameterTypes":["java.security.SecureRandomParameters"] }]
@ -386,6 +558,10 @@
"name":"sun.security.rsa.RSAPSSSignature", "name":"sun.security.rsa.RSAPSSSignature",
"methods":[{"name":"<init>","parameterTypes":[] }] "methods":[{"name":"<init>","parameterTypes":[] }]
}, },
{
"name":"sun.security.rsa.RSASignature$SHA1withRSA",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{ {
"name":"sun.security.rsa.RSASignature$SHA224withRSA", "name":"sun.security.rsa.RSASignature$SHA224withRSA",
"methods":[{"name":"<init>","parameterTypes":[] }] "methods":[{"name":"<init>","parameterTypes":[] }]
@ -394,6 +570,10 @@
"name":"sun.security.rsa.RSASignature$SHA256withRSA", "name":"sun.security.rsa.RSASignature$SHA256withRSA",
"methods":[{"name":"<init>","parameterTypes":[] }] "methods":[{"name":"<init>","parameterTypes":[] }]
}, },
{
"name":"sun.security.rsa.RSASignature$SHA384withRSA",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{ {
"name":"sun.security.ssl.KeyManagerFactoryImpl$SunX509", "name":"sun.security.ssl.KeyManagerFactoryImpl$SunX509",
"methods":[{"name":"<init>","parameterTypes":[] }] "methods":[{"name":"<init>","parameterTypes":[] }]
@ -402,6 +582,10 @@
"name":"sun.security.ssl.SSLContextImpl$DefaultSSLContext", "name":"sun.security.ssl.SSLContextImpl$DefaultSSLContext",
"methods":[{"name":"<init>","parameterTypes":[] }] "methods":[{"name":"<init>","parameterTypes":[] }]
}, },
{
"name":"sun.security.ssl.SSLContextImpl$TLS12Context",
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{ {
"name":"sun.security.ssl.SSLContextImpl$TLSContext", "name":"sun.security.ssl.SSLContextImpl$TLSContext",
"methods":[{"name":"<init>","parameterTypes":[] }] "methods":[{"name":"<init>","parameterTypes":[] }]
@ -463,5 +647,53 @@
{ {
"name":"sun.security.x509.SubjectKeyIdentifierExtension", "name":"sun.security.x509.SubjectKeyIdentifierExtension",
"methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] "methods":[{"name":"<init>","parameterTypes":["java.lang.Boolean","java.lang.Object"] }]
},
{
"name":"xyz.r2turntrue.chzzk4j.chat.WsMessageBase",
"allDeclaredFields":true
},
{
"name":"xyz.r2turntrue.chzzk4j.chat.WsMessageClientboundConnected",
"allDeclaredFields":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"xyz.r2turntrue.chzzk4j.chat.WsMessageClientboundConnected$Body",
"allDeclaredFields":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"xyz.r2turntrue.chzzk4j.chat.WsMessageServerboundConnect",
"allDeclaredFields":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"xyz.r2turntrue.chzzk4j.chat.WsMessageServerboundConnect$Body",
"allDeclaredFields":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"xyz.r2turntrue.chzzk4j.types.ChzzkUser",
"allDeclaredFields":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"xyz.r2turntrue.chzzk4j.types.channel.ChzzkChannel",
"allDeclaredFields":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"xyz.r2turntrue.chzzk4j.types.channel.ChzzkChannelFollowingData",
"allDeclaredFields":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"xyz.r2turntrue.chzzk4j.types.channel.ChzzkChannelPersonalData",
"allDeclaredFields":true,
"methods":[{"name":"<init>","parameterTypes":[] }]
},
{
"name":"xyz.r2turntrue.chzzk4j.types.channel.ChzzkPartialChannel",
"allDeclaredFields":true
} }
] ]

View File

@ -12,10 +12,14 @@
"pattern":"\\QMETA-INF/services/java.sql.Driver\\E" "pattern":"\\QMETA-INF/services/java.sql.Driver\\E"
}, { }, {
"pattern":"\\QMETA-INF/services/java.time.zone.ZoneRulesProvider\\E" "pattern":"\\QMETA-INF/services/java.time.zone.ZoneRulesProvider\\E"
}, {
"pattern":"\\QMETA-INF/services/javax.xml.parsers.SAXParserFactory\\E"
}, { }, {
"pattern":"\\QMETA-INF/services/kotlin.reflect.jvm.internal.impl.resolve.ExternalOverridabilityCondition\\E" "pattern":"\\QMETA-INF/services/kotlin.reflect.jvm.internal.impl.resolve.ExternalOverridabilityCondition\\E"
}, { }, {
"pattern":"\\QMETA-INF/services/kotlin.reflect.jvm.internal.impl.util.ModuleVisibilityHelper\\E" "pattern":"\\QMETA-INF/services/kotlin.reflect.jvm.internal.impl.util.ModuleVisibilityHelper\\E"
}, {
"pattern":"\\QMETA-INF/services/org.jetbrains.exposed.dao.id.EntityIDFactory\\E"
}, { }, {
"pattern":"\\QMETA-INF/services/org.jetbrains.exposed.sql.DatabaseConnectionAutoRegistration\\E" "pattern":"\\QMETA-INF/services/org.jetbrains.exposed.sql.DatabaseConnectionAutoRegistration\\E"
}, { }, {
@ -24,6 +28,8 @@
"pattern":"\\QMETA-INF/services/org.mariadb.jdbc.plugin.Codec\\E" "pattern":"\\QMETA-INF/services/org.mariadb.jdbc.plugin.Codec\\E"
}, { }, {
"pattern":"\\QMETA-INF/services/org.slf4j.spi.SLF4JServiceProvider\\E" "pattern":"\\QMETA-INF/services/org.slf4j.spi.SLF4JServiceProvider\\E"
}, {
"pattern":"\\Qkotlin/kotlin.kotlin_builtins\\E"
}, { }, {
"pattern":"\\Qlogback-test.scmo\\E" "pattern":"\\Qlogback-test.scmo\\E"
}, { }, {