Compare commits

...

92 Commits

Author SHA1 Message Date
Sheldan
a1ea57a0f3 [maven-release-plugin] prepare release sissi-1.4.17 2023-09-07 23:52:48 +02:00
Sheldan
23b554c93f [SIS-xxx] preparing for new release and upgrade of abstracto 2023-09-07 23:49:24 +02:00
Sheldan
5671c5019a [maven-release-plugin] prepare for next development iteration 2023-09-07 21:35:48 +02:00
Sheldan
fbb0876c7f [maven-release-plugin] prepare release sissi-1.4.16 2023-09-07 21:35:44 +02:00
Sheldan
bbaee9a47a [SIS-xxx] preparing for new release and upgrade of abstracto 2023-09-07 21:16:17 +02:00
Sheldan
b9f2a06173 [maven-release-plugin] prepare for next development iteration 2023-09-03 14:05:45 +02:00
Sheldan
55ba69bb0f [maven-release-plugin] prepare release sissi-1.4.15 2023-09-03 14:05:42 +02:00
Sheldan
9ed71b8660 [SIS-xxx] preparing for new release and upgrade of abstracto 2023-09-03 14:04:54 +02:00
Sheldan
28cf141a02 [maven-release-plugin] prepare for next development iteration 2023-09-03 01:18:54 +02:00
Sheldan
03ca4d128d [maven-release-plugin] prepare release sissi-1.4.14 2023-09-03 01:18:47 +02:00
Sheldan
ff2029819d [SIS-xxx] preparing for new release 2023-09-03 01:15:18 +02:00
Sheldan
a26503650e [SIS-24] adding ability to only search quotes of a given parameter for a text
changing quote search to return a random matching quote
adding local function to tilt to update packages
2023-09-03 00:48:15 +02:00
Sheldan
7a37f7e040 [SIS-xxx] fixing tilt file caching
updating dashboards to filter for namespace
upgrading to new abstracto version -snapshot
2023-09-02 21:28:13 +02:00
Sheldan
0073d5b069 [maven-release-plugin] prepare for next development iteration 2023-08-30 01:23:11 +02:00
Sheldan
c210e34437 [maven-release-plugin] prepare release sissi-1.4.13 2023-08-30 01:23:06 +02:00
Sheldan
7a43b23d68 [SIS-xxx] fixing single core jdk 17 issue
preparing for new version
2023-08-30 01:22:28 +02:00
Sheldan
7c15648e75 [maven-release-plugin] prepare for next development iteration 2023-08-30 01:08:06 +02:00
Sheldan
d629bf633f [maven-release-plugin] prepare release sissi-1.4.12 2023-08-30 01:08:02 +02:00
Sheldan
4115037141 [SIS-xxx] prepare for release 2023-08-30 01:07:38 +02:00
Sheldan
5d02bb99d4 [SIS-xxx] corrected hook weight for db credentials 2023-08-30 01:07:08 +02:00
Sheldan
96bdc3d089 [maven-release-plugin] prepare for next development iteration 2023-08-30 00:50:04 +02:00
Sheldan
71546fcc89 [maven-release-plugin] prepare release sissi-1.4.11 2023-08-30 00:50:00 +02:00
Sheldan
22c330c7e4 [SIS-xxx] reducing hook weight for db credentials 2023-08-30 00:49:24 +02:00
Sheldan
fd402a966a [SIS-xxx] changing db secrets to be created before installation 2023-08-30 00:49:03 +02:00
Sheldan
b3029deea4 [maven-release-plugin] prepare for next development iteration 2023-08-30 00:34:50 +02:00
Sheldan
24b23c445f [maven-release-plugin] prepare release sissi-1.4.10 2023-08-30 00:34:46 +02:00
Sheldan
a9c44e24f1 prepare for release 2023-08-30 00:34:22 +02:00
Sheldan
7deee4008d correct config deployment job helm hooks 2023-08-30 00:33:37 +02:00
Sheldan
2ab922cc84 [maven-release-plugin] prepare for next development iteration 2023-08-30 00:12:31 +02:00
Sheldan
c6a7b60e41 [maven-release-plugin] prepare release sissi-1.4.9 2023-08-30 00:12:27 +02:00
Sheldan
49974648b6 making probes configurable 2023-08-30 00:11:48 +02:00
Sheldan
cd7580f45d [maven-release-plugin] prepare for next development iteration 2023-08-29 23:55:21 +02:00
Sheldan
076afb35b4 [maven-release-plugin] prepare release sissi-1.4.8 2023-08-29 23:55:17 +02:00
Sheldan
f901aeaefc [SIS-xxx] renaming sissi run image 2023-08-29 23:54:47 +02:00
Sheldan
6b37de3db5 [maven-release-plugin] prepare for next development iteration 2023-08-29 23:26:28 +02:00
Sheldan
0b80e351a5 [maven-release-plugin] prepare release sissi-1.4.7 2023-08-29 23:26:24 +02:00
Sheldan
3fe47ab682 [SIS-xxx] prepare for release 2023-08-29 23:25:56 +02:00
Sheldan
9b69fe5f2d [SIS-xxx] removing grafana credentials secret from helm chart 2023-08-29 23:25:03 +02:00
Sheldan
953eb1b4ff [maven-release-plugin] prepare for next development iteration 2023-08-28 00:06:52 +02:00
Sheldan
876dd82d87 [maven-release-plugin] prepare release sissi-1.4.6 2023-08-28 00:06:34 +02:00
Sheldan
454d66c71e [SIS-xxx] changing repository for bot deployment in k8s 2023-08-28 00:05:59 +02:00
Sheldan
87f72a077d [maven-release-plugin] prepare for next development iteration 2023-08-27 23:56:33 +02:00
Sheldan
62c27d1461 [maven-release-plugin] prepare release sissi-1.4.5 2023-08-27 23:56:29 +02:00
Sheldan
3b2bbb1dce [SIS-xxx] preparing for 1.4.5 release 2023-08-27 23:55:36 +02:00
Sheldan
8f40a95cbe [maven-release-plugin] prepare for next development iteration 2023-08-27 23:48:06 +02:00
Sheldan
5e9518de71 [maven-release-plugin] prepare release sissi-1.4.4 2023-08-27 23:48:02 +02:00
Sheldan
0ecab3b21b [SIS-xxx] preparing for 1.4.4 release 2023-08-27 23:42:57 +02:00
Sheldan
5e0e546eb4 [maven-release-plugin] prepare for next development iteration 2023-08-27 23:32:57 +02:00
Sheldan
ade0d4e57d [maven-release-plugin] prepare release sissi-1.4.3 2023-08-27 23:32:53 +02:00
Sheldan
26b08c593c [SIS-xxx] preparing for 1.4.2 release 2023-08-27 23:32:25 +02:00
Sheldan
888f2bd402 [SIS-xxx] fixing env file loading 2023-08-27 23:31:12 +02:00
Sheldan
eb369d9116 [maven-release-plugin] prepare for next development iteration 2023-08-27 23:17:25 +02:00
Sheldan
f2acdbdd81 [maven-release-plugin] prepare release sissi-1.4.2 2023-08-27 23:17:21 +02:00
Sheldan
d65f6d380f [SIS-xxx] introducing helm chart
restructuring
2023-08-27 23:12:01 +02:00
Sheldan
30d45952be [maven-release-plugin] prepare for next development iteration 2023-07-22 18:29:23 +02:00
Sheldan
068cbdb33c [maven-release-plugin] prepare release sissi-1.4.1 2023-07-22 18:29:19 +02:00
Sheldan
effca93b7a [SIS-xxx] upgrading to abstracto 1.5.1 2023-07-22 18:26:51 +02:00
Sheldan
ac815b5972 [SIS-22] fixing always url encoding the location for meetups 2023-07-10 01:31:21 +02:00
Sheldan
e6cccef48d [SIS-21] fixing meetup title not being escaped in meetup list response 2023-07-10 01:07:21 +02:00
Sheldan
4f35aa56f4 [maven-release-plugin] prepare for next development iteration 2023-07-09 23:44:53 +02:00
Sheldan
66204ca061 [maven-release-plugin] prepare release sissi-1.4.0 2023-07-09 23:44:49 +02:00
Sheldan
2960173517 [SIS-xxx] prepare for release
upgrading to java 17
upgrading to abstracto 1.5.0
2023-07-09 23:37:49 +02:00
Sheldan
b810c25613 [maven-release-plugin] prepare for next development iteration 2023-06-04 21:41:53 +02:00
Sheldan
583c2cc4be [maven-release-plugin] prepare release sissi-1.3.29 2023-06-04 21:41:49 +02:00
Sheldan
0c36564331 [SIS-xxx] prepare for release 2023-06-04 21:14:24 +02:00
Sheldan
d7bd458bed [SIS-xxx] limiting shown meetups to the ones created in the channel 2023-05-23 01:11:45 +02:00
Sheldan
bbcd77e3c8 [maven-release-plugin] prepare for next development iteration 2023-05-19 00:47:13 +02:00
Sheldan
ec166167f4 [maven-release-plugin] prepare release sissi-1.3.28 2023-05-19 00:47:09 +02:00
Sheldan
d5b4835d1f [SIS-xxx] preparing for release 2023-05-19 00:43:40 +02:00
Sheldan
41304551e4 [SIS-xxx] preparing for release 2023-05-19 00:25:39 +02:00
Sheldan
279959f256 [maven-release-plugin] prepare for next development iteration 2023-05-19 00:06:57 +02:00
Sheldan
7cc0e8e21c [maven-release-plugin] prepare release sissi-1.3.27 2023-05-19 00:06:53 +02:00
Sheldan
87e9122c41 [SIS-xxx] preparing for release 2023-05-19 00:06:18 +02:00
Sheldan
f22cc03e14 [maven-release-plugin] prepare for next development iteration 2023-05-18 23:22:59 +02:00
Sheldan
84b103cfba [maven-release-plugin] prepare release sissi-1.3.26 2023-05-18 23:22:54 +02:00
Sheldan
a015e01c40 [SIS-xxx] preparing for release 2023-05-18 23:22:21 +02:00
Sheldan
981db7b43f [SIS-20] adding feature to attach an ics file to meetups
can be toggled via feature mode
2023-05-18 22:49:50 +02:00
Sheldan
65560991bc [maven-release-plugin] prepare for next development iteration 2023-03-29 23:24:32 +02:00
Sheldan
b914ba035f [maven-release-plugin] prepare release sissi-1.3.25 2023-03-29 23:24:27 +02:00
Sheldan
d3e77f17ec [SIS-xxx] preparing for release 2023-03-29 23:23:09 +02:00
Sheldan
9498458165 [SIS-xxx] enabling emote usage tracking 2023-03-29 23:22:45 +02:00
Sheldan
03a112fb43 [SIS-xxx] update license 2023-03-20 23:18:11 +01:00
Sheldan
782773fef5 [SIS-xxx] fixed missing parameter for bot service in docker compose 2023-03-19 10:33:43 +01:00
Sheldan
5076e79c1d [maven-release-plugin] prepare for next development iteration 2023-03-19 00:39:42 +01:00
Sheldan
ac1baa4734 [maven-release-plugin] prepare release sissi-1.3.24 2023-03-19 00:39:39 +01:00
Sheldan
2c508665be [SIS-xxx] preparing for release 2023-03-19 00:13:48 +01:00
Sheldan
1023951a76 [maven-release-plugin] prepare for next development iteration 2023-02-26 11:23:30 +01:00
Sheldan
a1923427a0 [maven-release-plugin] prepare release sissi-1.3.23 2023-02-26 11:23:26 +01:00
Sheldan
4c8ca91712 [SIS-xxx] preparing for release 2023-02-26 11:03:00 +01:00
Sheldan
f78ab3372e [SIS-17] fixing meetup failing to create if no location is provided 2023-02-22 16:16:08 +01:00
Sheldan
c70815f25d [SIS-xxx] changing lvl up notification message 2023-02-20 11:44:04 +01:00
Sheldan
7ee3653ab9 [maven-release-plugin] prepare for next development iteration 2023-02-15 00:39:16 +01:00
119 changed files with 2280 additions and 3315 deletions

View File

@@ -17,11 +17,14 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 1.8
uses: actions/setup-java@v1
- uses: actions/checkout@v3
with:
java-version: 1.8
persist-credentials: false
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: 17
- name: Build with Maven
run: mvn -s settings.xml -B install --file pom.xml
env:

