add build an git info
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 4s

This commit is contained in:
2026-08-23 00:48:18 +02:00
parent 5b7c41c829
commit ec274a60d9
10 changed files with 74 additions and 46 deletions
+8 -18
View File
@@ -1,25 +1,8 @@
buildscript {
configurations.classpath {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
if (details.requested.group == 'com.burgstaller' && details.requested.name == 'okhttp-digest' && details.requested.version == '1.10') {
details.useTarget "io.github.rburgst:${details.requested.name}:1.21"
details.because 'Dependency has moved'
}
}
}
repositories {
mavenCentral()
maven { setUrl("https://nexus.thpeetz.de/repository/maven-central") }
maven { setUrl("https://maven.vaadin.com/vaadin-prereleases") }
maven { setUrl("https://repo.spring.io/milestone") }
}
}
plugins { plugins {
id 'java' id 'java'
id 'application' id 'application'
id 'maven-publish' id 'maven-publish'
id "com.google.cloud.artifactregistry.gradle-plugin" version "2.2.0" //id "com.google.cloud.artifactregistry.gradle-plugin" version "2.2.0"
id 'jvm-test-suite' id 'jvm-test-suite'
id 'jacoco' id 'jacoco'
id 'test-report-aggregation' id 'test-report-aggregation'
@@ -28,6 +11,9 @@ plugins {
alias(libs.plugins.spring.dependencies) alias(libs.plugins.spring.dependencies)
alias(libs.plugins.vaadin) alias(libs.plugins.vaadin)
alias(libs.plugins.lombok) alias(libs.plugins.lombok)
//id 'com.github.ksoichiro.build.info' version '0.2.0'
//id 'com.pasam.gradle.buildinfo' version '0.1.3'
id 'com.gorylenko.gradle-git-properties' version '4.0.1'
} }
repositories { repositories {
@@ -125,6 +111,10 @@ bootRun {
args = ["--spring.profiles.active=${project.properties['profile'] ?: 'prod'}"] args = ["--spring.profiles.active=${project.properties['profile'] ?: 'prod'}"]
} }
springBoot {
buildInfo()
}
task dockerImage(type: Exec) { task dockerImage(type: Exec) {
dependsOn(bootJar) dependsOn(bootJar)
commandLine "docker", "build", ".", "-t", "kontor:${project.version}" commandLine "docker", "build", ".", "-t", "kontor:${project.version}"
@@ -9,6 +9,7 @@ import de.thpeetz.kontor.security.SecurityService;
import de.thpeetz.kontor.services.AdminService; import de.thpeetz.kontor.services.AdminService;
import de.thpeetz.kontor.views.common.KontorLayoutUtil; import de.thpeetz.kontor.views.common.KontorLayoutUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.info.BuildProperties;
@Slf4j @Slf4j
public class AdminLayout extends AppLayout { public class AdminLayout extends AppLayout {
@@ -19,11 +20,15 @@ public class AdminLayout extends AppLayout {
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final SecurityService securityService; private final SecurityService securityService;
public AdminLayout(AdminService adminService, SecurityService securityService) { @SuppressWarnings("unused")
private final BuildProperties buildProperties;
public AdminLayout(AdminService adminService, SecurityService securityService, BuildProperties buildProperties) {
this.adminService = adminService; this.adminService = adminService;
this.securityService = securityService; this.securityService = securityService;
this.buildProperties = buildProperties;
KontorLayoutUtil layout = new KontorLayoutUtil(this, adminService, securityService); KontorLayoutUtil layout = new KontorLayoutUtil(this, adminService, securityService, buildProperties);
layout.setSecondaryNavigation(getSecondaryNavigation()); layout.setSecondaryNavigation(getSecondaryNavigation());
layout.createHeader(AdminConstants.ADMIN_TITLE); layout.createHeader(AdminConstants.ADMIN_TITLE);
} }
@@ -8,6 +8,7 @@ import de.thpeetz.kontor.constants.BookshelfConstants;
import de.thpeetz.kontor.security.SecurityService; import de.thpeetz.kontor.security.SecurityService;
import de.thpeetz.kontor.services.AdminService; import de.thpeetz.kontor.services.AdminService;
import de.thpeetz.kontor.views.common.KontorLayoutUtil; import de.thpeetz.kontor.views.common.KontorLayoutUtil;
import org.springframework.boot.info.BuildProperties;
public class BookshelfLayout extends AppLayout { public class BookshelfLayout extends AppLayout {
@@ -17,11 +18,15 @@ public class BookshelfLayout extends AppLayout {
@SuppressWarnings("unused") @SuppressWarnings("unused")
private final SecurityService securityService; private final SecurityService securityService;
public BookshelfLayout(AdminService adminService, SecurityService securityService) { @SuppressWarnings("unused")
private final BuildProperties buildProperties;
public BookshelfLayout(AdminService adminService, SecurityService securityService, BuildProperties buildProperties) {
this.adminService = adminService; this.adminService = adminService;
this.securityService = securityService; this.securityService = securityService;
this.buildProperties = buildProperties;
KontorLayoutUtil layout = new KontorLayoutUtil(this, adminService, securityService); KontorLayoutUtil layout = new KontorLayoutUtil(this, adminService, securityService, buildProperties);
layout.setSecondaryNavigation(getSecondaryNavigation()); layout.setSecondaryNavigation(getSecondaryNavigation());
layout.createHeader(BookshelfConstants.BOOKSHELF); layout.createHeader(BookshelfConstants.BOOKSHELF);
} }
@@ -9,6 +9,7 @@ import de.thpeetz.kontor.security.SecurityService;
import de.thpeetz.kontor.services.AdminService; import de.thpeetz.kontor.services.AdminService;
import de.thpeetz.kontor.views.common.KontorLayoutUtil; import de.thpeetz.kontor.views.common.KontorLayoutUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.info.BuildProperties;
/** /**
* Represents a custom layout for the comic view in the application. * Represents a custom layout for the comic view in the application.
@@ -21,11 +22,14 @@ public class ComicLayout extends AppLayout {
private final SecurityService securityService; private final SecurityService securityService;
public ComicLayout(AdminService adminService, SecurityService securityService) { private final BuildProperties buildProperties;
public ComicLayout(AdminService adminService, SecurityService securityService, BuildProperties buildProperties) {
this.adminService = adminService; this.adminService = adminService;
this.securityService = securityService; this.securityService = securityService;
this.buildProperties = buildProperties;
KontorLayoutUtil layout = new KontorLayoutUtil(this, adminService, securityService); KontorLayoutUtil layout = new KontorLayoutUtil(this, adminService, securityService, buildProperties);
layout.setSecondaryNavigation(getSecondaryNavigation()); layout.setSecondaryNavigation(getSecondaryNavigation());
layout.createHeader(ComicConstants.COMICS); layout.createHeader(ComicConstants.COMICS);
} }
@@ -12,6 +12,7 @@ import de.thpeetz.kontor.security.SecurityService;
import de.thpeetz.kontor.services.AdminService; import de.thpeetz.kontor.services.AdminService;
import de.thpeetz.kontor.views.admin.UserProfileView; import de.thpeetz.kontor.views.admin.UserProfileView;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.info.BuildProperties;
@Slf4j @Slf4j
@Route("avatar-menu-bar") @Route("avatar-menu-bar")
@@ -21,9 +22,12 @@ public class AvatarMenuBar extends Div {
final AdminService adminService; final AdminService adminService;
public AvatarMenuBar(SecurityService securityService, AdminService adminService) { private final BuildProperties buildProperties;
public AvatarMenuBar(SecurityService securityService, AdminService adminService, BuildProperties buildProperties) {
this.adminService = adminService; this.adminService = adminService;
this.securityService = securityService; this.securityService = securityService;
this.buildProperties = buildProperties;
Avatar avatar = new Avatar(); Avatar avatar = new Avatar();
securityService.getAuthenticatedUser().ifPresent(user -> { securityService.getAuthenticatedUser().ifPresent(user -> {
@@ -45,6 +49,10 @@ public class AvatarMenuBar extends Div {
profileItem.addClickListener(e -> profileItem.getUI().ifPresent(ui -> ui.navigate(UserProfileView.class))); profileItem.addClickListener(e -> profileItem.getUI().ifPresent(ui -> ui.navigate(UserProfileView.class)));
subMenu.addItem("Settings"); subMenu.addItem("Settings");
subMenu.addItem("Help"); subMenu.addItem("Help");
subMenu.addSeparator();
subMenu.addItem("Version");
subMenu.addItem(this.buildProperties.getVersion());
subMenu.addItem(this.buildProperties.getTime().toString());
add(menuBar); add(menuBar);
} }
} }
@@ -21,6 +21,7 @@ import de.thpeetz.kontor.security.SecurityService;
import de.thpeetz.kontor.services.AdminService; import de.thpeetz.kontor.services.AdminService;
import lombok.*; import lombok.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.info.BuildProperties;
@Slf4j @Slf4j
public class KontorLayoutUtil { public class KontorLayoutUtil {
@@ -33,9 +34,12 @@ public class KontorLayoutUtil {
private final SecurityService securityService; private final SecurityService securityService;
public KontorLayoutUtil(AppLayout layout, AdminService adminService, SecurityService securityService) { private final BuildProperties buildProperties;
public KontorLayoutUtil(AppLayout layout, AdminService adminService, SecurityService securityService, BuildProperties buildProperties) {
this.adminService = adminService; this.adminService = adminService;
this.securityService = securityService; this.securityService = securityService;
this.buildProperties = buildProperties;
this.appLayout = layout; this.appLayout = layout;
} }
@@ -65,7 +69,7 @@ public class KontorLayoutUtil {
viewTitle.addClassNames(LumoUtility.FontSize.LARGE, LumoUtility.Margin.NONE); viewTitle.addClassNames(LumoUtility.FontSize.LARGE, LumoUtility.Margin.NONE);
HorizontalLayout subViews = this.secondaryNavigation; HorizontalLayout subViews = this.secondaryNavigation;
AvatarMenuBar avatar = new AvatarMenuBar(securityService, adminService); AvatarMenuBar avatar = new AvatarMenuBar(securityService, adminService, buildProperties);
HorizontalLayout wrapper = new HorizontalLayout(toggle, viewTitle, avatar); HorizontalLayout wrapper = new HorizontalLayout(toggle, viewTitle, avatar);
wrapper.setDefaultVerticalComponentAlignment(FlexComponent.Alignment.CENTER); wrapper.setDefaultVerticalComponentAlignment(FlexComponent.Alignment.CENTER);
wrapper.expand(viewTitle); wrapper.expand(viewTitle);
@@ -24,6 +24,7 @@ import de.thpeetz.kontor.services.AdminService;
import de.thpeetz.kontor.views.DataManagementView; import de.thpeetz.kontor.views.DataManagementView;
import de.thpeetz.kontor.views.EmailView; import de.thpeetz.kontor.views.EmailView;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.info.BuildProperties;
import java.util.ArrayList; import java.util.ArrayList;
@@ -34,9 +35,12 @@ public class MainLayout extends AppLayout {
private final SecurityService securityService; private final SecurityService securityService;
public MainLayout(AdminService adminService, SecurityService securityService) { private final BuildProperties buildProperties;
public MainLayout(AdminService adminService, SecurityService securityService, BuildProperties buildProperties) {
this.adminService = adminService; this.adminService = adminService;
this.securityService = securityService; this.securityService = securityService;
this.buildProperties = buildProperties;
createHeader("Kontor"); createHeader("Kontor");
createDrawer(); createDrawer();
@@ -57,7 +61,7 @@ public class MainLayout extends AppLayout {
H2 viewTitle = new H2(titleName); H2 viewTitle = new H2(titleName);
viewTitle.addClassNames(LumoUtility.FontSize.LARGE, LumoUtility.Margin.NONE); viewTitle.addClassNames(LumoUtility.FontSize.LARGE, LumoUtility.Margin.NONE);
AvatarMenuBar avatar = new AvatarMenuBar(securityService, adminService); AvatarMenuBar avatar = new AvatarMenuBar(securityService, adminService, buildProperties);
HorizontalLayout wrapper = new HorizontalLayout(toggle, viewTitle, avatar); HorizontalLayout wrapper = new HorizontalLayout(toggle, viewTitle, avatar);
wrapper.setDefaultVerticalComponentAlignment(FlexComponent.Alignment.CENTER); wrapper.setDefaultVerticalComponentAlignment(FlexComponent.Alignment.CENTER);
wrapper.expand(viewTitle); wrapper.expand(viewTitle);
@@ -3,15 +3,16 @@ package de.thpeetz.kontor.views.common;
import com.vaadin.flow.component.applayout.AppLayout; import com.vaadin.flow.component.applayout.AppLayout;
import com.vaadin.flow.component.orderedlayout.HorizontalLayout; import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
import com.vaadin.flow.theme.lumo.LumoUtility; import com.vaadin.flow.theme.lumo.LumoUtility;
import org.springframework.boot.info.BuildProperties;
import de.thpeetz.kontor.security.SecurityService; import de.thpeetz.kontor.security.SecurityService;
import de.thpeetz.kontor.services.AdminService; import de.thpeetz.kontor.services.AdminService;
public class SeparateMainLayout extends AppLayout { public class SeparateMainLayout extends AppLayout {
public SeparateMainLayout(AdminService adminService, SecurityService securityService) { public SeparateMainLayout(AdminService adminService, SecurityService securityService, BuildProperties buildProperties) {
KontorLayoutUtil layout = new KontorLayoutUtil(this, adminService, securityService); KontorLayoutUtil layout = new KontorLayoutUtil(this, adminService, securityService, buildProperties);
layout.setSecondaryNavigation(getSecondaryNavigation()); layout.setSecondaryNavigation(getSecondaryNavigation());
layout.createHeader("Kontor"); layout.createHeader("Kontor");
} }
@@ -9,6 +9,7 @@ import de.thpeetz.kontor.security.SecurityService;
import de.thpeetz.kontor.services.AdminService; import de.thpeetz.kontor.services.AdminService;
import de.thpeetz.kontor.views.common.KontorLayoutUtil; import de.thpeetz.kontor.views.common.KontorLayoutUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.info.BuildProperties;
/** /**
* Represents a custom layout for the comic view in the application. * Represents a custom layout for the comic view in the application.
@@ -21,11 +22,14 @@ public class TyscLayout extends AppLayout {
private final SecurityService securityService; private final SecurityService securityService;
public TyscLayout(AdminService adminService, SecurityService securityService) { private final BuildProperties buildProperties;
public TyscLayout(AdminService adminService, SecurityService securityService, BuildProperties buildProperties) {
this.adminService = adminService; this.adminService = adminService;
this.securityService = securityService; this.securityService = securityService;
this.buildProperties = buildProperties;
KontorLayoutUtil layout = new KontorLayoutUtil(this, adminService, securityService); KontorLayoutUtil layout = new KontorLayoutUtil(this, adminService, securityService, buildProperties);
layout.setSecondaryNavigation(getSecondaryNavigation()); layout.setSecondaryNavigation(getSecondaryNavigation());
layout.createHeader(TyscConstants.TYSC); layout.createHeader(TyscConstants.TYSC);
} }
@@ -1,7 +1,7 @@
app: app:
name: 'Kontor' name: "Kontor"
shortName: 'Kontor' shortName: "Kontor"
description: 'Kontor is a Spring Boot application' description: "Kontor is a Spring Boot application"
spring: spring:
profiles: profiles:
active: local,dev,test,prod active: local,dev,test,prod
@@ -39,6 +39,9 @@ management:
web: web:
exposure: exposure:
include: health,info,metrics,prometheus,camelroutes include: health,info,metrics,prometheus,camelroutes
info:
git:
mode: full
endpoint: endpoint:
health: health:
show-details: always show-details: always
@@ -62,13 +65,13 @@ logging:
controllers: DEBUG controllers: DEBUG
jwt: jwt:
auth: auth:
secret: 'J6GOtcwC2NJI1l0VkHu20PacPFGTxpirBxWwynoHjsc=' secret: "J6GOtcwC2NJI1l0VkHu20PacPFGTxpirBxWwynoHjsc="
mail: mail:
protocol: 'imap' protocol: "imap"
host: 'corky.svpdata.eu' host: "corky.svpdata.eu"
port: 143 port: 143
userName: 'thomas.peetz@thpeetz.de' userName: "thomas.peetz@thpeetz.de"
password: 'fS9f4JYDIO7A' password: "fS9f4JYDIO7A"
starttls: true starttls: true
--- ---
spring: spring:
@@ -77,8 +80,8 @@ spring:
on-profile: prod on-profile: prod
datasource: datasource:
url: jdbc:postgresql://postgres:5432/kontor url: jdbc:postgresql://postgres:5432/kontor
username: 'kontor' username: "kontor"
password: 'kontor' password: "kontor"
artemis: artemis:
mode: native mode: native
broker-url: tcp://activemq:61616 broker-url: tcp://activemq:61616