plugins { id 'application' id 'java' id 'war' id 'com.netflix.nebula.ospackage' version '11.4.0' id 'org.springframework.boot' version '3.0.6' id 'io.spring.dependency-management' version '1.1.0' id 'checkstyle' } // Get version from main project gradle def packVersion = properties.get("packageVersion"); def jarVersion = properties.get("jarVersion"); //println "packageVersion is ${projVersion}" java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } configurations { compileOnly { extendsFrom annotationProcessor } all*.exclude module: 'spring-boot-starter-logging' } repositories { flatDir { dirs "lib" } mavenCentral() } dependencies { implementation project(':HIRS_Utils') implementation project(':HIRS_AttestationCA') implementation libs.pci implementation libs.gson implementation libs.bouncycastle implementation libs.guava implementation libs.jakarta.servlet implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-log4j2' implementation 'org.apache.logging.log4j:log4j-spring-boot' implementation 'org.projectlombok:lombok' implementation 'commons-fileupload:commons-fileupload:1.5' implementation 'org.apache.tomcat.embed:tomcat-embed-jasper:10.1.5' compileOnly 'org.projectlombok:lombok' implementation 'org.mariadb.jdbc:mariadb-java-client:3.1.4' annotationProcessor 'org.projectlombok:lombok' providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.junit.jupiter:junit-jupiter:5.9.3' testImplementation 'org.hsqldb:hsqldb' } checkstyle { toolVersion = '10.12.7' configFile file("${rootDir}/config/checkstyle/checkstyle.xml") } // https://github.com/checkstyle/checkstyle/issues/14211#issuecomment-1884129948 configurations.checkstyle { resolutionStrategy.capabilitiesResolution.withCapability("com.google.collections:google-collections") { select("com.google.guava:guava:0") } } checkstyleMain { source ='src/main/java' } checkstyleTest { source ='src/test/java' } tasks.withType(Checkstyle) { reports { xml.required = false html.required = true } } test { useJUnitPlatform() } ospackage { packageName = 'HIRS_AttestationCA' os = LINUX arch = NOARCH version = "$packVersion" release = '1' user 'root' fileMode = 0755 addParentDirs = true createDirectoryEntry true // copy json tables into ('/etc/hirs/aca/default-properties') { from '../HIRS_AttestationCA/src/main/resources/component-class.json' from '../HIRS_AttestationCA/src/main/resources/vendor-table.json' } // copy springboot property file into ('/etc/hirs/aca/') { from '../HIRS_AttestationCAPortal/src/main/resources/application.properties' } // copy setup scripts to /opt/hirs/aca into ('/opt/hirs/aca/scripts/') { from '../package/scripts/' } // copy the war file into /opt/hirs/aca into ('/opt/hirs/aca/') { from '../HIRS_AttestationCAPortal/build/libs/HIRS_AttestationCAPortal.war' user 'root' fileMode = 0755 } // Post Install postInstall 'bash /opt/hirs/aca/scripts/aca/aca_setup.sh -u' // add chrontab to run ACA at boot postInstall 'echo "@reboot root /opt/hirs/aca/scripts/aca/aca_bootRun.sh -w" >> /etc/crontab' // run ACA after install postInstall '/opt/hirs/aca/scripts/aca/aca_bootRun.sh -w &' postInstall 'chmod +x /opt/hirs/aca/scripts/aca/*' postInstall 'bash /opt/hirs/aca/scripts/aca/check_for_aca.sh' postInstall 'mkdir -p /etc/hirs/aca && touch /etc/hirs/aca/VERSION' postInstall "echo ${jarVersion} > /etc/hirs/aca/VERSION" // Uninstall preUninstall 'bash /opt/hirs/aca/scripts/aca/aca_remove_setup.sh' postUninstall 'rm -rf /etc/hirs' buildRpm { arch = X86_64 } buildDeb { packageName = 'hirs-attestationca' arch = 'amd64' } }