View File

@@ -6,13 +6,14 @@ jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
with:
persist-credentials: false
- name: Set up Java for publishing to GitHub Packages
uses: actions/setup-java@v1
uses: actions/setup-java@v3
with:
java-version: 1.8
distribution: 'corretto'
java-version: 17
- name: Load current version
id: version
run: echo "version=$(mvn -s settings.xml --file pom.xml -q -Dexec.executable="echo" -Dexec.args='${project.version}' --non-recursive exec:exec)" >> $GITHUB_ENV
@@ -22,17 +23,26 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
user: Sheldan
token: ${{ secrets.ABSTRACTO_PAT }}
- name: Login to GitHub Packages Docker Registry
uses: docker/login-action@v1
- name: Login to Harbor
uses: docker/login-action@v2
with:
registry: docker.pkg.github.com
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Push deployment container
registry: harbor.sheldan.dev
username: ${{ secrets.HARBOR_USERNAME }}
password: ${{ secrets.HARBOR_TOKEN }}
- name: Load env files
id: dotenv
uses: falti/dotenv-action@v1.0.4
with:
path: ./deployment/image-packaging/src/main/docker/.env
- name: Push container
working-directory: ./deployment/image-packaging/src/main/docker
run: docker-compose build && docker-compose push
env:
REGISTRY_PREFIX: docker.pkg.github.com/sheldan/sissi/
VERSION: ${{ env.version }}
ABSTRACTO_VERSION: 1.4.20
ABSTRACTO_REGISTRY_PREFIX: docker.pkg.github.com/sheldan/abstracto/
REGISTRY_PREFIX: ${{ steps.dotenv.outputs.registry_prefix }}
VERSION: ${{ steps.dotenv.outputs.version }}
- name: Helm push
working-directory: ./deployment/helm/
run: |-
helm registry login -u '${{ secrets.HARBOR_USERNAME }}' -p '${{ secrets.HARBOR_TOKEN }}' harbor.sheldan.dev
helm package sissi
helm push sissi*.tgz oci://harbor.sheldan.dev/sissi

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2022 Sheldan
Copyright (c) 2023 Sheldan
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

40
Tiltfile Normal file
View File

@@ -0,0 +1,40 @@
allow_k8s_contexts('k8s-cluster')
load('ext://restart_process', 'docker_build_with_restart')
registry = 'harbor.sheldan.dev/sissi/'
local_resource(
'sissi-java-compile',
' mvn install && ' +
' rm -rf application/executable/target/jar-staging && ' +
' unzip -o application/executable/target/sissi-exec.jar -d application/executable/target/jar-staging && ' +
' rsync --delete --delete-excluded --inplace --checksum --exclude="*-SNAPSHOT.jar" -r application/executable/target/jar-staging/ application/executable/target/jar && ' +
' rm -rf application/executable/target/jar/snapshots && ' +
' mkdir application/executable/target/jar/snapshots && ' +
' rsync --delete --delete-excluded --inplace --checksum --include="*/" --include="*-SNAPSHOT.jar" --exclude="*" -r application/executable/target/jar-staging/BOOT-INF/lib/ application/executable/target/jar/snapshots',
deps=['pom.xml'], auto_init=False, trigger_mode = TRIGGER_MODE_MANUAL)
docker_build_with_restart(
registry + 'sissi-bot',
'./application/executable/target/jar',
entrypoint=['java', '-noverify', '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005', '-cp', '.:./lib/*', 'dev.sheldan.sissi.executable.Application'],
dockerfile='./application/executable/Dockerfile',
live_update=[
sync('./application/executable/target/jar/BOOT-INF/lib', '/app/lib'),
sync('./application/executable/target/jar/META-INF', '/app/META-INF'),
sync('./application/executable/target/jar/BOOT-INF/classes', '/app'),
sync('./application/executable/target/jar/snapshots', '/app/lib')
],
)
docker_build(registry + 'sissi-db-data', 'deployment/image-packaging/src/main/docker/db-data/')
docker_build(registry + 'sissi-template-data', 'deployment/image-packaging/src/main/docker/template-data/')
k8s_yaml(helm('deployment/helm/sissi', values=
['./../Sissi-environments/argocd/apps/sissi/values/local/values.yaml',
'secrets://./../Sissi-environments/argocd/apps/sissi/values/local/values.secrets.yaml']
))
local_resource('fetch-packages', 'mvn install -f deployment/image-packaging/pom.xml', auto_init=False, trigger_mode = TRIGGER_MODE_MANUAL)
k8s_resource('chart-sissi', port_forwards='5005:5005')

View File

