From 7a2c6be122a27c594dac8c78d2800cc562da66c8 Mon Sep 17 00:00:00 2001 From: xurror Date: Tue, 21 Apr 2020 16:47:34 +0100 Subject: [PATCH 1/3] FINERACT-883 Display fineracts git build info actuator/info endpoint --- fineract-provider/.gitignore | 1 + fineract-provider/build.gradle | 30 +++++++++++++++++-- .../basicauth/application.properties | 1 + .../twofactor/application.properties | 1 + .../properties/oauth/application.properties | 1 + .../oauth/twofactor/application.properties | 1 + .../src/main/resources/application.properties | 1 + 7 files changed, 33 insertions(+), 3 deletions(-) diff --git a/fineract-provider/.gitignore b/fineract-provider/.gitignore index e4bae860977..01188279910 100644 --- a/fineract-provider/.gitignore +++ b/fineract-provider/.gitignore @@ -1,6 +1,7 @@ bin out/ build +src/main/resources/git.properties repos .classpath .project diff --git a/fineract-provider/build.gradle b/fineract-provider/build.gradle index d6982f8ad33..746898b995a 100644 --- a/fineract-provider/build.gradle +++ b/fineract-provider/build.gradle @@ -49,6 +49,7 @@ buildscript { // See: https://github.com/spotbugs/spotbugs-gradle-plugin/issues/128#issuecomment-535864882 classpath 'com.google.guava:guava:28.1-jre' classpath "gradle.plugin.com.github.andygoossens:gradle-modernizer-plugin:1.3.0" + classpath "gradle.plugin.com.gorylenko.gradle-git-properties:gradle-git-properties:2.2.2" } } @@ -68,6 +69,7 @@ apply plugin: "com.github.spotbugs" apply plugin: 'checkstyle' apply plugin: 'com.github.andygoossens.gradle-modernizer-plugin' apply plugin: 'jacoco' +apply plugin: "com.gorylenko.gradle-git-properties" // apply plugin: 'pmd' dependencyManagement { @@ -250,8 +252,8 @@ rat { //BSD License '**/assets/uglify.js', - //Ignore out folder - '**/out/**' + //Ignore out folder + '**/out/**', ] } @@ -403,7 +405,15 @@ war { license { header rootProject.file('../APACHE_LICENSETEXT.md') - excludes(["**/*.html", "**/*.mustache", "**/package-info.java", "**/keystore.jks", "**/swagger-ui/**"]) + excludes([ + "**/rat-report.txt", + "**/git.properties", + "**/*.html", + "**/*.mustache", + "**/package-info.java", + "**/keystore.jks", + "**/swagger-ui/**", + ]) strictCheck true } @@ -557,6 +567,7 @@ def qualifyVersionIfNecessary(version) { springBoot { mainClassName = 'org.apache.fineract.ServerWithMariaDB4jApplication' } + bootWar { mainClassName = 'org.apache.fineract.ServerWithMariaDB4jApplication' } @@ -567,3 +578,16 @@ tasks.withType(SpotBugsTask) { reports.html.enabled = true reportLevel = "high" } + +gitProperties { + gitPropertiesResourceDir = "${project.rootDir}/src/main/resources" + dateFormat = "yyyy-MM-dd'T'HH:mmZ" + dateFormatTimeZone = "GMT" +} + +generateGitProperties.outputs.upToDateWhen { false } + +clean { + delete "${project.rootDir}/src/main/resources/git.properties" +} + diff --git a/fineract-provider/properties/basicauth/application.properties b/fineract-provider/properties/basicauth/application.properties index b1f6aea78a4..a6f669274e5 100644 --- a/fineract-provider/properties/basicauth/application.properties +++ b/fineract-provider/properties/basicauth/application.properties @@ -19,3 +19,4 @@ spring.profiles.default=basicauth management.health.jms.enabled=false +management.info.git.mode=FULL diff --git a/fineract-provider/properties/basicauth/twofactor/application.properties b/fineract-provider/properties/basicauth/twofactor/application.properties index b748491a7d5..59bd126aaca 100644 --- a/fineract-provider/properties/basicauth/twofactor/application.properties +++ b/fineract-provider/properties/basicauth/twofactor/application.properties @@ -20,3 +20,4 @@ spring.profiles.default=basicauth spring.profiles.active=basicauth,twofactor management.health.jms.enabled=false +management.info.git.mode=FULL diff --git a/fineract-provider/properties/oauth/application.properties b/fineract-provider/properties/oauth/application.properties index b34050a5bb5..d958ec715ec 100644 --- a/fineract-provider/properties/oauth/application.properties +++ b/fineract-provider/properties/oauth/application.properties @@ -20,3 +20,4 @@ spring.profiles.default=basicauth spring.profiles.active=oauth management.health.jms.enabled=false +management.info.git.mode=FULL diff --git a/fineract-provider/properties/oauth/twofactor/application.properties b/fineract-provider/properties/oauth/twofactor/application.properties index 3164fff9708..1a2c979ce77 100644 --- a/fineract-provider/properties/oauth/twofactor/application.properties +++ b/fineract-provider/properties/oauth/twofactor/application.properties @@ -20,3 +20,4 @@ spring.profiles.default=basicauth spring.profiles.active=oauth,twofactor management.health.jms.enabled=false +management.info.git.mode=FULL diff --git a/fineract-provider/src/main/resources/application.properties b/fineract-provider/src/main/resources/application.properties index b1f6aea78a4..a6f669274e5 100644 --- a/fineract-provider/src/main/resources/application.properties +++ b/fineract-provider/src/main/resources/application.properties @@ -19,3 +19,4 @@ spring.profiles.default=basicauth management.health.jms.enabled=false +management.info.git.mode=FULL From 5db628dbc4bafe427047690ed1b088ea47ba0d36 Mon Sep 17 00:00:00 2001 From: xurror Date: Thu, 23 Apr 2020 04:16:40 +0100 Subject: [PATCH 2/3] Fix rat reports --- .travis.yml | 2 +- fineract-provider/build.gradle | 165 ++++++++++++++++----------------- 2 files changed, 81 insertions(+), 86 deletions(-) diff --git a/.travis.yml b/.travis.yml index 955add4a8f7..933e5e5049e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -61,5 +61,5 @@ script: # using "&&" instead of several "-" means that integrationTest does not run if test fails, # and Docker test does not run if integration test fails, which makes PR failure easier to understand. # @see https://docs.travis-ci.com/user/job-lifecycle/#customizing-the-build-phase - - ./gradlew --console=plain licenseMain licenseTest licenseIntegrationTest check && ./gradlew --console=plain integrationTest && sudo service mysql stop && docker-compose build && docker-compose up -d && sleep 30s && http --verify=no --timeout 240 --check-status get https://localhost:8443/fineract-provider/actuator/health + - ./gradlew clean && ./gradlew --console=plain licenseMain licenseTest licenseIntegrationTest check && ./gradlew --console=plain integrationTest && sudo service mysql stop && docker-compose build && docker-compose up -d && sleep 30s && http --verify=no --timeout 240 --check-status get https://localhost:8443/fineract-provider/actuator/health # We stop the mysql system service when running the Docker test to avoid port 3306 conflicts (unless we run the mysql in docker-compose on another port; req. FINERACT-773) diff --git a/fineract-provider/build.gradle b/fineract-provider/build.gradle index 746898b995a..595e755d247 100644 --- a/fineract-provider/build.gradle +++ b/fineract-provider/build.gradle @@ -43,7 +43,7 @@ buildscript { // below classpath "org.apache.openjpa:openjpa:$openJPAVersion" classpath 'com.radcortez.gradle:openjpa-gradle-plugin:3.1.0' - classpath 'gradle.plugin.org.nosphere.apache:creadur-rat-gradle:0.2.2' + classpath "org.nosphere.apache:creadur-rat-gradle:0.6.0" classpath "com.github.spotbugs:spotbugs-gradle-plugin:2.0.1" // Use Guava version 23+ as a workaround to spotbug intergration. // See: https://github.com/spotbugs/spotbugs-gradle-plugin/issues/128#issuecomment-535864882 @@ -175,86 +175,82 @@ jacocoTestReport{ } rat { - xmlOutput = false - htmlOutput = false - plainOutput = true - verbose = false -// inputDir = './..' - reportDir = new File(buildDir,'reports/rat') - excludes = [ - '**/licenses/**', - '**/*.md', - '**/*.github/**', - '**/MANIFEST.MF', - '**/*.json', - '**/*.txt', - '**/*.log', - '**/fineractdev-eclipse-preferences.epf', - '**/template-expected.html', - '**/template.mustache', - '**/.classpath', - '**/.project', - '**/.idea/**', - '**/*.ipr', - '**/*.iws', - '**/.settings/**', - '**/bin/**', - '**/.git/**', - '**/.gitignore', - '**/.gitkeep', - '**/*.iml', - //Notice files - '**/NOTICE_RELEASE', - '**/NOTICE_SOURCE', - // Swagger License - '**/src/main/resources/swagger-ui/**', - // gradle - '**/.gradle/**', - '**/gradlew', - '**/gradlew.bat', - '**/gradle/wrapper/gradle-wrapper.properties', - '**/caches/**', - '**/daemon/**', - '**/native/**', - '**/wrapper/**', - '**/build/**', - - //Api Docs - '**/api-docs/*.*', - '**/docs/system-architecture/.htaccess', - '**/docs/system-architecture/404.html', - '**/docs/system-architecture/index.html', - '**/docs/system-architecture/**/*.xml', - '**/bootstrap-3.0.0/assets/application.js', - '**/system-architecture/js/plugins.js', - - //Apache License - '**/bootstrap-3.0.0/assets/less.js', - '**/css/bootstrap-3.0.0/**/*.*', - - //Public Domain See http://www.JSON.org/js.html - '**/bootstrap-3.0.0/assets/json2.js.htm', - - // MIT License - '**/modernizr-2.6.2.min.js', - '**/css/normalize.css', - '**/assets/filesaver.js', - '**/css/fonts/glyphicons-halflings-regular.svg', - '**/assets/jszip.js', - '**/assets/jquery.js', - '**/api-docs/jquery-1.7.min.js', - '**/css/toc-0.1.2/**/*.*', - '**/docs/system-architecture/css/main.css', - '**/system-architecture/js/vendor/jquery-1.9.1.min.js', - '**/system-architecture/js/vendor/toc-0.1.2/jquery.toc.min.js', - '**/assets/respond.min.js', - '**/assets/html5shiv.js', - - //BSD License - '**/assets/uglify.js', - //Ignore out folder - '**/out/**', - ] + verbose = false + reportDir = new File(buildDir,'reports/rat') + excludes = [ + '**/licenses/**', + '**/*.md', + '**/*.github/**', + '**/MANIFEST.MF', + '**/*.json', + '**/*.txt', + '**/*.log', + '**/fineractdev-eclipse-preferences.epf', + '**/template-expected.html', + '**/template.mustache', + '**/.classpath', + '**/.project', + '**/.idea/**', + '**/*.ipr', + '**/*.iws', + '**/.settings/**', + '**/bin/**', + '**/.git/**', + '**/.gitignore', + '**/.gitkeep', + '**/*.iml', + //Notice files + '**/NOTICE_RELEASE', + '**/NOTICE_SOURCE', + // Swagger License + '**/src/main/resources/swagger-ui/**', + // gradle + '**/.gradle/**', + '**/gradlew', + '**/gradlew.bat', + '**/gradle/wrapper/gradle-wrapper.properties', + '**/caches/**', + '**/daemon/**', + '**/native/**', + '**/wrapper/**', + '**/build/**', + + //Api Docs + '**/api-docs/*.*', + '**/docs/system-architecture/.htaccess', + '**/docs/system-architecture/404.html', + '**/docs/system-architecture/index.html', + '**/docs/system-architecture/**/*.xml', + '**/bootstrap-3.0.0/assets/application.js', + '**/system-architecture/js/plugins.js', + + //Apache License + '**/bootstrap-3.0.0/assets/less.js', + '**/css/bootstrap-3.0.0/**/*.*', + + //Public Domain See http://www.JSON.org/js.html + '**/bootstrap-3.0.0/assets/json2.js.htm', + + // MIT License + '**/modernizr-2.6.2.min.js', + '**/css/normalize.css', + '**/assets/filesaver.js', + '**/css/fonts/glyphicons-halflings-regular.svg', + '**/assets/jszip.js', + '**/assets/jquery.js', + '**/api-docs/jquery-1.7.min.js', + '**/css/toc-0.1.2/**/*.*', + '**/docs/system-architecture/css/main.css', + '**/system-architecture/js/vendor/jquery-1.9.1.min.js', + '**/system-architecture/js/vendor/toc-0.1.2/jquery.toc.min.js', + '**/assets/respond.min.js', + '**/assets/html5shiv.js', + + //BSD License + '**/assets/uglify.js', + //Ignore out folder + '**/out/**', + ] } configurations { @@ -327,14 +323,14 @@ modernizer { ignorePackages = [] ignoreClassNamePatterns = [ - '.*AbstractPersistableCustom' + '.*AbstractPersistableCustom' ] ignoreGeneratedClasses = true exclusions = [] exclusionPatterns = [ -// To be removed when https://issues.apache.org/jira/browse/FINERACT-826 is fixed - 'org/joda/time/.*' + // To be removed when https://issues.apache.org/jira/browse/FINERACT-826 is fixed + 'org/joda/time/.*' ] } @@ -406,7 +402,6 @@ war { license { header rootProject.file('../APACHE_LICENSETEXT.md') excludes([ - "**/rat-report.txt", "**/git.properties", "**/*.html", "**/*.mustache", From 6fbe4ed6d0c4116062bde1cbe973e4ecadfa87ad Mon Sep 17 00:00:00 2001 From: xurror Date: Thu, 23 Apr 2020 08:28:57 +0100 Subject: [PATCH 3/3] IntegrationTests for git build info --- .travis.yml | 2 +- fineract-provider/.gitignore | 1 - fineract-provider/build.gradle | 222 +++++++++--------- .../ActuatorIntegrationTest.java | 47 ++++ 4 files changed, 161 insertions(+), 111 deletions(-) create mode 100644 fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ActuatorIntegrationTest.java diff --git a/.travis.yml b/.travis.yml index 933e5e5049e..955add4a8f7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -61,5 +61,5 @@ script: # using "&&" instead of several "-" means that integrationTest does not run if test fails, # and Docker test does not run if integration test fails, which makes PR failure easier to understand. # @see https://docs.travis-ci.com/user/job-lifecycle/#customizing-the-build-phase - - ./gradlew clean && ./gradlew --console=plain licenseMain licenseTest licenseIntegrationTest check && ./gradlew --console=plain integrationTest && sudo service mysql stop && docker-compose build && docker-compose up -d && sleep 30s && http --verify=no --timeout 240 --check-status get https://localhost:8443/fineract-provider/actuator/health + - ./gradlew --console=plain licenseMain licenseTest licenseIntegrationTest check && ./gradlew --console=plain integrationTest && sudo service mysql stop && docker-compose build && docker-compose up -d && sleep 30s && http --verify=no --timeout 240 --check-status get https://localhost:8443/fineract-provider/actuator/health # We stop the mysql system service when running the Docker test to avoid port 3306 conflicts (unless we run the mysql in docker-compose on another port; req. FINERACT-773) diff --git a/fineract-provider/.gitignore b/fineract-provider/.gitignore index 01188279910..e4bae860977 100644 --- a/fineract-provider/.gitignore +++ b/fineract-provider/.gitignore @@ -1,7 +1,6 @@ bin out/ build -src/main/resources/git.properties repos .classpath .project diff --git a/fineract-provider/build.gradle b/fineract-provider/build.gradle index 595e755d247..955375f12fb 100644 --- a/fineract-provider/build.gradle +++ b/fineract-provider/build.gradle @@ -24,33 +24,33 @@ gradle clean tomcatrunwar project.ext.jerseyVersion = '1.17' buildscript { - ext { - openJPAVersion = '3.1.0' - jacocoVersion = '0.8.5' - } - repositories { - jcenter() - mavenCentral() - maven { url "https://plugins.gradle.org/m2/" } - } - - dependencies { - classpath 'io.spring.gradle:dependency-management-plugin:1.0.9.RELEASE' - classpath 'com.bmuschko:gradle-tomcat-plugin:2.5', - 'nl.javadude.gradle.plugins:license-gradle-plugin:0.11.0', - 'org.zeroturnaround:gradle-jrebel-plugin:1.1.2', - 'org.springframework.boot:spring-boot-gradle-plugin:2.2.4.RELEASE' - // below - classpath "org.apache.openjpa:openjpa:$openJPAVersion" - classpath 'com.radcortez.gradle:openjpa-gradle-plugin:3.1.0' - classpath "org.nosphere.apache:creadur-rat-gradle:0.6.0" - classpath "com.github.spotbugs:spotbugs-gradle-plugin:2.0.1" - // Use Guava version 23+ as a workaround to spotbug intergration. - // See: https://github.com/spotbugs/spotbugs-gradle-plugin/issues/128#issuecomment-535864882 - classpath 'com.google.guava:guava:28.1-jre' - classpath "gradle.plugin.com.github.andygoossens:gradle-modernizer-plugin:1.3.0" - classpath "gradle.plugin.com.gorylenko.gradle-git-properties:gradle-git-properties:2.2.2" - } + ext { + openJPAVersion = '3.1.0' + jacocoVersion = '0.8.5' + } + repositories { + jcenter() + mavenCentral() + maven { url "https://plugins.gradle.org/m2/" } + } + + dependencies { + classpath 'io.spring.gradle:dependency-management-plugin:1.0.9.RELEASE' + classpath 'com.bmuschko:gradle-tomcat-plugin:2.5', + 'nl.javadude.gradle.plugins:license-gradle-plugin:0.11.0', + 'org.zeroturnaround:gradle-jrebel-plugin:1.1.2', + 'org.springframework.boot:spring-boot-gradle-plugin:2.2.4.RELEASE' + // below + classpath "org.apache.openjpa:openjpa:$openJPAVersion" + classpath 'com.radcortez.gradle:openjpa-gradle-plugin:3.1.0' + classpath 'gradle.plugin.org.nosphere.apache:creadur-rat-gradle:0.2.2' + classpath "com.github.spotbugs:spotbugs-gradle-plugin:2.0.1" + // Use Guava version 23+ as a workaround to spotbug intergration. + // See: https://github.com/spotbugs/spotbugs-gradle-plugin/issues/128#issuecomment-535864882 + classpath 'com.google.guava:guava:28.1-jre' + classpath "gradle.plugin.com.github.andygoossens:gradle-modernizer-plugin:1.3.0" + classpath "gradle.plugin.com.gorylenko.gradle-git-properties:gradle-git-properties:2.2.2" + } } apply plugin: 'io.spring.dependency-management' @@ -73,70 +73,70 @@ apply plugin: "com.gorylenko.gradle-git-properties" // apply plugin: 'pmd' dependencyManagement { - imports { - mavenBom 'org.springframework:spring-framework-bom:5.2.3.RELEASE' - } - - dependencies { - dependency 'org.springframework.security.oauth:spring-security-oauth2:2.3.6.RELEASE' - dependency 'org.apache.openjpa:openjpa:3.1.0' - dependency 'com.squareup.retrofit:retrofit:1.6.1' - dependency 'com.squareup.okhttp:okhttp:2.0.0' - dependency 'com.squareup.okhttp:okhttp-urlconnection:2.0.0' - dependency 'com.google.code.gson:gson:+' - dependency 'com.google.guava:guava:28.1-jre' - dependency 'joda-time:joda-time:+' - dependency 'org.apache.commons:commons-email:1.3.3' - dependency 'org.apache.commons:commons-lang3:+' - dependency 'org.drizzle.jdbc:drizzle-jdbc:1.4' - dependency 'com.lowagie:itext:2.1.7' - dependency 'com.lowagie:itext-rtf:2.1.7' - dependency 'org.mnode.ical4j:ical4j:1.0.4' - dependency 'com.googlecode.flyway:flyway-core:2.1.1' - dependency 'org.quartz-scheduler:quartz:+' - dependency 'com.amazonaws:aws-java-sdk-s3:1.11.80' - dependency 'net.sf.ehcache:ehcache:+' - dependency 'com.github.spullara.mustache.java:compiler:0.8.12' - dependency 'com.jayway.jsonpath:json-path:0.9.1' - dependency 'org.apache.tika:tika-core:1.9' - dependency 'org.apache.httpcomponents:httpclient:+' - dependency 'io.swagger:swagger-jersey-jaxrs:1.5.15' - dependency 'org.springframework:spring-jms:4.0.7.RELEASE' - dependency 'org.apache.activemq:activemq-broker:+' - dependency 'javax.validation:validation-api:+' - dependency 'org.apache.bval:org.apache.bval.bundle:2.0.2' - dependencySet(group: 'io.rest-assured', version: '3.3.0'){ - entry 'rest-assured' - } - dependency 'junit:junit:+' - //dependency 'junit:junit-dep:4.11' - dependency 'org.mockito:mockito-core:+' - dependency 'org.slf4j:slf4j-simple:1.7.30' - dependency 'com.mockrunner:mockrunner-jms:2.0.1' - dependency 'com.mockrunner:mockrunner-jdbc:2.0.1' - - dependencySet(group: 'com.sun.jersey', version: jerseyVersion) { - entry 'jersey-core' - entry 'jersey-servlet' - entry 'jersey-server' - entry 'jersey-json' - } - dependencySet(group: 'com.sun.jersey.contribs', version: jerseyVersion) { - entry 'jersey-spring' - entry 'jersey-multipart' - } - dependencySet(group: 'org.apache.poi', version: '3.9') { - entry 'poi' - entry 'poi-ooxml' - entry 'poi-ooxml-schemas' - } - dependencySet(group: 'org.apache.tomcat.embed', version: '7.0.94') { - entry 'tomcat-embed-core' - entry 'tomcat-embed-jasper' - entry 'tomcat-embed-logging-log4j' - } - - } + imports { + mavenBom 'org.springframework:spring-framework-bom:5.2.3.RELEASE' + } + + dependencies { + dependency 'org.springframework.security.oauth:spring-security-oauth2:2.3.6.RELEASE' + dependency 'org.apache.openjpa:openjpa:3.1.0' + dependency 'com.squareup.retrofit:retrofit:1.6.1' + dependency 'com.squareup.okhttp:okhttp:2.0.0' + dependency 'com.squareup.okhttp:okhttp-urlconnection:2.0.0' + dependency 'com.google.code.gson:gson:+' + dependency 'com.google.guava:guava:28.1-jre' + dependency 'joda-time:joda-time:+' + dependency 'org.apache.commons:commons-email:1.3.3' + dependency 'org.apache.commons:commons-lang3:+' + dependency 'org.drizzle.jdbc:drizzle-jdbc:1.4' + dependency 'com.lowagie:itext:2.1.7' + dependency 'com.lowagie:itext-rtf:2.1.7' + dependency 'org.mnode.ical4j:ical4j:1.0.4' + dependency 'com.googlecode.flyway:flyway-core:2.1.1' + dependency 'org.quartz-scheduler:quartz:+' + dependency 'com.amazonaws:aws-java-sdk-s3:1.11.80' + dependency 'net.sf.ehcache:ehcache:+' + dependency 'com.github.spullara.mustache.java:compiler:0.8.12' + dependency 'com.jayway.jsonpath:json-path:0.9.1' + dependency 'org.apache.tika:tika-core:1.9' + dependency 'org.apache.httpcomponents:httpclient:+' + dependency 'io.swagger:swagger-jersey-jaxrs:1.5.15' + dependency 'org.springframework:spring-jms:4.0.7.RELEASE' + dependency 'org.apache.activemq:activemq-broker:+' + dependency 'javax.validation:validation-api:+' + dependency 'org.apache.bval:org.apache.bval.bundle:2.0.2' + dependencySet(group: 'io.rest-assured', version: '3.3.0'){ + entry 'rest-assured' + } + dependency 'junit:junit:+' + //dependency 'junit:junit-dep:4.11' + dependency 'org.mockito:mockito-core:+' + dependency 'org.slf4j:slf4j-simple:1.7.30' + dependency 'com.mockrunner:mockrunner-jms:2.0.1' + dependency 'com.mockrunner:mockrunner-jdbc:2.0.1' + + dependencySet(group: 'com.sun.jersey', version: jerseyVersion) { + entry 'jersey-core' + entry 'jersey-servlet' + entry 'jersey-server' + entry 'jersey-json' + } + dependencySet(group: 'com.sun.jersey.contribs', version: jerseyVersion) { + entry 'jersey-spring' + entry 'jersey-multipart' + } + dependencySet(group: 'org.apache.poi', version: '3.9') { + entry 'poi' + entry 'poi-ooxml' + entry 'poi-ooxml-schemas' + } + dependencySet(group: 'org.apache.tomcat.embed', version: '7.0.94') { + entry 'tomcat-embed-core' + entry 'tomcat-embed-jasper' + entry 'tomcat-embed-logging-log4j' + } + + } } /* define the valid syntax level for source files */ @@ -175,7 +175,11 @@ jacocoTestReport{ } rat { + xmlOutput = false + htmlOutput = false + plainOutput = true verbose = false + // inputDir = './..' reportDir = new File(buildDir,'reports/rat') excludes = [ '**/licenses/**', @@ -250,6 +254,9 @@ rat { '**/assets/uglify.js', //Ignore out folder '**/out/**', + + // Git build info + "**/git.properties", ] } @@ -457,20 +464,20 @@ sourceSets.test.output.resourcesDir = sourceSets.test.java.outputDir /* Exclude maria db and embedded tomcat related files for non dev builds */ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { -sourceSets { - main { - java { - exclude '**/Server*' - exclude '**/MariaDB4j*' - exclude '**/EmbeddedTomcatWithSSLConfiguration.java' + sourceSets { + main { + java { + exclude '**/Server*' + exclude '**/MariaDB4j*' + exclude '**/EmbeddedTomcatWithSSLConfiguration.java' + } + } + test { + java { + exclude '**/core/boot/tests/**' + } } } - test { - java { - exclude '**/core/boot/tests/**' - } - } -} } sourceSets { @@ -575,14 +582,11 @@ tasks.withType(SpotBugsTask) { } gitProperties { - gitPropertiesResourceDir = "${project.rootDir}/src/main/resources" + gitPropertiesResourceDir = "$buildDir/classes/java/main/resources" dateFormat = "yyyy-MM-dd'T'HH:mmZ" dateFormatTimeZone = "GMT" + failOnNoGitDirectory = false } +// make sure the generateGitProperties task always executes (even when git.properties is not changed) generateGitProperties.outputs.upToDateWhen { false } - -clean { - delete "${project.rootDir}/src/main/resources/git.properties" -} - diff --git a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ActuatorIntegrationTest.java b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ActuatorIntegrationTest.java new file mode 100644 index 00000000000..48219f87309 --- /dev/null +++ b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/ActuatorIntegrationTest.java @@ -0,0 +1,47 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.fineract.integrationtests; + +import static org.junit.Assert.assertTrue; + +import io.restassured.RestAssured; +import io.restassured.http.ContentType; +import io.restassured.response.Response; +import java.util.Map; +import org.junit.Test; + +public class ActuatorIntegrationTest { + + private final static String INFO_URL = "/fineract-provider/actuator/info"; + + @Test + public void testActuatorGitBuildInfo() { + Response response = RestAssured.given() + .headers("Content-Type", ContentType.JSON, "Accept", ContentType.JSON).when() + .get(INFO_URL).then().contentType(ContentType.JSON).extract().response(); + + Map gitBuildInfo = response.jsonPath().getMap("git"); + + assertTrue(gitBuildInfo.containsKey("branch")); + assertTrue(gitBuildInfo.containsKey("remote")); + + } + +}