From a18c37dec1005a744a0a73ec7238b22ac80133a2 Mon Sep 17 00:00:00 2001 From: jenkinsEdificePublic Date: Fri, 13 Jun 2025 19:55:37 +0200 Subject: [PATCH 01/13] chore: prepare next development iteration --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 7f79ca1..454b570 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ group=fr.wseduc archivesBaseName=springboard-plugin -version=3.0.3 +version=3.0-SNAPSHOT From bfc019f977e2341fd3effe7000291f00738cc6fc Mon Sep 17 00:00:00 2001 From: Benjamin Perez Date: Tue, 29 Jul 2025 18:09:08 +0200 Subject: [PATCH 02/13] chore(conf): remove xitiSwitch --- src/main/resources/conf.properties | 1 - src/main/resources/ent-core.json.template | 52 +---------------------- 2 files changed, 2 insertions(+), 51 deletions(-) diff --git a/src/main/resources/conf.properties b/src/main/resources/conf.properties index c4f52f8..955625b 100644 --- a/src/main/resources/conf.properties +++ b/src/main/resources/conf.properties @@ -51,7 +51,6 @@ passwordRegex=.* skins={"localhost:8090":"raw"} activationAutoLogin=false signKey= -xitiSwitch= directoryCalendarSwitch= adminZimbra= samlMetadataFolder= diff --git a/src/main/resources/ent-core.json.template b/src/main/resources/ent-core.json.template index 9f8144b..7ba1eaf 100644 --- a/src/main/resources/ent-core.json.template +++ b/src/main/resources/ent-core.json.template @@ -254,16 +254,6 @@ "library-api-url": "${bprUrl}", "library-token": "${bprToken}", <% } %> - "publicConf": { - <% if ("true".equals(xitiSwitch)) { %> - "xiti": { - "ID_SERVICE": { - "default": "", - "/admin-console": "" - } - } - <% } %> - } } }, { @@ -353,15 +343,6 @@ "restrictCRUDToADMC": false <% } %> } - <% if ("true".equals(xitiSwitch)) { %> - ,"xiti": { - "ID_SERVICE": { - "default": 10, - "/userbook/mon-compte": "", - "/admin-console": "" - } - } - <% } %> } } }, @@ -382,16 +363,7 @@ "app-type": "END_USER", "port": 8011, "wsPort" : 6502, - "mongo-address" : "wse.mongodb.persistor", - "publicConf": { - <% if ("true".equals(xitiSwitch)) { %> - "xiti": { - "ID_SERVICE": { - "default": 1 - } - } - <% } %> - } + "mongo-address" : "wse.mongodb.persistor" } }, { @@ -428,17 +400,7 @@ } } <% } %>, - "visibles-search-type": "${visiblesSearchType}", - "publicConf": { - <% if ("true".equals(xitiSwitch)) { %> - "xiti": { - "ID_SERVICE": { - "default": "", - "/admin-console": "" - } - } - <% } %> - } + "visibles-search-type": "${visiblesSearchType}" } }, { @@ -476,9 +438,6 @@ {"name": "welcomeMessage", "url": "/auth/admin-welcome-message", "allowed": ["SUPER_ADMIN"]}, {"name": "flashMessage", "url": "/timeline/flashmsg/admin", "allowed": ["SUPER_ADMIN"]}, {"name": "embed", "url": "/infra/embed/admin", "allowed": ["SUPER_ADMIN"]} - <% if ("true".equals(xitiSwitch)) { %> - ,{"name": "xiti", "url": "/xiti/admin-console", "allowed": ["SUPER_ADMIN"]} - <% } %> <% if ("true".equals(keyring)) { %> ,{"name": "keyring", "url": "/sso/keyring/admin-console", "allowed": ["SUPER_ADMIN"]} <% } %> @@ -533,13 +492,6 @@ "get-visible-strategy": "${getVisibleStrategy}", "publicConf": { "debounce-time-to-auto-save": ${debounceTimeToAutoSave} - <% if ("true".equals(xitiSwitch)) { %> - ,"xiti": { - "ID_SERVICE": { - "default": 10 - } - } - <% } %> } } }, From 536f9703ce738ee1b74f7cb974ceed5054f98fbf Mon Sep 17 00:00:00 2001 From: Nabil Mansouri Date: Tue, 2 Sep 2025 11:29:42 +0200 Subject: [PATCH 03/13] fix: remove extra colon on ent-core.json.template --- src/main/resources/ent-core.json.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/ent-core.json.template b/src/main/resources/ent-core.json.template index 7ba1eaf..6c5fd95 100644 --- a/src/main/resources/ent-core.json.template +++ b/src/main/resources/ent-core.json.template @@ -252,7 +252,7 @@ <% if ("true".equals(bprEnabled)) { %> "library-enabled": true, "library-api-url": "${bprUrl}", - "library-token": "${bprToken}", + "library-token": "${bprToken}" <% } %> } }, From 88b86fb311be65e7f1d1d9cbf2ca8169d003468e Mon Sep 17 00:00:00 2001 From: Benjamin Perez Date: Tue, 2 Sep 2025 16:32:47 +0200 Subject: [PATCH 04/13] fix: restore xitiSwitch in conf.properties --- src/main/resources/conf.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/resources/conf.properties b/src/main/resources/conf.properties index 955625b..75dc40a 100644 --- a/src/main/resources/conf.properties +++ b/src/main/resources/conf.properties @@ -75,4 +75,5 @@ cantooOptionalFeatureScriptPath= restrictCRUDToADMC= visiblesSearchType= getVisibleStrategy= -debounceTimeToAutoSave=5000 \ No newline at end of file +debounceTimeToAutoSave=5000 +xitiSwitch= From e5a684bd5cae4c909bd4f797dd56a52443db0c72 Mon Sep 17 00:00:00 2001 From: Benjamin Perez Date: Mon, 8 Sep 2025 10:58:57 +0200 Subject: [PATCH 05/13] chore: add new magneto parameters --- src/main/resources/conf.properties | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/resources/conf.properties b/src/main/resources/conf.properties index 75dc40a..9c03e47 100644 --- a/src/main/resources/conf.properties +++ b/src/main/resources/conf.properties @@ -77,3 +77,6 @@ visiblesSearchType= getVisibleStrategy= debounceTimeToAutoSave=5000 xitiSwitch= +magnetoWebsocketMaxUsers=5000 +magnetoWebsocketMaxUsersPerBoard=500 +magnetoWebsocketPort=9092 From a2b49d178237c73e2bf2a7cfdd85334ead8bf2b1 Mon Sep 17 00:00:00 2001 From: Junior BERNARD Date: Thu, 4 Sep 2025 09:36:57 +0200 Subject: [PATCH 06/13] fix: set right path for cluster-config volume --- src/main/resources/docker-compose.mac.yml | 2 +- src/main/resources/docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/docker-compose.mac.yml b/src/main/resources/docker-compose.mac.yml index f63af21..c8d3d40 100644 --- a/src/main/resources/docker-compose.mac.yml +++ b/src/main/resources/docker-compose.mac.yml @@ -39,7 +39,7 @@ services: - SERVICES=s3 - AWS_DEFAULT_REGION=us-east-1 volumes: - - ./cluster-config/init-s3:/etc/localstack/init + - ./conf/cluster-config/init-s3:/etc/localstack/init vertx: image: opendigitaleducation/vertx-service-launcher:3.0-SNAPSHOT diff --git a/src/main/resources/docker-compose.yml b/src/main/resources/docker-compose.yml index 81de1c0..5b672c3 100644 --- a/src/main/resources/docker-compose.yml +++ b/src/main/resources/docker-compose.yml @@ -43,7 +43,7 @@ services: - SERVICES=s3 - AWS_DEFAULT_REGION=us-east-1 volumes: - - ./cluster-config/init-s3:/etc/localstack/init + - ./conf/cluster-config/init-s3:/etc/localstack/init vertx: image: opendigitaleducation/vertx-service-launcher:3.0-SNAPSHOT From c2ce26443c799983827b75ee9145018669296310 Mon Sep 17 00:00:00 2001 From: Junior BERNARD Date: Thu, 4 Sep 2025 10:59:52 +0200 Subject: [PATCH 07/13] fix: remove all ports when in CI mode --- src/main/resources/docker-compose.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/resources/docker-compose.yml b/src/main/resources/docker-compose.yml index 5b672c3..8a776bc 100644 --- a/src/main/resources/docker-compose.yml +++ b/src/main/resources/docker-compose.yml @@ -87,6 +87,10 @@ services: image: neo4j:3.1 volumes: - ./neo4j-conf:/conf + ulimits: + nofile: + soft: 65536 + hard: 65536 redis: image: redis:7.4.0-alpine @@ -109,8 +113,8 @@ services: cap_add: - IPC_LOCK ports: #REMOVE_BY_CI - - "9200:9200" - - "9300:9300" + - "9200:9200" #REMOVE_BY_CI + - "9300:9300" #REMOVE_BY_CI postgres: image: postgres:14.13 From c43a35737f75c7c7d291336b3d147c2b02d97445 Mon Sep 17 00:00:00 2001 From: Junior Bernard Date: Fri, 28 Nov 2025 09:33:40 +0100 Subject: [PATCH 08/13] feat: #RBACK-186, use zookeeper-compatible launcher --- src/main/resources/docker-compose.mac.yml | 4 ++-- src/main/resources/docker-compose.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/docker-compose.mac.yml b/src/main/resources/docker-compose.mac.yml index c8d3d40..30a9e20 100644 --- a/src/main/resources/docker-compose.mac.yml +++ b/src/main/resources/docker-compose.mac.yml @@ -42,7 +42,7 @@ services: - ./conf/cluster-config/init-s3:/etc/localstack/init vertx: - image: opendigitaleducation/vertx-service-launcher:3.0-SNAPSHOT + image: opendigitaleducation/vertx-service-launcher:4.0-zookeeper-SNAPSHOT user: "$DEFAULT_DOCKER_USER" ports: - "5000:5000" @@ -65,7 +65,7 @@ services: - zookeeper environment: - MODE=cluster - - ENABLED_SERVICES=o + - ENABLED_SERVICES= - DEBUG_SUSPEND=n - ENABLE_REMOTE_DEBUG=true pdf: diff --git a/src/main/resources/docker-compose.yml b/src/main/resources/docker-compose.yml index 8a776bc..1cd743b 100644 --- a/src/main/resources/docker-compose.yml +++ b/src/main/resources/docker-compose.yml @@ -46,7 +46,7 @@ services: - ./conf/cluster-config/init-s3:/etc/localstack/init vertx: - image: opendigitaleducation/vertx-service-launcher:3.0-SNAPSHOT + image: opendigitaleducation/vertx-service-launcher:4.0-zookeeper-SNAPSHOT user: "$DEFAULT_DOCKER_USER" ports: #REMOVE_BY_CI - "5000:5000" #REMOVE_BY_CI From 3eef6f54c986d14d582acbff6e3973f77aa6e4d0 Mon Sep 17 00:00:00 2001 From: Junior Bernard Date: Fri, 28 Nov 2025 09:34:11 +0100 Subject: [PATCH 09/13] chore: set version for zk compatibility --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 2d77916..2911af7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ group=fr.wseduc archivesBaseName=springboard-plugin -version=4.0-SNAPSHOT +version=3.1-zookeeper-SNAPSHOT From dc7b45cc953d6a20eaadb4e99a54ba22d687a743 Mon Sep 17 00:00:00 2001 From: Junior Bernard Date: Fri, 28 Nov 2025 09:41:15 +0100 Subject: [PATCH 10/13] ci: set build name --- Jenkinsfile | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile index dcc1192..50e8b69 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -3,6 +3,14 @@ pipeline { agent any stages { + stage("Initialization") { + steps { + script { + def version = sh(returnStdout: true, script: 'grep \'version=\' gradle.properties | cut -d\'=\' -f2') + buildName "${env.GIT_BRANCH.replace("origin/", "")}@${version}" + } + } + } stage('Build') { steps { checkout scm From add4278dc5111154845ee876718bd90f27163252 Mon Sep 17 00:00:00 2001 From: Junior Bernard Date: Tue, 6 Jan 2026 17:28:09 +0100 Subject: [PATCH 11/13] chore: upgrade 'docker compose' version --- build.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build.sh b/build.sh index dffd62a..c795444 100755 --- a/build.sh +++ b/build.sh @@ -8,12 +8,12 @@ fi clean () { - docker-compose run --rm -u "$USER_UID:$GROUP_GID" gradle gradle clean + docker compose run --rm -u "$USER_UID:$GROUP_GID" gradle gradle clean } install() { -# docker-compose run --rm -u "$USER_UID:$GROUP_GID" gradle gradle install publishToMavenLocal - docker-compose run --rm -u "$USER_UID:$GROUP_GID" gradle gradle install +# docker compose run --rm -u "$USER_UID:$GROUP_GID" gradle gradle install publishToMavenLocal + docker compose run --rm -u "$USER_UID:$GROUP_GID" gradle gradle install } publish() { @@ -24,7 +24,7 @@ publish() { echo "sonatypeUsername=$NEXUS_SONATYPE_USERNAME" >> "?/.gradle/gradle.properties" echo "sonatypePassword=$NEXUS_SONATYPE_PASSWORD" >> "?/.gradle/gradle.properties" fi - docker-compose run --rm -u "$USER_UID:$GROUP_GID" gradle gradle publish + docker compose run --rm -u "$USER_UID:$GROUP_GID" gradle gradle publish } for param in "$@" From a972b907d74cd8afc4b4b8e378fcdc7d5addf12f Mon Sep 17 00:00:00 2001 From: Junior Bernard Date: Tue, 6 Jan 2026 17:44:08 +0100 Subject: [PATCH 12/13] feat: use variable for mods in ent-core.json --- README.md | 212 ++++++++++++++++++ gradle.properties | 2 +- .../gradle/springboard/FileUtils.groovy | 69 +++++- .../springboard/SpringboardPlugin.groovy | 7 +- src/main/resources/conf/vertx/logback.xml | 33 +++ .../resources/conf/vertx/logging.properties | 13 ++ src/main/resources/docker-compose.mac.yml | 2 + src/main/resources/docker-compose.yml | 2 + src/main/resources/ent-core.json.template | 20 +- 9 files changed, 347 insertions(+), 13 deletions(-) create mode 100644 README.md create mode 100755 src/main/resources/conf/vertx/logback.xml create mode 100755 src/main/resources/conf/vertx/logging.properties diff --git a/README.md b/README.md new file mode 100644 index 0000000..3ee76e8 --- /dev/null +++ b/README.md @@ -0,0 +1,212 @@ +# Springboard Plugin + +A Gradle plugin for managing and configuring Edifice applications built on the ENT Core framework. + +## Overview + +The Springboard Plugin simplifies the development workflow for Edifice applications by providing automated tasks for: +- Configuration file generation +- Deployment extraction and organization +- Translation and help documentation management +- Theme extraction +- Integration testing with Gatling +- Module version management from GitHub + +## Requirements + +- Java 8 +- Gradle 4.5 +- Docker and Docker Compose (for build and deployment) + +## Installation + +### Using the Build Script + +The plugin includes a build script that uses Docker Compose for consistent builds: + +```bash +# Clean the project +./build.sh clean + +# Install the plugin locally +./build.sh install + +# Publish to repository (requires credentials) +./build.sh publish +``` + +### Manual Installation + +```bash +gradle install +``` + +## Usage + +### Applying the Plugin + +In your project's `build.gradle`: + +```groovy +plugins { + id 'fr.wseduc.springboard' version '3.2-zookeeper-SNAPSHOT' +} +``` + +### Available Tasks + +#### `init` +Initialize a new Edifice project with all necessary files and directories: +- Creates directory structure (mods, deployments, i18n, etc.) +- Extracts deployments, helps, and translations +- Generates sample data and configuration files +- Sets up Docker Compose configuration +- Creates integration test scaffolding + +```bash +gradle init +``` + +#### `generateConf` +Generate the `ent-core.json` configuration file from templates: + +```bash +gradle generateConf +``` + +This task: +- Reads `conf.properties` and `gradle.properties` +- Merges with `default.properties` +- Automatically fetches missing base modules versions from GitHub +- Generates `ent-core.json` from `ent-core.json.template` + +#### `extractDeployments` +Extract deployment artifacts from dependencies: + +```bash +gradle extractDeployments +``` + +#### `extractHelps` +Extract help documentation from dependencies: + +```bash +gradle extractHelps +``` + +#### `extractTranslations` +Extract i18n translation files: + +```bash +gradle extractTranslations +``` + +#### `extractTheme` +Extract theme assets: + +```bash +gradle extractTheme +``` + +#### `integrationTest` +Run Gatling integration tests: + +```bash +gradle integrationTest +``` + +## Module Version Management + +The plugin can automatically fetch the latest versions of Edifice modules from GitHub if they're not specified in your `gradle.properties`. Supported modules include: + +- `mod-pdf-generator` +- `mod-mongo-persistor` +- `mod-image-resizer` +- `mod-zip` +- `mod-postgresql` +- `mod-json-schema-validator` +- `mod-sftp` +- `mod-webdav` +- `mod-sms-sender` + +### Environment Variables + +- `MODS_DEFAULT_BRANCH`: Set the default branch to fetch module versions from (defaults to trying `master`, then `main`) + +## Project Structure + +After running the `init` task, your project will have: + +``` +. +├── conf.properties # User configuration +├── default.properties # Default configuration values +├── ent-core.json.template # Configuration template +├── ent-core.json # Generated configuration +├── package.json # Node.js dependencies +├── docker-compose.yml # Docker setup +├── deployments/ # Extracted deployment artifacts +├── i18n/ # Translation files +├── static/help/ # Help documentation +├── mods/ # Application modules +├── sample-be1d/ # Sample data +├── neo4j-conf/ # Neo4j configuration +├── docker-entrypoint-initdb.d/ # Database initialization scripts +└── src/ + └── test/ + └── scala/ + └── org/entcore/test/ + ├── scenarios/ # Gatling test scenarios + └── simulations/ # Gatling simulations +``` + +## Configuration Files + +### conf.properties +User-specific configuration properties that override defaults. + +### default.properties +Default configuration values merged during configuration generation. + +### gradle.properties +Module versions and build configuration. + +## Docker Support + +The plugin includes Docker Compose configuration with platform-specific support: +- Automatically detects M1/ARM64 Macs +- Uses appropriate Docker images for the platform +- Configures PostgreSQL, MongoDB, and Neo4j services + +## Development + +### Building the Plugin + +```bash +./build.sh install +``` + +### Publishing + +```bash +# Set credentials in ~/.gradle/gradle.properties: +# odeUsername= +# odePassword= + +./build.sh publish +``` + +## License + +See LICENSE file for details. + +## Contributing + +1. Fork the repository +2. Create a feature branch +3. Make your changes +4. Submit a pull request + +## Support + +For issues and questions, please refer to the Edifice documentation or create an issue in the repository. diff --git a/gradle.properties b/gradle.properties index 2911af7..b915aae 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ group=fr.wseduc archivesBaseName=springboard-plugin -version=3.1-zookeeper-SNAPSHOT +version=3.2-zookeeper-SNAPSHOT diff --git a/src/main/groovy/fr/wseduc/gradle/springboard/FileUtils.groovy b/src/main/groovy/fr/wseduc/gradle/springboard/FileUtils.groovy index b8b9ae2..daa7d36 100644 --- a/src/main/groovy/fr/wseduc/gradle/springboard/FileUtils.groovy +++ b/src/main/groovy/fr/wseduc/gradle/springboard/FileUtils.groovy @@ -4,11 +4,28 @@ import groovy.text.SimpleTemplateEngine import org.gradle.api.Project class FileUtils { + + /** + * Map of module property names to module names on GitHub + * so we can fetch their version if not specified in gradle.properties. + */ + static final Map MOD_NAME_MAPPINGS = [ + modPdfgenerator: 'mod-pdf-generator', + modMongoPersistorVersion: 'mod-mongo-persistor', + modImageResizerVersion: 'mod-image-resizer', + modZipVersion: 'mod-zip', + modPostgresVersion: 'mod-postgresql', + modJsonschemavalidatorVersion: 'mod-json-schema-validator', + modSftpVersion: 'OPEN-ENT-NG/mod-sftp', + modWebdavVersion: 'OPEN-ENT-NG/mod-webdav', + modSmsproxyVersion: 'mod-sms-sender' + ] static def createFile(String propertiesFile, String gradleFile, String templateFileName, - String outputFileName) { + String outputFileName, + logger) { def props = new Properties() def file = new File(propertiesFile) def rootDirectory = file.getParentFile() @@ -32,6 +49,7 @@ class FileUtils { bindings[prop] = defaultProps.getProperty(prop) } } + populateModuleVersionsNotInBindings(bindings, logger) def engine = new SimpleTemplateEngine() def templateFile = new File(templateFileName) def output = engine.createTemplate(templateFile).make(bindings) @@ -43,6 +61,55 @@ class FileUtils { fileWriter.close() } + /** + * For each module defined in MOD_NAME_MAPPINGS, if the corresponding + * property is not defined in the bindings map, fetch the latest release + * version from GitHub and add it to the bindings. + */ + static def populateModuleVersionsNotInBindings(Map bindings, logger) { + String modsDefaultBranch = System.getenv("MODS_DEFAULT_BRANCH") + MOD_NAME_MAPPINGS.each { key, modName -> + if (!bindings.containsKey(key)) { + logger.lifecycle("Fetching latest release version for module: " + modName) + // Fetch raw pom.xml from GitHub for the module. It will successively try + // the default branch (if defined in env MODS_DEFAULT_BRANCH), then master, + // then main. + // If it still does not exist raise an error + String[] branches = [] + if (modsDefaultBranch != null && !modsDefaultBranch.isEmpty()) { + branches = [modsDefaultBranch, 'master', 'main'] + } else { + branches = ['master', 'main'] + } + String latestVersion = null + for (String branch : branches) { + try { + String modUrl; + if (modName.contains('/')) { + modUrl = modName + } else { + modUrl = "edificeio/" + modName + } + URL pomUrl = new URL("https://raw.githubusercontent.com/" + modUrl + "/refs/heads/" + branch + "/pom.xml") + InputStream pomStream = pomUrl.openStream() + String pomContent = pomStream.getText("UTF-8") + // Parse the xml and extract the version of the artifact + def pomXml = new XmlSlurper().parseText(pomContent) + latestVersion = pomXml.version.text() + break + } catch (Exception e) { + // Continue to next branch + } + } + if (latestVersion == null) { + throw new RuntimeException("Could not find the latest version of module: " + modName) + } + logger.lifecycle("Using latest version for module " + modName + " : " + latestVersion) + bindings[key] = latestVersion + } + } + } + /** * Removes from the specified props the properties that are not * useful for the generation of the entcore.json diff --git a/src/main/groovy/fr/wseduc/gradle/springboard/SpringboardPlugin.groovy b/src/main/groovy/fr/wseduc/gradle/springboard/SpringboardPlugin.groovy index a357e6f..0f34443 100644 --- a/src/main/groovy/fr/wseduc/gradle/springboard/SpringboardPlugin.groovy +++ b/src/main/groovy/fr/wseduc/gradle/springboard/SpringboardPlugin.groovy @@ -11,7 +11,12 @@ class SpringboardPlugin implements Plugin { void apply(Project project) { project.task("generateConf") << { def rootDir = project.getRootDir().getAbsolutePath() - FileUtils.createFile("${rootDir}/conf.properties", "${rootDir}/gradle.properties", "${rootDir}/ent-core.json.template", "${rootDir}/ent-core.json") + FileUtils.createFile( + "${rootDir}/conf.properties", + "${rootDir}/gradle.properties", + "${rootDir}/ent-core.json.template", + "${rootDir}/ent-core.json", + project.logger) } project.task("extractDeployments") << { diff --git a/src/main/resources/conf/vertx/logback.xml b/src/main/resources/conf/vertx/logback.xml new file mode 100755 index 0000000..7c8eefc --- /dev/null +++ b/src/main/resources/conf/vertx/logback.xml @@ -0,0 +1,33 @@ + + + + + + %d{yyyy-MM-dd HH:mm:ss} %level %msg%n + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/conf/vertx/logging.properties b/src/main/resources/conf/vertx/logging.properties new file mode 100755 index 0000000..1886abf --- /dev/null +++ b/src/main/resources/conf/vertx/logging.properties @@ -0,0 +1,13 @@ +handlers=com.opendigitaleducation.launcher.logger.ENTLogHandler +com.opendigitaleducation.launcher.logger.ENTLogHandler.level=INFO + +.level=INFO +org.vertx.level=INFO +com.hazelcast.level=SEVERE +io.netty.util.internal.PlatformDependent.level=SEVERE + +ACCESS.level=FINEST +ACCESS.handlers=com.opendigitaleducation.launcher.logger.AccessLogHandler +ACCESS.useParentHandlers=false +ACCESS.com.opendigitaleducation.launcher.logger.AccessLogHandler.level=FINEST +ACCESS.com.opendigitaleducation.launcher.logger.AccessLogHandler.formatter=com.opendigitaleducation.launcher.logger.JsonAccessFormatter diff --git a/src/main/resources/docker-compose.mac.yml b/src/main/resources/docker-compose.mac.yml index 30a9e20..cd037be 100644 --- a/src/main/resources/docker-compose.mac.yml +++ b/src/main/resources/docker-compose.mac.yml @@ -50,6 +50,8 @@ services: - ./assets:/srv/springboard/assets - ./mods:/srv/springboard/mods - ./ent-core.json:/srv/springboard/conf/vertx.conf + - ./conf/vertx/logback.xml:/srv/springboard/conf/logback.xml + - ./conf/vertx/logging.properties:/srv/springboard/conf/logging.properties - ./conf/cluster-config/zookeeper.json:/srv/springboard/conf/zookeeper.json - ./aaf-duplicates-test:/home/wse/aaf - ~/.m2:/home/vertx/.m2 diff --git a/src/main/resources/docker-compose.yml b/src/main/resources/docker-compose.yml index 1cd743b..7e22867 100644 --- a/src/main/resources/docker-compose.yml +++ b/src/main/resources/docker-compose.yml @@ -54,6 +54,8 @@ services: - ./assets:/srv/springboard/assets - ./mods:/srv/springboard/mods - ./ent-core.json:/srv/springboard/conf/vertx.conf + - ./conf/vertx/logback.xml:/srv/springboard/conf/logback.xml + - ./conf/vertx/logging.properties:/srv/springboard/conf/logging.properties - ./conf/cluster-config/zookeeper.json:/srv/springboard/conf/zookeeper.json - ./aaf-duplicates-test:/home/wse/aaf - ~/.m2:/home/vertx/.m2 diff --git a/src/main/resources/ent-core.json.template b/src/main/resources/ent-core.json.template index 68997a9..407d926 100644 --- a/src/main/resources/ent-core.json.template +++ b/src/main/resources/ent-core.json.template @@ -13,7 +13,7 @@ }, "services" : [ { - "name": "io.vertx~mod-mongo-persistor~4.0-SNAPSHOT", + "name": "io.vertx~mod-mongo-persistor~${modMongoPersistorVersion}", "waitDeploy" : true, "worker": true, "multi-threaded": true, @@ -30,7 +30,7 @@ } }, { - "name" : "fr.wseduc~mod-image-resizer~3.0-SNAPSHOT", + "name" : "fr.wseduc~mod-image-resizer~${modImageResizerVersion}", "worker": true, "multi-threaded": true, "waitDeploy" : true, @@ -58,7 +58,7 @@ } }, { - "name": "fr.wseduc~mod-zip~3.0-SNAPSHOT", + "name": "fr.wseduc~mod-zip~${modZipVersion}", "waitDeploy" : true, "worker": true, "config":{ @@ -66,7 +66,7 @@ } }, { - "name": "fr.wseduc~mod-postgresql~2.0-SNAPSHOT", + "name": "fr.wseduc~mod-postgresql~${modPostgresVersion}", "waitDeploy" : true, "worker": true, "multi-threaded" : true, @@ -79,7 +79,7 @@ }, <% if (pgAdminUser != null && !pgAdminUser.trim().isEmpty()) { %> { - "name": "fr.wseduc~mod-postgresql~2.0-SNAPSHOT", + "name": "fr.wseduc~mod-postgresql~${modPostgresVersion}", "waitDeploy" : true, "worker": true, "multi-threaded" : true, @@ -92,7 +92,7 @@ }, <% } %> { - "name": "com.opendigitaleducation~mod-json-schema-validator~2.0-SNAPSHOT", + "name": "com.opendigitaleducation~mod-json-schema-validator~${modJsonschemavalidatorVersion}", "waitDeploy" : true, "worker": true, "multi-threaded" : true, @@ -101,7 +101,7 @@ }, <% if (modSftp != null && !modSftp.trim().isEmpty()) { %> { - "name": "fr.cgi~mod-sftp~2.0-SNAPSHOT", + "name": "fr.cgi~mod-sftp~${modSftpVersion}", "waitDeploy": true, "config": { "main" : "fr.cgi.sftp.Sftp", @@ -112,7 +112,7 @@ <% } %> <% if (webdavHost != null && !webdavHost.trim().isEmpty()) { %> { - "name": "fr.wseduc~mod-webdav~2.0-SNAPSHOT", + "name": "fr.wseduc~mod-webdav~${modWebdavVersion}", "config": { "address" : "webdav" <% if ("true".equals(webdavCredential)) { %> @@ -129,7 +129,7 @@ }, <% } %> { - "name": "fr.wseduc~mod-sms-proxy~2.0-SNAPSHOT", + "name": "fr.wseduc~mod-sms-proxy~${modSmsproxyVersion}", "waitDeploy" : true, "worker": true, "config":{ @@ -138,7 +138,7 @@ } }, { - "name": "fr.wseduc~mod-pdf-generator~2.0-SNAPSHOT", + "name": "fr.wseduc~mod-pdf-generator~${modPdfgenerator}", "waitDeploy" : true, "worker": true, "config":{ From 36cf954c9fe4e762ad1c2cea7fdb6027926a8d5e Mon Sep 17 00:00:00 2001 From: Junior Bernard Date: Tue, 6 Jan 2026 17:58:43 +0100 Subject: [PATCH 13/13] chore: set next development version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index b915aae..1078511 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ group=fr.wseduc archivesBaseName=springboard-plugin -version=3.2-zookeeper-SNAPSHOT +version=4.0-zookeeper-SNAPSHOT