@@ -0,0 +1,10 @@
FROM amazoncorretto:17.0.8-alpine3.18
RUN apk add entr
WORKDIR /app
ADD BOOT-INF/lib/ /app/lib
ADD snapshots/ /app/lib
ADD META-INF /app/META-INF
ADD BOOT-INF/classes /app
ENTRYPOINT java -cp .:./lib/* dev.sheldan.sissi.executable.Application

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>dev.sheldan.sissi.application</groupId>
<artifactId>application</artifactId>
<version>1.3.22</version>
<version>1.4.17</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>executable</artifactId>
@@ -14,6 +14,7 @@
</properties>
<build>
<finalName>sissi</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
@@ -75,6 +76,11 @@
<artifactId>webservices-impl</artifactId>
</dependency>
<dependency>
<groupId>dev.sheldan.abstracto.modules</groupId>
<artifactId>twitch-impl</artifactId>
</dependency>
<dependency>
<groupId>dev.sheldan.abstracto.modules</groupId>
<artifactId>utility-impl</artifactId>
@@ -130,6 +136,11 @@
<artifactId>logging-impl</artifactId>
</dependency>
<dependency>
<groupId>dev.sheldan.abstracto.modules</groupId>
<artifactId>statistic-impl</artifactId>
</dependency>
<!-- sissi modules -->
<dependency>

View File

@@ -0,0 +1,18 @@
package dev.sheldan.sissi.executable;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests((authorize) -> authorize
.anyRequest().permitAll());
return http.build();
}
}

View File

@@ -1,21 +0,0 @@
spring.datasource.url=jdbc:postgresql://localhost:5432/abstracto
spring.datasource.username=abstracto
spring.datasource.password=abstracto
spring.jpa.properties.hibernate.default_schema=abstracto
spring.quartz.jdbc.initialize-schema=never
spring.jpa.hibernate.ddl-auto = none
spring.jpa.show-sql = false
spring.jpa.properties.hibernate.format_sql = true
log4j.logger.org.hibernate.SQL=trace
log4j.logger.org.hibernate.type.descriptor.sql=trace
log4j.logger.org.hibernate.type=trace
management.metrics.tags.application=sissi
spring.security.user.name=abstracto
spring.security.user.password=password
spring.security.user.roles=USER
spring.application.name=Sissi

View File

@@ -1,11 +1,13 @@
spring.datasource.url=jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_NAME}
spring.datasource.username= ${DB_USER}
spring.datasource.password= ${DB_PASS}
spring.jpa.hibernate.default_schema=${DB_NAME}
spring.jpa.hibernate.default_schema=abstracto
spring.jpa.properties.hibernate.default_schema=abstracto
spring.quartz.jdbc.initialize-schema=never
management.metrics.tags.application=Sissi
spring.security.user.name= ${REST_USER_NAME}
spring.security.user.password= ${REST_PASSWORD}
spring.security.user.roles=USER
management.endpoint.health.probes.enabled=true
management.health.livenessState.enabled=true
management.health.readinessState.enabled=true
spring.application.name=Sissi
spring.application.name=Sissi
spring.main.allow-circular-references=true

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>dev.sheldan.sissi</groupId>
<artifactId>sissi</artifactId>
<version>1.3.22</version>
<version>1.4.17</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>dev.sheldan.sissi.application.module.custom</groupId>
<artifactId>sissi-customizations</artifactId>
<version>1.3.22</version>
<version>1.4.17</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -3,7 +3,7 @@
<parent>
<artifactId>application</artifactId>
<groupId>dev.sheldan.sissi.application</groupId>
<version>1.3.22</version>
<version>1.4.17</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>dev.sheldan.sissi.application</groupId>
<artifactId>sissi-modules</artifactId>
<version>1.3.22</version>
<version>1.4.17</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>dev.sheldan.sissi.application</groupId>
<artifactId>sissi-modules</artifactId>
<version>1.3.22</version>
<version>1.4.17</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -5,6 +5,7 @@ import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
import dev.sheldan.abstracto.core.command.config.HelpInfo;
import dev.sheldan.abstracto.core.command.config.Parameter;
import dev.sheldan.abstracto.core.command.config.validator.MaxStringLengthValidator;
import dev.sheldan.abstracto.core.command.execution.CommandContext;
import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.core.config.FeatureDefinition;
@@ -73,6 +74,7 @@ public class CreateMeetup extends AbstractConditionableCommand {
private static final String DESCRIPTION_PARAMETER = "description";
private static final String LOCATION_PARAMETER = "location";
private static final String CONFIRMATION_TEMPLATE = "createMeetup_confirmation";
private static final String DEFAULT_LOCATION_STRING = "\"\"";
@Override
public CompletableFuture<CommandResult> executeAsync(CommandContext commandContext) {
@@ -87,7 +89,7 @@ public class CreateMeetup extends AbstractConditionableCommand {
}
AUserInAServer organizer = userInServerManagementService.loadOrCreateUser(commandContext.getAuthor());
AChannel meetupChannel = channelManagementService.loadChannel(commandContext.getChannel().getIdLong());
Meetup meetup = meetupManagementServiceBean.createMeetup(meetupTime, meetupTopic, description, organizer, meetupChannel, null);
Meetup meetup = meetupManagementServiceBean.createMeetup(meetupTime, meetupTopic, description, organizer, meetupChannel, DEFAULT_LOCATION_STRING);
String confirmationId = componentService.generateComponentId();
String cancelId = componentService.generateComponentId();
MeetupConfirmationModel model = MeetupConfirmationModel
@@ -124,7 +126,7 @@ public class CreateMeetup extends AbstractConditionableCommand {
if(slashCommandParameterService.hasCommandOption(LOCATION_PARAMETER, event)) {
location = slashCommandParameterService.getCommandOption(LOCATION_PARAMETER, event, String.class);
} else {
location = null;
location = DEFAULT_LOCATION_STRING;
}
Instant meetupTime = Instant.ofEpochSecond(time);
AUserInAServer organizer = userInServerManagementService.loadOrCreateUser(event.getMember());

View File

@@ -49,19 +49,19 @@ public class ListMeetups extends AbstractConditionableCommand {
@Override
public CompletableFuture<CommandResult> executeAsync(CommandContext commandContext) {
MessageToSend messageToSend = getMessageToSend(commandContext.getGuild().getIdLong());
MessageToSend messageToSend = getMessageToSend(commandContext.getGuild().getIdLong(), commandContext.getChannel().getIdLong());
return FutureUtils.toSingleFutureGeneric(channelService.sendMessageToSendToChannel(messageToSend, commandContext.getChannel()))
.thenApply(unused -> CommandResult.fromIgnored());
}
@Override
public CompletableFuture<CommandResult> executeSlash(SlashCommandInteractionEvent event) {
return interactionService.replyMessageToSend(getMessageToSend(event.getGuild().getIdLong()), event)
return interactionService.replyMessageToSend(getMessageToSend(event.getGuild().getIdLong(), event.getChannel().getIdLong()), event)
.thenApply(interactionHook -> CommandResult.fromSuccess());
}
private MessageToSend getMessageToSend(Long serverId) {
List<Meetup> meetups = meetupManagementServiceBean.getIncomingMeetups();
private MessageToSend getMessageToSend(Long serverId, Long channelId) {
List<Meetup> meetups = meetupManagementServiceBean.getIncomingMeetups(serverId, channelId);
List<MeetupListItemModel> listItems = meetups
.stream()
.map(MeetupListItemModel::fromMeetup)

View File

@@ -2,8 +2,14 @@ package dev.sheldan.sissi.module.meetup.config;
import dev.sheldan.abstracto.core.config.FeatureConfig;
import dev.sheldan.abstracto.core.config.FeatureDefinition;
import dev.sheldan.abstracto.core.config.FeatureMode;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
import static dev.sheldan.sissi.module.meetup.config.MeetupFeatureMode.ATTACH_ICS_FILE;
@Component
public class MeetupFeatureConfig implements FeatureConfig {
@Override
@@ -11,4 +17,8 @@ public class MeetupFeatureConfig implements FeatureConfig {
return MeetupFeatureDefinition.MEETUP;
}
@Override
public List<FeatureMode> getAvailableModes() {
return Arrays.asList(ATTACH_ICS_FILE);
}
}

View File

@@ -0,0 +1,15 @@
package dev.sheldan.sissi.module.meetup.config;
import dev.sheldan.abstracto.core.config.FeatureMode;
import lombok.Getter;
@Getter
public enum MeetupFeatureMode implements FeatureMode {
ATTACH_ICS_FILE("attachIcsFile");
private final String key;
MeetupFeatureMode(String key) {
this.key = key;
}
}

View File

@@ -16,6 +16,7 @@ import dev.sheldan.abstracto.core.service.MessageService;
import dev.sheldan.abstracto.core.service.management.ChannelManagementService;
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
import dev.sheldan.abstracto.core.templating.model.MessageToSend;
import dev.sheldan.abstracto.core.utils.FileService;
import dev.sheldan.abstracto.core.utils.FutureUtils;
import dev.sheldan.sissi.module.meetup.config.MeetupFeatureDefinition;
import dev.sheldan.sissi.module.meetup.model.database.Meetup;
@@ -76,6 +77,9 @@ public class MeetupConfirmationListener implements ButtonClickedListener {
@Autowired
private MeetupComponentManagementServiceBean meetupComponentManagementServiceBean;
@Autowired
private FileService fileService;
@Override
public ButtonClickedListenerResult execute(ButtonClickedListenerModel model) {
MeetupConfirmationPayload payload = (MeetupConfirmationPayload) model.getDeserializedPayload();
@@ -115,6 +119,9 @@ public class MeetupConfirmationListener implements ButtonClickedListener {
List<CompletableFuture<Message>> messageFutures = channelService.sendMessageToSendToChannel(messageToSend, model.getEvent().getMessageChannel());
FutureUtils.toSingleFutureGeneric(messageFutures).thenAccept(unused -> {
messageService.deleteMessage(model.getEvent().getMessage());
messageToSend.getAttachedFiles().forEach(attachedFile -> {
fileService.safeDeleteIgnoreException(attachedFile.getFile());
});
Message meetupMessage = messageFutures.get(0).join();
messageService.pinMessage(meetupMessage);
self.persistPayloads(meetupId, serverId, yesButtonId, noButtonId, maybeButtonId, noTimeButtonId, meetupMessage);

View File

@@ -6,7 +6,7 @@ import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import lombok.*;
import javax.persistence.*;
import jakarta.persistence.*;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;

View File

@@ -4,7 +4,7 @@ import dev.sheldan.abstracto.core.models.database.ComponentPayload;
import dev.sheldan.sissi.module.meetup.model.database.embed.MeetupComponentId;
import lombok.*;
import javax.persistence.*;
import jakarta.persistence.*;
import java.time.Instant;
@Builder

View File

@@ -4,7 +4,7 @@ import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.sissi.module.meetup.model.database.embed.MeetupParticipationId;
import lombok.*;
import javax.persistence.*;
import jakarta.persistence.*;
import java.time.Instant;
@Builder

View File

@@ -2,8 +2,8 @@ package dev.sheldan.sissi.module.meetup.model.database.embed;
import lombok.*;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import jakarta.persistence.Column;
import jakarta.persistence.Embeddable;
import java.io.Serializable;
@Embeddable

View File

@@ -2,8 +2,8 @@ package dev.sheldan.sissi.module.meetup.model.database.embed;
import lombok.*;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import jakarta.persistence.Column;
import jakarta.persistence.Embeddable;
import java.io.Serializable;
@Embeddable

View File

@@ -0,0 +1,17 @@
package dev.sheldan.sissi.module.meetup.model.template;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Builder
@Setter
public class MeetupIcsModel {
private Boolean attachIcsFile;
private String iceFileName;
private String icsFormattedCreationTime;
private String icsFormattedStartTime;
private String icsFormattedEndTime;
}

View File

@@ -16,6 +16,7 @@ public class MeetupMessageModel {
private String description;
private Instant meetupTime;
private String location;
private String decodedLocation;
private MemberDisplay organizer;
private Long meetupId;
private String yesId;
@@ -27,4 +28,5 @@ public class MeetupMessageModel {
private List<MemberDisplay> maybeParticipants;
private List<MemberDisplay> noTimeParticipants;
private List<MemberDisplay> declinedParticipants;
private MeetupIcsModel meetupIcsModel;
}

View File

@@ -12,7 +12,6 @@ import java.util.List;
@Repository
public interface MeetupRepository extends JpaRepository<Meetup, ServerSpecificId> {
List<Meetup> findByMeetupTimeLessThan(Instant date);
List<Meetup> findByMeetupTimeGreaterThan(Instant date);
List<Meetup> findByMeetupTimeGreaterThanAndState(Instant date, MeetupState state);
List<Meetup> findByMeetupTimeGreaterThanAndStateAndServer_IdAndMeetupChannel_Id(Instant date, MeetupState state, Long serverId, Long channelId);
List<Meetup> findByState(MeetupState state);
}

View File

@@ -10,9 +10,12 @@ import dev.sheldan.abstracto.core.service.*;
import dev.sheldan.abstracto.core.service.management.ServerManagementService;
import dev.sheldan.abstracto.core.templating.model.MessageToSend;
import dev.sheldan.abstracto.core.templating.service.TemplateService;
import dev.sheldan.abstracto.core.utils.FileService;
import dev.sheldan.abstracto.core.utils.FutureUtils;
import dev.sheldan.abstracto.scheduling.model.JobParameters;
import dev.sheldan.abstracto.scheduling.service.SchedulerService;
import dev.sheldan.sissi.module.meetup.config.MeetupFeatureDefinition;
import dev.sheldan.sissi.module.meetup.config.MeetupFeatureMode;
import dev.sheldan.sissi.module.meetup.model.command.MeetupChangeTimeConfirmationModel;
import dev.sheldan.sissi.module.meetup.model.command.MeetupConfirmationModel;
import dev.sheldan.sissi.module.meetup.model.database.Meetup;
@@ -21,6 +24,7 @@ import dev.sheldan.sissi.module.meetup.model.database.MeetupParticipant;
import dev.sheldan.sissi.module.meetup.model.database.MeetupState;
import dev.sheldan.sissi.module.meetup.model.payload.MeetupChangeTimeConfirmationPayload;
import dev.sheldan.sissi.module.meetup.model.payload.MeetupConfirmationPayload;
import dev.sheldan.sissi.module.meetup.model.template.MeetupIcsModel;
import dev.sheldan.sissi.module.meetup.model.template.MeetupMessageModel;
import dev.sheldan.sissi.module.meetup.model.template.MeetupNotificationModel;
import dev.sheldan.sissi.module.meetup.model.template.MeetupTimeChangedNotificationModel;
@@ -38,6 +42,9 @@ import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.concurrent.CompletableFuture;
@@ -79,6 +86,9 @@ public class MeetupServiceBean {
@Autowired
private MeetupServiceBean self;
@Autowired
private FileService fileService;
@Autowired
private ChannelService channelService;
@@ -91,11 +101,16 @@ public class MeetupServiceBean {
@Autowired
private SchedulerService schedulerService;
@Autowired
private FeatureModeService featureModeService;
@Autowired
private MeetupParticipatorManagementServiceBean meetupParticipatorManagementServiceBean;
@Autowired
private MeetupComponentManagementServiceBean meetupComponentManagementServiceBean;
private static final String ICS_TIME_STAMP_FORMAT = "yMMdd'T'kkmmss'Z'";
private static final DateTimeFormatter ICS_DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern(ICS_TIME_STAMP_FORMAT);
public void storeMeetupConfirmation(MeetupConfirmationModel model) {
AServer server = serverManagementService.loadServer(model.getGuildId());
@@ -126,6 +141,22 @@ public class MeetupServiceBean {
componentPayloadService.createButtonPayload(model.getCancelId(), confirmationPayload, MEETUP_CHANGE_TIME_CONFIRMATION_BUTTON, server);
}
private MeetupIcsModel getMeetupICSModel(Meetup meetup) {
ZonedDateTime startTime = meetup.getMeetupTime().atZone(ZoneId.of("UTC"));
ZonedDateTime endTime = meetup.getMeetupTime().plus(1, ChronoUnit.HOURS).atZone(ZoneId.of("UTC"));
String icsFormattedStartTime = startTime.format(ICS_DATE_TIME_FORMATTER);
String icsFormattedEndTime = endTime.format(ICS_DATE_TIME_FORMATTER);
String icsFormattedMeetupCreationTime = Instant.now().atZone(ZoneId.of("UTC"))
.format(ICS_DATE_TIME_FORMATTER);
boolean attachIcsFile = featureModeService.featureModeActive(MeetupFeatureDefinition.MEETUP, meetup.getServer().getId(), MeetupFeatureMode.ATTACH_ICS_FILE);
return MeetupIcsModel
.builder()
.attachIcsFile(attachIcsFile)
.icsFormattedCreationTime(icsFormattedMeetupCreationTime)
.icsFormattedStartTime(icsFormattedStartTime)
.icsFormattedEndTime(icsFormattedEndTime)
.build();
}
public MeetupMessageModel getMeetupMessageModel(Meetup meetup) {
List<MeetupParticipant> allParticipants = meetup.getParticipants();
@@ -145,11 +176,13 @@ public class MeetupServiceBean {
.stream()
.filter(meetupParticipator -> meetupParticipator.getDecision().equals(MeetupDecision.NO_TIME))
.collect(Collectors.toList());
String rawLocation = java.net.URLDecoder.decode(meetup.getLocation(), StandardCharsets.UTF_8);
return MeetupMessageModel
.builder()
.description(meetup.getDescription())
.topic(meetup.getTopic())
.location(meetup.getLocation())
.decodedLocation(rawLocation)
.noTimeId(meetup.getNoTimeButtonId())
.yesId(meetup.getYesButtonId())
.maybeId(meetup.getMaybeButtonId())
@@ -162,6 +195,7 @@ public class MeetupServiceBean {
.maybeParticipants(getMemberDisplays(maybe))
.cancelled(meetup.getState().equals(MeetupState.CANCELLED))
.organizer(MemberDisplay.fromAUserInAServer(meetup.getOrganizer()))
.meetupIcsModel(getMeetupICSModel(meetup))
.build();
}
@@ -391,8 +425,9 @@ public class MeetupServiceBean {
MessageToSend updatedMeetupMessage = getMeetupMessage(meetupMessageModel);
GuildMessageChannel meetupChannel = channelService.getMessageChannelFromServer(serverId, meetup.getMeetupChannel().getId());
return channelService.editEmbedMessageInAChannel(updatedMeetupMessage.getEmbeds().get(0), meetupChannel, meetup.getMessageId())
return channelService.editMessageInAChannelFuture(updatedMeetupMessage, meetupChannel, meetup.getMessageId())
.thenAccept(message -> log.info("Updated message of meetup {} in channel {} in server {}.", meetupId, meetup.getMeetupChannel().getId(), serverId))
.thenAccept(unused -> fileService.safeDeleteIgnoreException(updatedMeetupMessage.getAttachedFiles().get(0).getFile()))
.exceptionally(throwable -> {
log.info("Failed to update message of meetup {} in channel {} in server {}.", meetupId, meetup.getMeetupChannel().getId(), serverId, throwable);
return null;
@@ -426,6 +461,7 @@ public class MeetupServiceBean {
GuildMessageChannel meetupChannel = channelService.getMessageChannelFromServer(serverId, meetup.getMeetupChannel().getId());
return channelService.editMessageInAChannelFuture(updatedMeetupMessage, meetupChannel, meetup.getMessageId())
.thenAccept(message -> log.info("Updated message of meetup {} in channel {} in server {}.", meetupId, meetup.getMeetupChannel().getId(), serverId))
.thenAccept(unused -> fileService.safeDeleteIgnoreException(updatedMeetupMessage.getAttachedFiles().get(0).getFile()))
.exceptionally(throwable -> {
log.info("Failed to update message of meetup {} in channel {} in server {}.", meetupId, meetup.getMeetupChannel().getId(), serverId, throwable);
return null;

View File

@@ -72,12 +72,8 @@ public class MeetupManagementServiceBean {
return meetupRepository.findByState(MeetupState.CANCELLED);
}
public List<Meetup> getFutureMeetups() {
return meetupRepository.findByMeetupTimeGreaterThan(Instant.now());
}
public List<Meetup> getIncomingMeetups() {
return meetupRepository.findByMeetupTimeGreaterThanAndState(Instant.now(), MeetupState.CONFIRMED);
public List<Meetup> getIncomingMeetups(Long serverId, Long channelId) {
return meetupRepository.findByMeetupTimeGreaterThanAndStateAndServer_IdAndMeetupChannel_Id(Instant.now(), MeetupState.CONFIRMED, serverId, channelId);
}
public void deleteMeetups(List<Meetup> meetups) {

View File

@@ -5,4 +5,8 @@ abstracto.systemConfigs.meetupEarlyReminderSeconds.name=meetupEarlyReminderSecon
abstracto.systemConfigs.meetupEarlyReminderSeconds.longValue=604800
abstracto.systemConfigs.meetupLateReminderSeconds.name=meetupLateReminderSeconds
abstracto.systemConfigs.meetupLateReminderSeconds.longValue=86400
abstracto.systemConfigs.meetupLateReminderSeconds.longValue=86400
abstracto.featureModes.attachIcsFile.featureName=meetup
abstracto.featureModes.attachIcsFile.mode=attachIcsFile
abstracto.featureModes.attachIcsFile.enabled=false

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>dev.sheldan.sissi.application</groupId>
<artifactId>application</artifactId>
<version>1.3.22</version>
<version>1.4.17</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>dev.sheldan.sissi.application</groupId>
<artifactId>sissi-modules</artifactId>
<version>1.3.22</version>
<version>1.4.17</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -21,6 +21,7 @@ import dev.sheldan.sissi.module.quotes.config.QuotesModuleDefinition;
import dev.sheldan.sissi.module.quotes.exception.QuoteNotFoundException;
import dev.sheldan.sissi.module.quotes.model.database.Quote;
import dev.sheldan.sissi.module.quotes.service.QuoteServiceBean;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
import net.dv8tion.jda.api.interactions.InteractionHook;
@@ -28,7 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
@@ -38,6 +39,7 @@ public class QuoteSearch extends AbstractConditionableCommand {
private static final String QUOTE_SEARCH_COMMAND = "quoteSearch";
private static final String QUERY_PARAMETER = "query";
private static final String MEMBER_PARAMETER = "member";
@Autowired
private QuoteServiceBean quoteServiceBean;
@@ -80,7 +82,14 @@ public class QuoteSearch extends AbstractConditionableCommand {
String query = slashCommandParameterService.getCommandOption(QUERY_PARAMETER, event, String.class);
AServer server = serverManagementService.loadServer(event.getGuild().getIdLong());
Optional<Quote> possibleQuote = quoteServiceBean.searchQuote(query, server);
Optional<Quote> possibleQuote;
if(slashCommandParameterService.hasCommandOption(MEMBER_PARAMETER, event)) {
Member targetMember = slashCommandParameterService.getCommandOption(MEMBER_PARAMETER, event, Member.class);
possibleQuote = quoteServiceBean.searchQuote(query, server, targetMember);
} else {
possibleQuote = quoteServiceBean.searchQuote(query, server);
}
Quote quoteToDisplay = possibleQuote.orElseThrow(QuoteNotFoundException::new);
return quoteServiceBean.renderQuoteToMessageToSend(quoteToDisplay)
.thenCompose(messageToSend -> self.replyMessage(event, messageToSend))
@@ -100,7 +109,17 @@ public class QuoteSearch extends AbstractConditionableCommand {
.name(QUERY_PARAMETER)
.type(String.class)
.build();
List<Parameter> parameters = Collections.singletonList(searchParameter);
Parameter memberParameter = Parameter
.builder()
.templated(true)
.name(MEMBER_PARAMETER)
.slashCommandOnly(true)
.optional(true)
.type(Member.class)
.build();
List<Parameter> parameters = Arrays.asList(searchParameter, memberParameter);
HelpInfo helpInfo = HelpInfo
.builder()
.templated(true)

View File

@@ -6,7 +6,7 @@ import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import lombok.*;
import javax.persistence.*;
import jakarta.persistence.*;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;

View File

@@ -2,7 +2,7 @@ package dev.sheldan.sissi.module.quotes.model.database;
import lombok.*;
import javax.persistence.*;
import jakarta.persistence.*;
@Builder
@Entity

View File

@@ -12,6 +12,7 @@ import java.util.List;
@Repository
public interface QuoteRepository extends JpaRepository<Quote, ServerSpecificId> {
List<Quote> findByTextContainingAndServer(String text, AServer server);
List<Quote> findByTextContainingAndServerAndAuthor(String text, AServer server, AUserInAServer author);
List<Quote> findByServer(AServer server);
List<Quote> findByAuthor(AUserInAServer author);
Long countByAuthor(AUserInAServer author);

View File

@@ -214,9 +214,27 @@ public class QuoteServiceBean {
return Optional.empty();
}
if(foundQuotes.size() > 1) {
log.info("Found multiple quotes in server {}, returning first one.", server.getId());
log.info("Found multiple quotes in server {}, returning random one.", server.getId());
int randomIndex = secureRandom.nextInt(foundQuotes.size());
return Optional.of(foundQuotes.get(randomIndex));
} else {
return Optional.of(foundQuotes.get(0));
}
}
public Optional<Quote> searchQuote(String query, AServer server, Member targetMember) {
AUserInAServer author = userInServerManagementService.loadOrCreateUser(targetMember);
List<Quote> foundQuotes = quoteRepository.findByTextContainingAndServerAndAuthor(query, server, author);
if(foundQuotes.isEmpty()) {
return Optional.empty();
}
if(foundQuotes.size() > 1) {
log.info("Found multiple quotes in server {}, returning random one.", server.getId());
int randomIndex = secureRandom.nextInt(foundQuotes.size());
return Optional.of(foundQuotes.get(randomIndex));
} else {
return Optional.of(foundQuotes.get(0));
}
return Optional.of(foundQuotes.get(0));
}
public QuoteStatsModel getQuoteStats(Member member) {

View File

@@ -1,34 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>dev.sheldan.sissi</groupId>
<artifactId>deployment</artifactId>
<version>1.3.22</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>
<artifactId>docker-compose</artifactId>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>assembly-docker-compose-configuration</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/main/assembly/docker-compose.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@@ -1,19 +0,0 @@
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
<id>docker-compose</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<outputDirectory>./docker-compose</outputDirectory>
<directory>${project.basedir}/src/main/resources/</directory>
<includes>
<include>**/*</include>
</includes>
<filtered>true</filtered>
</fileSet>
</fileSets>
</assembly>

View File

@@ -1,34 +0,0 @@
COMPOSE_PROJECT_NAME=sissi
# database configuration
DATABASE_HOST=database
DATABASE_PORT=5432
DATABASE_USER=abstracto
DATABASE_NAME=abstracto
DATABASE_PASSWORD=abstracto
GRAFANA_DATABASE_PASSWORD=grafana
GRAFANA_DATABASE_USER=grafana
# deployment configuration, whether or not the container should execute the parts on startup
EXECUTE_DEPLOYMENT=true
EXECUTE_LIQUIBASE=true
EXECUTE_TEMPLATES=true
# whether or not remote debug should be enabled on the application
REMOTE_DEBUG=false
DEBUG_PORT=5005
TOMCAT_PORT=8080
# authentication for actuator endpoints
REST_USER_NAME=abstracto
REST_PASSWORD=password
# port grafana will be reachable
GRAFANA_PORT=3000
# port prometheus will be reachable
LOKI_PORT=3100
PROMETHEUS_PORT=9090
# port pg admin will be reachable
PGADMIN_PORT=5050
# default authentication for pg admin
PGADMIN_DEFAULT_EMAIL=sheldan@sheldan.dev
DEBRA_DONATION_NOTIFICATION_SERVER_ID=0
PGADMIN_DEFAULT_PASSWORD=admin
TOKEN=<INSERT TOKEN>
YOUTUBE_API_KEY=<INSERT KEY>
SISSI_VERSION=1.3.22

View File

@@ -1,10 +0,0 @@
# Setup for local docker-compose deployment
* Install docker [here](https://docs.docker.com/get-docker/)
* Install docker-compose [here](https://docs.docker.com/compose/install/).
* Execute `docker-compose build` in `image-packaging`.
* Fill out values in `.env` for token and database password. There are some default values, but token is required to be changed.
* Execute `fill-prometheus-file-sh` in order to populate the prometheus config with the correct password (https://github.com/prometheus/prometheus/issues/2357)
* Execute `docker-compose up` in this directory and wait for completion.
* Per default pgAdmin is available on `localhost:5050` with the configured user and password. It will contain a configuration in the servers list.

View File

@@ -1,147 +0,0 @@
version: '3.7'
services:
db:
image: ${REGISTRY_PREFIX}sissi_database:${SISSI_VERSION}
container_name: ${COMPOSE_PROJECT_NAME}_database
restart: always
environment:
POSTGRES_PASSWORD: ${DATABASE_PASSWORD}
POSTGRES_USER: ${DATABASE_USER}
ports:
- "127.0.0.1:${DATABASE_PORT}:5432"
networks:
- sissi
volumes:
- db-data:/var/lib/postgresql/data
deployment_container:
container_name: ${COMPOSE_PROJECT_NAME}_deployment
image: ${REGISTRY_PREFIX}sissi_deployment:${SISSI_VERSION}
depends_on:
- db
environment:
DB_PASS: ${DATABASE_PASSWORD}
DB_HOST: ${COMPOSE_PROJECT_NAME}_${DATABASE_HOST}
DB_PORT: ${DATABASE_PORT}
DB_USER: ${DATABASE_USER}
DB_NAME: ${DATABASE_NAME}
ABSTRACTO_GRAFANA_DB_PASS: ${GRAFANA_DATABASE_PASSWORD}
ABSTRACTO_GRAFANA_DB_USER: ${GRAFANA_DATABASE_USER}
EXECUTE_DEPLOYMENT: ${EXECUTE_DEPLOYMENT}
EXECUTE_LIQUIBASE: ${EXECUTE_LIQUIBASE}
EXECUTE_TEMPLATES: ${EXECUTE_TEMPLATES}
LIQUIBASE_PATH: ${LIQUIBASE_PATH:-/liquibase}
POSTGRES_DRIVER_PATH: ${EXECUTE_DEPLOYMENT:-/postgres/driver.jar}
WAIT_HOSTS: ${COMPOSE_PROJECT_NAME}_${DATABASE_HOST}:${DATABASE_PORT}
networks:
- sissi
bot:
image: ${REGISTRY_PREFIX}sissi:${SISSI_VERSION}
depends_on:
- db
- deployment_container
restart: on-failure
container_name: ${COMPOSE_PROJECT_NAME}bot
environment:
TOKEN: ${TOKEN}
REMOTE_DEBUG: ${REMOTE_DEBUG}
DB_PASS: ${DATABASE_PASSWORD}
DEBRA_DONATION_NOTIFICATION_SERVER_ID: ${DEBRA_DONATION_NOTIFICATION_SERVER_ID}
DB_HOST: ${COMPOSE_PROJECT_NAME}_${DATABASE_HOST}
DB_PORT: ${DATABASE_PORT}
DB_USER: ${DATABASE_USER}
DB_NAME: ${DATABASE_NAME}
REST_USER_NAME: ${REST_USER_NAME}
REST_PASSWORD: ${REST_PASSWORD}
YOUTUBE_API_KEY: ${YOUTUBE_API_KEY}
command: sh -c "while ping -c1 deployment_container &>/dev/null; do sleep 1; done; echo 'Liquibase finished!' && ./start.sh"
ports:
- "127.0.0.1:${DEBUG_PORT}:5005"
- "127.0.0.1:${TOMCAT_PORT}:8080"
networks:
- sissi
volumes:
- bot-logs:/logs
- ./config:/config
pgadmin:
container_name: ${COMPOSE_PROJECT_NAME}_pgadmin
image: ${REGISTRY_PREFIX}sissi_pg_admin:${SISSI_VERSION}
depends_on:
- db
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD}
ports:
- "127.0.0.1:${PGADMIN_PORT}:80"
restart: unless-stopped
networks:
- sissi
prometheus:
container_name: ${COMPOSE_PROJECT_NAME}_prometheus
image: ${REGISTRY_PREFIX}sissi_prometheus:${SISSI_VERSION}
depends_on:
- bot
ports:
- "127.0.0.1:${PROMETHEUS_PORT}:9090"
restart: unless-stopped
networks:
- sissi
volumes:
- ./res/prometheus-scrapper-password-filled:/etc/prometheus/micrometer_password
- prometheus-data:/prometheus
grafana:
container_name: ${COMPOSE_PROJECT_NAME}_grafana
image: ${REGISTRY_PREFIX}sissi_grafana:${SISSI_VERSION}
depends_on:
- prometheus
- bot
ports:
- "127.0.0.1:${GRAFANA_PORT}:3000"
restart: unless-stopped
environment:
DB_PASS: ${GRAFANA_DATABASE_PASSWORD}
DB_HOST: ${COMPOSE_PROJECT_NAME}_${DATABASE_HOST}
DB_PORT: ${DATABASE_PORT}
DB_USER: ${GRAFANA_DATABASE_USER}
DB_NAME: ${DATABASE_NAME}
PROMETHEUS_HOST: '${COMPOSE_PROJECT_NAME}_prometheus'
PROMETHEUS_PORT: 9090
LOKI_HOST: '${COMPOSE_PROJECT_NAME}_loki'
LOKI_PORT: ${LOKI_PORT}
volumes:
- grafana-user-data:/var/lib/grafana
networks:
- sissi
promtail:
container_name: ${COMPOSE_PROJECT_NAME}_promtail
image: ${REGISTRY_PREFIX}sissi_promtail:${SISSI_VERSION}
depends_on:
- bot
restart: unless-stopped
command: -config.file=/mnt/config/promtail-config.yaml
volumes:
- bot-logs:/logs
networks:
- sissi
loki:
container_name: ${COMPOSE_PROJECT_NAME}_loki
image: ${REGISTRY_PREFIX}sissi_loki:${SISSI_VERSION}
depends_on:
- promtail
command: -config.file=/mnt/config/loki-config.yaml
ports:
- "127.0.0.1:${LOKI_PORT}:3100"
restart: unless-stopped
networks:
- sissi
networks:
sissi:
driver: bridge
name: sissi-network
volumes:
db-data:
grafana-user-data:
prometheus-data:
bot-logs:

View File

@@ -1,5 +0,0 @@
#!/bin/bash
set -o allexport
source .env
set +o allexport
envsubst < res/prometheus-scrapper-password > res/prometheus-scrapper-password-filled

View File

@@ -0,0 +1,23 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/

View File

@@ -0,0 +1,24 @@
apiVersion: v2
name: sissi
description: A Helm chart for Kubernetes
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 1.4.17
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
# It is recommended to use it with quotes.
appVersion: "1.4.17"

View File

@@ -0,0 +1,4 @@
base_url: {{ $.Values.grafanaDeployment.grafana.host }}
username: {{ $.Values.grafanaDeployment.grafana.basicAuth.username }}
password: {{ $.Values.grafanaDeployment.grafana.basicAuth.password }}
folder_name: Sissi

View File

@@ -0,0 +1,939 @@
{
"dashboard": {
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "grafana",
"uid": "-- Grafana --"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"links": [],
"liveNow": false,
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"insertNulls": false,
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 0
},
"id": 1,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"editorMode": "code",
"expr": "increase(discord_api_interactions_total{namespace=\"sissi\"}[1m]) /2",
"instant": false,
"legendFormat": "{{ "{{" }} action {{ "}}" }}",
"range": true,
"refId": "A"
}
],
"title": "Discord API Interaction",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"insertNulls": false,
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 0
},
"id": 2,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"editorMode": "code",
"expr": "increase(command_processed_total{namespace=\"sissi\"}[1m]) / 2",
"instant": false,
"legendFormat": "{{ "{{" }}type{{ "}}" }}-{{ "{{" }}status{{ "}}" }}",
"range": true,
"refId": "A"
}
],
"title": "Commands processed",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"insertNulls": false,
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 8
},
"id": 3,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"editorMode": "code",
"expr": "increase(message_total{namespace=\"sissi\"}[1m]) / 2",
"instant": false,
"legendFormat": "{{ "{{" }} action {{ "}}" }}",
"range": true,
"refId": "A"
}
],
"title": "Message events",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"insertNulls": false,
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 8
},
"id": 4,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"editorMode": "code",
"expr": "increase(okhttp_request_total{namespace=\"sissi\"}[1m]) / 2",
"instant": false,
"legendFormat": "{{ "{{" }} http_code {{ "}}" }}",
"range": true,
"refId": "A"
}
],
"title": "HTTP Reponse codes",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"insertNulls": false,
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 16
},
"id": 5,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"editorMode": "code",
"expr": "increase(cache_evictions_total{application=\"$application\", cache=\"messages\", namespace=\"sissi\"}[1m]) / 2",
"instant": false,
"legendFormat": "Cache evictions",
"range": true,
"refId": "A"
},
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"editorMode": "code",
"expr": "increase(cache_gets_total{application=\"$application\", cache=\"messages\", namespace=\"sissi\"}[1m]) / 2",
"hide": false,
"instant": false,
"legendFormat": "Cache gets {{ "{{" }} result {{ "}}" }}",
"range": true,
"refId": "B"
},
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"editorMode": "code",
"expr": "increase(cache_puts_total{application=\"$application\", cache=\"messages\", namespace=\"sissi\"}[1m]) / 2",
"hide": false,
"instant": false,
"legendFormat": "Cache puts",
"range": true,
"refId": "C"
},
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"editorMode": "code",
"expr": "increase(cache_removals{application=\"$application\", cache=\"messages\", namespace=\"sissi\"}[1m]) / 2",
"hide": false,
"instant": false,
"legendFormat": "Cache removals",
"range": true,
"refId": "D"
}
],
"title": "Message cache statistic",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"insertNulls": false,
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 16
},
"id": 6,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"editorMode": "code",
"expr": "discord_gateway_ping{namespace=\"sissi\"}",
"instant": false,
"legendFormat": "Gateway ping",
"range": true,
"refId": "A"
}
],
"title": "Gateway ping",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"insertNulls": false,
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 24
},
"id": 7,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"editorMode": "code",
"expr": "increase(starboard_stars_total{namespace=\"sissi\"}[1m]) / 2",
"instant": false,
"legendFormat": "{{ "{{" }} action {{ "}}" }}",
"range": true,
"refId": "A"
}
],
"title": "Starboard reactions",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"insertNulls": false,
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 24
},
"id": 8,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"editorMode": "code",
"expr": "increase(emote_usages_total{namespace=\"sissi\"}[1m]) / 2",
"instant": false,
"legendFormat": "Used emotes",
"range": true,
"refId": "A"
}
],
"title": "Used tracked emotes",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"insertNulls": false,
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 16,
"w": 24,
"x": 0,
"y": 32
},
"id": 9,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "prometheus"
},
"editorMode": "code",
"expr": "increase(jda_event_total{namespace=\"sissi\"}[1m]) / 2",
"instant": false,
"legendFormat": "{{ "{{" }} event_class {{ "}}" }}",
"range": true,
"refId": "A"
}
],
"title": "JDA Events",
"type": "timeseries"
}
],
"refresh": "",
"schemaVersion": 38,
"style": "dark",
"tags": [],
"templating": {
"list": [
{
"hide": 2,
"label": "",
"name": "application",
"query": "Sissi",
"skipUrlSync": false,
"type": "constant"
}
]
},
"time": {
"from": "now-30m",
"to": "now"
},
"timepicker": {},
"timezone": "",
"title": "Sissi Discord status",
"uid": "a7b3297d-972e-4dbd-9223-88d589817d34",
"version": 2,
"weekStart": ""
},
"overwrite": true
}

View File

@@ -0,0 +1,238 @@
{
"dashboard": {
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "grafana",
"uid": "-- Grafana --"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"description": "Overview over logging outputs of Sissi bot",
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 0,
"links": [],
"liveNow": false,
"panels": [
{
"datasource": {
"type": "loki",
"uid": "loki"
},
"description": "Display logs and search for logs",
"gridPos": {
"h": 13,
"w": 24,
"x": 0,
"y": 0
},
"id": 4,
"options": {
"dedupStrategy": "none",
"enableLogDetails": true,
"prettifyLogMessage": false,
"showCommonLabels": false,
"showLabels": false,
"showTime": false,
"sortOrder": "Ascending",
"wrapLogMessage": true
},
"targets": [
{
"datasource": {
"type": "loki",
"uid": "loki"
},
"editorMode": "builder",
"expr": "{app=\"sissi\", namespace=\"sissi\"} |= `$logFilter`",
"maxLines": 5000,
"queryType": "range",
"refId": "A"
}
],
"title": "Sissi Logs",
"type": "logs"
},
{
"datasource": {
"type": "loki",
"uid": "loki"
},
"description": "Any line on level ERROR",
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 13
},
"id": 2,
"options": {
"dedupStrategy": "none",
"enableLogDetails": true,
"prettifyLogMessage": false,
"showCommonLabels": false,
"showLabels": false,
"showTime": false,
"sortOrder": "Ascending",
"wrapLogMessage": true
},
"targets": [
{
"datasource": {
"type": "loki",
"uid": "loki"
},
"editorMode": "code",
"expr": "{app=\"sissi\", namespace=\"sissi\"} |= \"ERROR\"",
"maxLines": 5000,
"queryType": "range",
"refId": "A"
}
],
"title": "Sissi Error Logs",
"type": "logs"
},
{
"datasource": {
"type": "loki",
"uid": "loki"
},
"description": "Number of log events",
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"custom": {
"axisCenteredZero": false,
"axisColorMode": "text",
"axisLabel": "",
"axisPlacement": "auto",
"barAlignment": 0,
"drawStyle": "line",
"fillOpacity": 0,
"gradientMode": "none",
"hideFrom": {
"legend": false,
"tooltip": false,
"viz": false
},
"insertNulls": false,
"lineInterpolation": "linear",
"lineWidth": 1,
"pointSize": 5,
"scaleDistribution": {
"type": "linear"
},
"showPoints": "auto",
"spanNulls": false,
"stacking": {
"group": "A",
"mode": "none"
},
"thresholdsStyle": {
"mode": "off"
}
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 13
},
"id": 3,
"options": {
"legend": {
"calcs": [],
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"datasource": {
"type": "loki",
"uid": "loki"
},
"editorMode": "code",
"expr": "rate({app=\"sissi\", namespace=\"sissi\"}[$__interval])",
"queryType": "range",
"refId": "A"
}
],
"title": "Log Rate",
"type": "timeseries"
}
],
"refresh": "",
"schemaVersion": 38,
"style": "dark",
"tags": [],
"templating": {
"list": [
{
"current": {
"selected": false,
"text": "",
"value": ""
},
"description": "What to search in the logs",
"hide": 0,
"name": "logFilter",
"options": [
{
"selected": true,
"text": "",
"value": ""
}
],
"query": "",
"skipUrlSync": false,
"type": "textbox"
}
]
},
"time": {
"from": "now-30m",
"to": "now"
},
"timepicker": {},
"timezone": "",
"title": "Sissi Logs",
"uid": "a5b429af-860c-4438-a575-24bed6dcba09",
"version": 2,
"weekStart": ""
},
"overwrite": true
}

View File

@@ -0,0 +1,62 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "sissi.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "sissi.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "sissi.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "sissi.labels" -}}
helm.sh/chart: {{ include "sissi.chart" . }}
{{ include "sissi.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "sissi.selectorLabels" -}}
app.kubernetes.io/name: {{ include "sissi.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Create the name of the service account to use
*/}}
{{- define "sissi.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "sissi.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,10 @@
apiVersion: v1
kind: Secret
metadata:
name: api-keys
data:
discordToken: {{ $.Values.apiKeys.discord.token | b64enc }} # b64enc is needed, because a stringData secret field cannot hold numeric values
youtubeApiKey: {{ $.Values.apiKeys.youtube.apiKey | b64enc }}
twitchClientId: {{ $.Values.apiKeys.twitch.clientId | b64enc }}
twitchSecret: {{ $.Values.apiKeys.twitch.secret | b64enc }}
openWeatherMapApiKey: {{ $.Values.apiKeys.openWeatherMap.apiKey | b64enc }}

View File

@@ -0,0 +1,69 @@
{{- if .Values.dbConfigDeployment.enabled -}}
apiVersion: batch/v1
kind: Job
metadata:
{{- $deploymentJobName := print ((include "sissi.fullname" .) | trunc 39) "-db-config-deployment-job" }}
name: {{ $deploymentJobName | trunc 63 }}
annotations:
"helm.sh/hook": pre-upgrade,pre-install
"helm.sh/hook-weight": "-5"
"helm.sh/hook-delete-policy": hook-succeeded
spec:
template:
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: db-config-deployment-job
image: "{{ $.Values.dbConfigDeployment.repository }}/{{ $.Values.dbConfigDeployment.image }}:{{ $.Values.dbConfigDeployment.tag | default .Chart.AppVersion}}"
imagePullPolicy: {{ $.Values.dbConfigDeployment.pullPolicy }}
args:
- "/var/db-config/"
env:
- name: DB_PASS
valueFrom:
secretKeyRef:
name: db-credentials
key: dbPassword
- name: DB_HOST
valueFrom:
secretKeyRef:
name: db-credentials
key: dbHost
- name: DB_PORT
valueFrom:
secretKeyRef:
name: db-credentials
key: dbPort
- name: DB_USER
valueFrom:
secretKeyRef:
name: db-credentials
key: dbUser
- name: DB_NAME
valueFrom:
secretKeyRef:
name: db-credentials
key: dbName
- name: DB_SCHEME
value: "abstracto"
volumeMounts:
- mountPath: "/var/db-config/"
name: database-config-mount
restartPolicy: Never
initContainers:
- name: database-config-data
image: "{{ $.Values.dbConfigDeploymentData.repository }}/{{ $.Values.dbConfigDeploymentData.image }}:{{ $.Values.dbConfigDeploymentData.tag | default .Chart.AppVersion}}"
imagePullPolicy: {{ $.Values.dbConfigDeploymentData.pullPolicy }}
volumeMounts:
- mountPath: "/var/run-config"
name: database-config-mount
volumes:
- name: database-config-mount
emptyDir: {}
backoffLimit: 4
{{- end }}

View File

@@ -0,0 +1,13 @@
apiVersion: v1
kind: Secret
metadata:
name: db-credentials
annotations:
"helm.sh/hook": pre-upgrade,pre-install
"helm.sh/hook-weight": "-6"
data:
dbPassword: {{ $.Values.dbCredentials.password | b64enc }} # b64enc is needed, because a stringData secret field cannot hold numeric values
dbUser: {{ $.Values.dbCredentials.userName | b64enc }}
dbHost: {{ $.Values.dbCredentials.host | b64enc }}
dbPort: {{ $.Values.dbCredentials.port | b64enc }}
dbName: {{ $.Values.dbCredentials.name | b64enc }}

View File

@@ -0,0 +1,121 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "sissi.fullname" . }}
labels:
{{- include "sissi.labels" . | nindent 4 }}
spec:
replicas: 1
selector:
matchLabels:
{{- include "sissi.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "sissi.selectorLabels" . | nindent 8 }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "sissi.serviceAccountName" . }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.bot.repository }}/{{ .Values.bot.image }}:{{ .Values.bot.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.bot.pullPolicy }}
env:
- name: DB_PASS
valueFrom:
secretKeyRef:
name: db-credentials
key: dbPassword
- name: DB_HOST
valueFrom:
secretKeyRef:
name: db-credentials
key: dbHost
- name: DB_PORT
valueFrom:
secretKeyRef:
name: db-credentials
key: dbPort
- name: DB_USER
valueFrom:
secretKeyRef:
name: db-credentials
key: dbUser
- name: DB_NAME
valueFrom:
secretKeyRef:
name: db-credentials
key: dbName
- name: DEBRA_DONATION_NOTIFICATION_SERVER_ID
value: "297910194841583616"
- name: TOKEN
valueFrom:
secretKeyRef:
name: api-keys
key: discordToken
- name: YOUTUBE_API_KEY
valueFrom:
secretKeyRef:
name: api-keys
key: youtubeApiKey
- name: OPEN_WEATHER_MAP_API_KEY
valueFrom:
secretKeyRef:
name: api-keys
key: openWeatherMapApiKey
- name: TWITCH_CLIENT_ID
valueFrom:
secretKeyRef:
name: api-keys
key: twitchClientId
- name: TWITCH_SECRET
valueFrom:
secretKeyRef:
name: api-keys
key: twitchSecret
ports:
- name: http
containerPort: {{ .Values.service.port }}
protocol: TCP
- name: debug
containerPort: 5005
protocol: TCP
livenessProbe:
httpGet:
path: /actuator/health/liveness
port: 8080
initialDelaySeconds: {{ $.Values.bot.livenessProbe.initialDelaySeconds }}
periodSeconds: {{ $.Values.bot.livenessProbe.periodSeconds }}
failureThreshold: {{ $.Values.bot.livenessProbe.failureThreshold }}
readinessProbe:
httpGet:
path: /actuator/health/readiness
port: 8080
initialDelaySeconds: {{ $.Values.bot.readinessProbe.initialDelaySeconds }}
periodSeconds: {{ $.Values.bot.readinessProbe.periodSeconds }}
failureThreshold: {{ $.Values.bot.readinessProbe.failureThreshold }}
resources:
{{- toYaml .Values.resources | nindent 12 }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}

View File

@@ -0,0 +1,42 @@
{{- if $.Values.grafanaDeployment.enabled }}
apiVersion: batch/v1
kind: Job
metadata:
name: grafana-dashboard-deployment-job
annotations:
"helm.sh/hook": post-install
"helm.sh/hook-weight": "-4"
"helm.sh/hook-delete-policy": hook-succeeded
spec:
template:
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: template-deployment-job
image: "{{ $.Values.grafanaDeployment.repository }}/{{ $.Values.grafanaDeployment.image }}:{{ $.Values.grafanaDeployment.tag }}"
imagePullPolicy: {{ $.Values.grafanaDeployment.pullPolicy }}
args:
- "/var/userconfig"
volumeMounts:
- mountPath: "/var/userconfig"
name: grafana-dashboard-config
readOnly: true
volumes:
- name: grafana-dashboard-config
secret:
secretName: grafana-dashboard-config
restartPolicy: Never
backoffLimit: 4
---
apiVersion: v1
kind: Secret
metadata:
name: grafana-dashboard-config
data:
config.yaml: {{ (tpl (.Files.Get "configuration/grafana/config.yaml") . ) | b64enc }}
log-dashboard.json: {{ (tpl (.Files.Get "configuration/grafana/sissi-log-dashboard.json") . ) | b64enc }}
discord-dashboard.json: {{ (tpl (.Files.Get "configuration/grafana/sissi-discord-dashboard.json") . ) | b64enc }}
{{- end }}

View File

@@ -0,0 +1,19 @@
apiVersion: v1
kind: Service
metadata:
name: {{ include "sissi.fullname" . }}
labels:
{{- include "sissi.labels" . | nindent 4 }}
{{- with .Values.service.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
protocol: TCP
name: http
selector:
{{- include "sissi.selectorLabels" . | nindent 4 }}

View File

@@ -0,0 +1,12 @@
{{- if .Values.serviceAccount.create -}}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "sissi.serviceAccountName" . }}
labels:
{{- include "sissi.labels" . | nindent 4 }}
{{- with .Values.serviceAccount.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,69 @@
{{- if .Values.dbConfigDeployment.enabled -}}
apiVersion: batch/v1
kind: Job
metadata:
{{- $deploymentJobName := print ((include "sissi.fullname" .) | trunc 39) "-template-deployment-job" }}
name: {{ $deploymentJobName | trunc 63 }}
annotations:
"helm.sh/hook": pre-upgrade,pre-install
"helm.sh/hook-weight": "-4"
"helm.sh/hook-delete-policy": hook-succeeded
spec:
template:
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: template-deployment-job
image: "{{ $.Values.templateDeployment.repository }}/{{ $.Values.templateDeployment.image }}:{{ $.Values.templateDeployment.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ $.Values.templateDeployment.pullPolicy }}
args:
- "/var/template-config/"
env:
- name: DB_PASS
valueFrom:
secretKeyRef:
name: db-credentials
key: dbPassword
- name: DB_HOST
valueFrom:
secretKeyRef:
name: db-credentials
key: dbHost
- name: DB_PORT
valueFrom:
secretKeyRef:
name: db-credentials
key: dbPort
- name: DB_USER
valueFrom:
secretKeyRef:
name: db-credentials
key: dbUser
- name: DB_NAME
valueFrom:
secretKeyRef:
name: db-credentials
key: dbName
- name: DB_SCHEME
value: "abstracto."
volumeMounts:
- mountPath: "/var/template-config/"
name: template-config-mount
initContainers:
- name: database-config-data
image: "{{ $.Values.templateDeploymentData.repository }}/{{ $.Values.templateDeploymentData.image }}:{{ $.Values.templateDeploymentData.tag | default .Chart.AppVersion}}"
imagePullPolicy: {{ $.Values.templateDeploymentData.pullPolicy }}
volumeMounts:
- mountPath: "/var/run-config"
name: template-config-mount
volumes:
- name: template-config-mount
emptyDir: {}
restartPolicy: Never
backoffLimit: 4
{{- end }}

View File

@@ -0,0 +1,125 @@
# Default values for sissi.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
bot:
repository: harbor.sheldan.dev/sissi
pullPolicy: IfNotPresent
image: sissi-bot
tag: 1.4.17
livenessProbe:
initialDelaySeconds: 60
periodSeconds: 5
failureThreshold: 3
readinessProbe:
initialDelaySeconds: 60
periodSeconds: 5
failureThreshold: 3
templateDeployment:
enabled: true
repository: harbor.sheldan.dev/abstracto
pullPolicy: Always
image: abstracto-template-deployment
tag: 1.5.9
templateDeploymentData:
repository: harbor.sheldan.dev/sissi
pullPolicy: Always
image: sissi-template-data
tag: 1.4.17
dbConfigDeployment:
enabled: true
repository: harbor.sheldan.dev/abstracto
pullPolicy: Always
image: abstracto-db-deployment
tag: 1.5.9
dbConfigDeploymentData:
repository: harbor.sheldan.dev/sissi
pullPolicy: Always
image: sissi-db-data
tag: 1.4.17
dbCredentials:
host:
port:
userName:
password:
name:
grafanaDeployment:
repository: harbor.sheldan.dev/grafana-tools
pullPolicy: Always
image: grafana-dashboard-deployment
tag: 0.0.2
enabled: true
grafana:
host:
basicAuth:
username:
password:
apiKeys:
discord:
token:
youtube:
apiKey:
openWeatherMap:
apiKey:
twitch:
secret:
clientId:
imagePullSecrets:
nameOverride: ""
fullnameOverride: ""
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: ""
podAnnotations: {}
podSecurityContext: {}
# fsGroup: 2000
securityContext: {}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 8080
annotations:
prometheus.io/scrape: "true"
prometheus.io/path: "/actuator/prometheus"
prometheus.io/port: "8080"
resources:
limits:
cpu:
memory:
requests:
cpu:
memory:
nodeSelector: {}
tolerations: []
affinity: {}

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>dev.sheldan.sissi</groupId>
<artifactId>deployment</artifactId>
<version>1.3.22</version>
<version>1.4.17</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -49,7 +49,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>core.zip</destFileName>
</artifactItem>
@@ -59,17 +59,27 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>assignable-roles.zip</destFileName>
</artifactItem>
<artifactItem>
<groupId>dev.sheldan.abstracto-templates.templates</groupId>
<artifactId>twitch</artifactId>
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>twitch.zip</destFileName>
</artifactItem>
<artifactItem>
<groupId>dev.sheldan.abstracto-templates.templates</groupId>
<artifactId>experience-tracking</artifactId>
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>experience-tracking.zip</destFileName>
</artifactItem>
@@ -79,7 +89,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>modmail.zip</destFileName>
</artifactItem>
@@ -89,7 +99,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>utility.zip</destFileName>
</artifactItem>
@@ -99,7 +109,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>logging.zip</destFileName>
</artifactItem>
@@ -109,7 +119,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>webservices.zip</destFileName>
</artifactItem>
@@ -119,7 +129,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>remind.zip</destFileName>
</artifactItem>
@@ -129,7 +139,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>suggestion.zip</destFileName>
</artifactItem>
@@ -139,7 +149,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>link-embed.zip</destFileName>
</artifactItem>
@@ -149,7 +159,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>starboard.zip</destFileName>
</artifactItem>
@@ -159,7 +169,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>moderation.zip</destFileName>
</artifactItem>
@@ -169,7 +179,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>entertainment.zip</destFileName>
</artifactItem>
@@ -179,10 +189,20 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>custom-command.zip</destFileName>
</artifactItem>
<artifactItem>
<groupId>dev.sheldan.abstracto-templates.templates</groupId>
<artifactId>statistic</artifactId>
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>statistic.zip</destFileName>
</artifactItem>
<!-- sissi template artefacts -->
<artifactItem>
<groupId>dev.sheldan.sissi.templates</groupId>
@@ -190,7 +210,7 @@
<version>${project.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>quotes.zip</destFileName>
</artifactItem>
@@ -200,7 +220,7 @@
<version>${project.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>meetup.zip</destFileName>
</artifactItem>
@@ -210,7 +230,7 @@
<version>${project.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>debra.zip</destFileName>
</artifactItem>
@@ -222,7 +242,7 @@
<version>${project.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>moderation-custom.zip</destFileName>
</artifactItem>
@@ -234,7 +254,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>core.zip</destFileName>
</artifactItem>
@@ -244,7 +264,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>link-embed.zip</destFileName>
</artifactItem>
@@ -254,17 +274,27 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>experience-tracking.zip</destFileName>
</artifactItem>
<artifactItem>
<groupId>dev.sheldan.abstracto-templates.translations</groupId>
<artifactId>twitch</artifactId>
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>twitch.zip</destFileName>
</artifactItem>
<artifactItem>
<groupId>dev.sheldan.abstracto-templates.translations</groupId>
<artifactId>modmail</artifactId>
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>modmail.zip</destFileName>
</artifactItem>
@@ -274,7 +304,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>assignable-roles.zip</destFileName>
</artifactItem>
@@ -284,7 +314,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>utility.zip</destFileName>
</artifactItem>
@@ -294,7 +324,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>webservices.zip</destFileName>
</artifactItem>
@@ -304,7 +334,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>remind.zip</destFileName>
</artifactItem>
@@ -314,7 +344,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>suggestion.zip</destFileName>
</artifactItem>
@@ -324,7 +354,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>starboard.zip</destFileName>
</artifactItem>
@@ -334,7 +364,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>moderation.zip</destFileName>
</artifactItem>
@@ -344,7 +374,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>entertainment.zip</destFileName>
</artifactItem>
@@ -354,7 +384,7 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>logging.zip</destFileName>
</artifactItem>
@@ -364,10 +394,20 @@
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>custom-command.zip</destFileName>
</artifactItem>
<artifactItem>
<groupId>dev.sheldan.abstracto-templates.translations</groupId>
<artifactId>statistic</artifactId>
<version>${abstracto.templates.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>statistic.zip</destFileName>
</artifactItem>
<!-- sissi translation artefacts -->
<artifactItem>
@@ -376,7 +416,7 @@
<version>${project.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>quotes.zip</destFileName>
</artifactItem>
@@ -386,7 +426,7 @@
<version>${project.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>meetup.zip</destFileName>
</artifactItem>
@@ -396,7 +436,7 @@
<version>${project.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>debra.zip</destFileName>
</artifactItem>
@@ -410,7 +450,7 @@
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/liquibase-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>scheduling.zip</destFileName>
</artifactItem>
@@ -421,7 +461,7 @@
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/liquibase-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>core.zip</destFileName>
</artifactItem>
@@ -432,10 +472,21 @@
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/liquibase-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>link-embed.zip</destFileName>
</artifactItem>
<artifactItem>
<groupId>dev.sheldan.abstracto.modules</groupId>
<artifactId>twitch-impl</artifactId>
<version>${abstracto.version}</version>
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>twitch.zip</destFileName>
</artifactItem>
<artifactItem>
<groupId>dev.sheldan.abstracto.modules</groupId>
<artifactId>experience-tracking-impl</artifactId>
@@ -443,7 +494,7 @@
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/liquibase-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>experience-tracking.zip</destFileName>
</artifactItem>
@@ -454,7 +505,7 @@
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/liquibase-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>logging.zip</destFileName>
</artifactItem>
@@ -465,7 +516,7 @@
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/liquibase-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>starboard.zip</destFileName>
</artifactItem>
@@ -476,7 +527,7 @@
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/liquibase-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>assignable-roles.zip</destFileName>
</artifactItem>
@@ -487,7 +538,7 @@
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/liquibase-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>utility.zip</destFileName>
</artifactItem>
@@ -498,7 +549,7 @@
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/liquibase-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>modmail.zip</destFileName>
</artifactItem>
@@ -509,7 +560,7 @@
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/liquibase-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>utility.zip</destFileName>
</artifactItem>
@@ -520,7 +571,7 @@
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/liquibase-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>webservices.zip</destFileName>
</artifactItem>
@@ -531,7 +582,7 @@
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/liquibase-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>remind.zip</destFileName>
</artifactItem>
@@ -542,7 +593,7 @@
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/liquibase-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>suggestion.zip</destFileName>
</artifactItem>
@@ -553,7 +604,7 @@
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/liquibase-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>moderation.zip</destFileName>
</artifactItem>
@@ -564,7 +615,7 @@
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/liquibase-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>entertainment.zip</destFileName>
</artifactItem>
@@ -575,7 +626,7 @@
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/liquibase-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>custom-command.zip</destFileName>
</artifactItem>
@@ -588,7 +639,7 @@
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/liquibase-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>quotes.zip</destFileName>
</artifactItem>
@@ -599,7 +650,7 @@
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/liquibase-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>meetup.zip</destFileName>
</artifactItem>
@@ -610,10 +661,21 @@
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/liquibase-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>debra.zip</destFileName>
</artifactItem>
<artifactItem>
<groupId>dev.sheldan.abstracto.modules</groupId>
<artifactId>statistic-impl</artifactId>
<version>${abstracto.version}</version>
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>statistic.zip</destFileName>
</artifactItem>
<!-- customizations -->
<artifactItem>
@@ -623,7 +685,7 @@
<classifier>liquibase</classifier>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/liquibase-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/db-data/liquibase-artifacts/</outputDirectory>
<destFileName>moderation-custom.zip</destFileName>
</artifactItem>
@@ -633,7 +695,7 @@
<version>${project.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>moderation-custom.zip</destFileName>
</artifactItem>
@@ -645,7 +707,7 @@
<version>${project.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>moderation-template-overrides.zip</destFileName>
</artifactItem>
@@ -655,7 +717,7 @@
<version>${project.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>experience-template-overrides.zip</destFileName>
</artifactItem>
@@ -665,7 +727,7 @@
<version>${project.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/template-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/template-artifacts/</outputDirectory>
<destFileName>logging-template-overrides.zip</destFileName>
</artifactItem>
@@ -677,7 +739,7 @@
<version>${project.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>moderation-translation-overrides.zip</destFileName>
</artifactItem>
@@ -687,7 +749,7 @@
<version>${project.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>experience-translation-overrides.zip</destFileName>
</artifactItem>
@@ -697,7 +759,7 @@
<version>${project.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${file.basedir}/deployment/translation-artifacts/</outputDirectory>
<outputDirectory>${file.basedir}/template-data/translation-artifacts/</outputDirectory>
<destFileName>logging-translation-overrides.zip</destFileName>
</artifactItem>

View File

@@ -1,6 +1,2 @@
PROMTAIL_VERSION=2.2.1
LOKI_VERSION=2.2.1
PROMETHEUS_VERSION=v2.28.1
PG_ADMIN_VERSION=5.5
GRAFANA_VERSION=8.0.6
POSTGRES_VERSION=13.3-buster
REGISTRY_PREFIX=harbor.sheldan.dev/sissi/
VERSION=1.4.17

View File

@@ -1,5 +0,0 @@
ARG POSTGRES_VERSION
FROM postgres:${POSTGRES_VERSION}
MAINTAINER Sheldan
VOLUME /tmp
ADD sql/init.sql /docker-entrypoint-initdb.d/init.sql

View File

@@ -1 +0,0 @@
CREATE SCHEMA abstracto

View File

@@ -0,0 +1,6 @@
FROM alpine:3.18.0
MAINTAINER Sheldan
ADD config/ /var/db-config/
ADD liquibase-artifacts /var/db-config/liquibase-zips
CMD ["/bin/sh", "/var/db-config/move.sh"]

View File

@@ -1,23 +1,11 @@
{
"template_artifacts": [
"core","starboard", "link-embed", "moderation", "entertainment", "custom-command", "utility", "webservices", "remind", "suggestion", "modmail", "assignable-roles", "experience-tracking", "logging",
"quotes", "meetup", "debra",
"moderation-custom",
"moderation-template-overrides", "experience-template-overrides", "logging-template-overrides"
],
"translation_artifacts": [
"core",
"starboard", "link-embed", "moderation", "entertainment", "custom-command", "utility", "webservices", "suggestion", "remind", "modmail", "assignable-roles", "experience-tracking", "logging",
"quotes", "meetup", "debra",
"moderation-custom",
"moderation-translation-overrides", "experience-translation-overrides", "logging-translation-overrides"
],
"liquibase_artifacts": [
{ "zip": "scheduling", "file": "scheduling-changeLog.xml" },
{ "zip": "core", "file": "core-changeLog.xml" },
{ "zip": "link-embed", "file": "link-embed-changeLog.xml"},
{ "zip": "experience-tracking", "file": "experience-changeLog.xml"},
{ "zip": "logging", "file": "logging-changeLog.xml"},
{ "zip": "statistic", "file": "statistic-changeLog.xml"},
{ "zip": "starboard", "file": "starboard-changeLog.xml"},
{ "zip": "quotes", "file": "quotes-changeLog.xml"},
{ "zip": "meetup", "file": "meetup-changeLog.xml"},
@@ -30,6 +18,7 @@
{ "zip": "remind", "file": "remind-changeLog.xml"},
{ "zip": "suggestion", "file": "suggestion-changeLog.xml"},
{ "zip": "modmail", "file": "modMail-changeLog.xml"},
{ "zip": "twitch", "file": "twitch-changeLog.xml"},
{ "zip": "assignable-roles", "file": "assignableRoles-changeLog.xml"},
{ "zip": "moderation-custom", "file": "moderation-custom-changeLog.xml"}
]

View File

@@ -0,0 +1,2 @@
#!/bin/sh
mv /var/db-config/* /var/run-config/

View File

@@ -1,8 +0,0 @@
ARG ABSTRACTO_REGISTRY_PREFIX
ARG ABSTRACTO_VERSION=latest
FROM ${ABSTRACTO_REGISTRY_PREFIX}abstracto_deployment:${ABSTRACTO_VERSION:-latest}
MAINTAINER Sheldan
ADD template-artifacts /templates
ADD translation-artifacts /translations
ADD liquibase-artifacts /liquibase-zips
ADD config /

View File

@@ -4,47 +4,12 @@ services:
bot:
build:
context: sissi
image: ${REGISTRY_PREFIX}sissi:${VERSION:-latest}
database:
image: ${REGISTRY_PREFIX}sissi-bot:${VERSION:-latest}
db-data:
build:
context: database
args:
POSTGRES_VERSION: ${POSTGRES_VERSION}
image: ${REGISTRY_PREFIX}sissi_database:${VERSION:-latest}
pg_admin:
context: db-data
image: ${REGISTRY_PREFIX}sissi-db-data:${VERSION:-latest}
template-data:
build:
context: pgAdmin
args:
PG_ADMIN_VERSION: ${PG_ADMIN_VERSION}
image: ${REGISTRY_PREFIX}sissi_pg_admin:${VERSION:-latest}
deployment_container:
build:
context: deployment
args:
ABSTRACTO_REGISTRY_PREFIX: ${ABSTRACTO_REGISTRY_PREFIX}
ABSTRACTO_VERSION: ${ABSTRACTO_VERSION}
image: ${REGISTRY_PREFIX}sissi_deployment:${VERSION:-latest}
prometheus:
build:
context: prometheus
args:
PROMETHEUS_VERSION: ${PROMETHEUS_VERSION}
image: ${REGISTRY_PREFIX}sissi_prometheus:${VERSION:-latest}
grafana:
build:
context: grafana
args:
GRAFANA_VERSION: ${GRAFANA_VERSION}
image: ${REGISTRY_PREFIX}sissi_grafana:${VERSION:-latest}
promtail:
build:
context: promtail
args:
PROMTAIL_VERSION: ${PROMTAIL_VERSION}
image: ${REGISTRY_PREFIX}sissi_promtail:${VERSION:-latest}
loki:
build:
context: loki
args:
LOKI_VERSION: ${LOKI_VERSION}
image: ${REGISTRY_PREFIX}sissi_loki:${VERSION:-latest}
context: template-data
image: ${REGISTRY_PREFIX}sissi-template-data:${VERSION:-latest}

View File

@@ -1,6 +0,0 @@
ARG GRAFANA_VERSION
FROM grafana/grafana:${GRAFANA_VERSION}
MAINTAINER Sheldan
ADD ./provisioning /etc/grafana/provisioning
ADD ./config.ini /etc/grafana/config.ini
ADD ./dashboards /var/lib/grafana/dashboards

View File

@@ -1,2 +0,0 @@
[paths]
provisioning = conf/provisioning

View File

@@ -1,65 +0,0 @@
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"gnetId": null,
"graphTooltip": 0,
"id": 4,
"links": [],
"panels": [
{
"datasource": "Loki",
"gridPos": {
"h": 14,
"w": 24,
"x": 0,
"y": 0
},
"id": 2,
"options": {
"dedupStrategy": "none",
"enableLogDetails": true,
"showLabels": false,
"showTime": false,
"sortOrder": "Descending",
"wrapLogMessage": true
},
"targets": [
{
"expr": "{job=\"sissi-logs\", filename=\"/logs/log.log\"}",
"queryType": "randomWalk",
"refId": "A"
}
],
"title": "Sissi logs",
"type": "logs"
}
],
"refresh": "",
"schemaVersion": 30,
"style": "dark",
"tags": [],
"templating": {
"list": []
},
"time": {
"from": "now-3h",
"to": "now"
},
"timepicker": {},
"timezone": "",
"title": "Sissi logs",
"uid": "1uGb0q4nz",
"version": 2
}

View File

@@ -1,6 +0,0 @@
- name: 'sissi-bot-dashboards'
org_id: 1
folder: ''
type: 'file'
options:
folder: '/var/lib/grafana/dashboards'

View File

@@ -1,29 +0,0 @@
apiVersion: 1
datasources:
- access: 'proxy'
editable: true
is_default: true
name: 'prometheus'
org_id: 1
type: 'prometheus'
url: 'http://${PROMETHEUS_HOST}:${PROMETHEUS_PORT}'
version: 1
- name: 'postgres-db'
type: postgres
access: 'proxy'
url: '${DB_HOST}:${DB_PORT}'
password: '${DB_PASS}'
user: '${DB_USER}'
database: '${DB_NAME}'
basicAuth: false
is_default: false
jsonData:
sslmode: 'disable'
version: 1
editable: false
- name: Loki
type: loki
access: proxy
url: 'http://${LOKI_HOST}:${LOKI_PORT}'
jsonData:
maxLines: 2000

View File

@@ -1,4 +0,0 @@
ARG LOKI_VERSION
FROM grafana/loki:${LOKI_VERSION}
MAINTAINER Sheldan
ADD loki.yml /mnt/config/loki-config.yaml

View File

@@ -1,66 +0,0 @@
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 9096
ingester:
wal:
enabled: true
dir: /tmp/wal
lifecycler:
address: 127.0.0.1
ring:
kvstore:
store: inmemory
replication_factor: 1
final_sleep: 0s
chunk_idle_period: 1h
max_chunk_age: 1h
chunk_target_size: 1048576
chunk_retain_period: 30s
max_transfer_retries: 0
schema_config:
configs:
- from: 2020-10-24
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
storage_config:
boltdb_shipper:
active_index_directory: /tmp/loki/boltdb-shipper-active
cache_location: /tmp/loki/boltdb-shipper-cache
cache_ttl: 24h
shared_store: filesystem
filesystem:
directory: /tmp/loki/chunks
compactor:
working_directory: /tmp/loki/boltdb-shipper-compactor
shared_store: filesystem
limits_config:
reject_old_samples: true
reject_old_samples_max_age: 168h
chunk_store_config:
max_look_back_period: 0s
table_manager:
retention_deletes_enabled: true
retention_period: 360h
ruler:
storage:
type: local
local:
directory: /tmp/loki/rules
rule_path: /tmp/loki/rules-temp
ring:
kvstore:
store: inmemory

View File

@@ -1,5 +0,0 @@
ARG PG_ADMIN_VERSION
FROM dpage/pgadmin4:${PG_ADMIN_VERSION}
MAINTAINER Sheldan
VOLUME /tmp
ADD config/servers.json /pgadmin4/servers.json

View File

@@ -1,13 +0,0 @@
{
"Servers": {
"1": {
"Name": "Sissi database",
"Group": "Server Group 1",
"Port": 5432,
"Username": "abstracto",
"Host": "sissi_database",
"SSLMode": "prefer",
"MaintenanceDB": "postgres"
}
}
}

View File

@@ -1,4 +0,0 @@
ARG PROMETHEUS_VERSION
FROM prom/prometheus:${PROMETHEUS_VERSION}
MAINTAINER Sheldan
ADD prometheus.yml /etc/prometheus/prometheus.yml

View File

@@ -1,17 +0,0 @@
global:
scrape_interval: 10s
scrape_timeout: 10s
evaluation_interval: 1m
scrape_configs:
- job_name: sissi_micrometer
honor_timestamps: true
scrape_interval: 5s
scrape_timeout: 5s
metrics_path: /actuator/prometheus
scheme: http
static_configs:
- targets:
- sissibot:8080
basic_auth:
username: "abstracto"
password_file: /etc/prometheus/micrometer_password

View File

@@ -1,4 +0,0 @@
ARG PROMTAIL_VERSION
FROM grafana/promtail:${PROMTAIL_VERSION}
MAINTAINER Sheldan
ADD promtail.yaml /mnt/config/promtail-config.yaml

View File

@@ -1,17 +0,0 @@
server:
disable: true
positions:
filename: /tmp/positions.yaml
clients:
- url: http://sissi_loki:3100/loki/api/v1/push
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: sissi-logs
__path__: /logs/*.log

View File

@@ -1,10 +1,8 @@
FROM openjdk:8-jdk-alpine
FROM amazoncorretto:17.0.8-alpine3.18
MAINTAINER Sheldan
VOLUME /tmp
ADD bot/app.jar /app.jar
ADD config/* /config/
VOLUME ["/config"]
VOLUME ["/logs"]
ADD wrapper/*.sh /
RUN chmod +x /start.sh
ADD bot/app.jar /app.jar
CMD ["/start.sh"]

View File

@@ -0,0 +1,7 @@
FROM alpine:3.18.0
MAINTAINER Sheldan
ADD config /var/template-config/
ADD template-artifacts /var/template-config/templates
ADD translation-artifacts /var/template-config/translations
CMD ["/bin/sh", "/var/template-config/move.sh"]

View File

@@ -0,0 +1,17 @@
{
"template_artifacts": [
"core","starboard", "link-embed", "moderation", "entertainment", "custom-command", "utility", "webservices", "remind", "suggestion", "modmail", "assignable-roles", "experience-tracking", "logging", "statistic", "twitch",
"quotes", "meetup", "debra",
"moderation-custom",
"moderation-template-overrides", "experience-template-overrides", "logging-template-overrides"
],
"translation_artifacts": [
"core",
"starboard", "link-embed", "moderation", "entertainment", "custom-command", "utility", "webservices", "suggestion", "remind", "modmail", "assignable-roles", "experience-tracking", "logging", "statistic", "twitch",
"quotes", "meetup", "debra",
"moderation-custom",
"moderation-translation-overrides", "experience-translation-overrides", "logging-translation-overrides"
]
}

View File

@@ -0,0 +1,2 @@
#!/bin/sh
mv /var/template-config/* /var/run-config/

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>dev.sheldan.sissi</groupId>
<artifactId>sissi</artifactId>
<version>1.3.22</version>
<version>1.4.17</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -11,7 +11,6 @@
<packaging>pom</packaging>
<modules>
<module>docker-compose</module>
<module>image-packaging</module>
</modules>

14
pom.xml
View File

@@ -6,22 +6,22 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
<version>3.1.1</version>
<relativePath />
</parent>
<groupId>dev.sheldan.sissi</groupId>
<artifactId>sissi</artifactId>
<name>Sissi</name>
<version>1.3.22</version>
<version>1.4.17</version>
<properties>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.source>17</maven.compiler.source>
<!-- edit in release.yml as well -->
<!-- when releasing a new bot version, update the .env as well-->
<abstracto.version>1.4.20</abstracto.version>
<abstracto.templates.version>1.4.13</abstracto.templates.version>
<abstracto.version>1.5.9</abstracto.version>
<abstracto.templates.version>1.4.21</abstracto.templates.version>
</properties>
<modules>
@@ -57,7 +57,7 @@
<scm>
<url>https://maven.pkg.github.com/Sheldan/Sissi</url>
<developerConnection>scm:git:git@github.com:Sheldan/Sissi.git</developerConnection>
<tag>sissi-1.3.22</tag>
<tag>sissi-1.4.17</tag>
</scm>
</project>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>dev.sheldan.sissi</groupId>
<artifactId>sissi</artifactId>
<version>1.3.22</version>
<version>1.4.17</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>dev.sheldan.sissi.templates</groupId>
<artifactId>customization-templates</artifactId>
<version>1.3.22</version>
<version>1.4.17</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -3,7 +3,7 @@
<parent>
<artifactId>sissi-templates</artifactId>
<groupId>dev.sheldan.sissi.templates</groupId>
<version>1.3.22</version>
<version>1.4.17</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -3,7 +3,7 @@
<parent>
<artifactId>module-templates</artifactId>
<groupId>dev.sheldan.sissi.templates</groupId>
<version>1.3.22</version>
<version>1.4.17</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -3,7 +3,7 @@
<parent>
<artifactId>module-templates</artifactId>
<groupId>dev.sheldan.sissi.templates</groupId>
<version>1.3.22</version>
<version>1.4.17</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -49,6 +49,14 @@
}
</#if>
],
<#if meetupIcsModel.attachIcsFile>
"files": [
{
"fileName": "<@safe_include "meetup_ics_file_name"/>.ics",
"fileContent": "<@safe_include "meetup_ice_file_download"/>"
}
],
</#if>
"messageConfig": {
"allowsRoleMention": true
}

View File

@@ -0,0 +1,13 @@
BEGIN:VCALENDAR
VERSION:2.0
PRODID:Sissi-Bot
BEGIN:VEVENT
UID:sissi-meetup-${meetupId}
DTSTAMP:${meetupIcsModel.icsFormattedCreationTime}
DTSTART:${meetupIcsModel.icsFormattedStartTime}
DTEND:${meetupIcsModel.icsFormattedEndTime}
SUMMARY:${topic}
<#if description?has_content>DESCRIPTION:${description}</#if>
<#if decodedLocation?? && decodedLocation != "">LOCATION:${decodedLocation}</#if>
END:VEVENT
END:VCALENDAR

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>dev.sheldan.sissi.templates</groupId>
<artifactId>sissi-templates</artifactId>
<version>1.3.22</version>
<version>1.4.17</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>dev.sheldan.sissi.templates</groupId>
<artifactId>module-templates</artifactId>
<version>1.3.22</version>
<version>1.4.17</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>dev.sheldan.sissi.templates</groupId>
<artifactId>templates</artifactId>
<version>1.3.22</version>
<version>1.4.17</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>dev.sheldan.sissi.templates</groupId>
<artifactId>template-overrides</artifactId>
<version>1.3.22</version>
<version>1.4.17</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Some files were not shown because too many files have changed in this diff Show More