Newer
Older
Adam Laskowski
committed
apply from: '../build/repository.gradle'
Adam Laskowski
committed
repositories repositoryConfig
dependencies {
classpath 'apache:commons-codec:1.10',
Adam Laskowski
committed
'owasp:dependency-check-gradle:6.2.2',
'paleozogt:symzip-plugin:0.10.1'
Adam Laskowski
committed
id "com.github.node-gradle.node" version "3.2.1"
apply plugin: org.owasp.dependencycheck.gradle.DependencyCheckPlugin
apply plugin: "org.paleozogt.symzip"
Adam Laskowski
committed
failBuildOnCVSS = 7 // 0 - 4 = low, 4 - 7 = medium, 7 - 9 = high, 9-10 = critical
suppressionFile = "owasp_suppressing_false_positives.xml"
analyzers {
assemblyEnabled = false
}
proxy {
server = 'proxy.ethz.ch'
port = 3128
}
evaluationDependsOn(':commonbase')
evaluationDependsOn(':common')
evaluationDependsOn(':openbis_api')
evaluationDependsOn(':openbis-common')
evaluationDependsOn(':authentication')
evaluationDependsOn(':dbmigration')
evaluationDependsOn(':server-application-server')
evaluationDependsOn(':server-original-data-store')
evaluationDependsOn(':screening')
evaluationDependsOn(':big_data_link_server')

yvesn
committed
evaluationDependsOn(':openbis_ng_ui')
Adam Laskowski
committed
apply from: '../build/javaproject.gradle'
apply from: 'query-api.gradle'
apply from: 'screening-api.gradle'
apply from: 'clients.gradle'
apply from: 'admin-console.gradle'
apply plugin: 'war'
anttil
committed
archivesBaseName = 'openBIS-server-standard-technologies'
configurations.create('gwt')
configurations.create('zipping')
configurations.create('datastore_server')
configurations.create('javadoc_sources')
configurations.create('javadoc_compilation')
anttil
committed
def jettyDistributionVersion = '9.4.44.v20210927'
dependencies {
Adam Laskowski
committed
api project(':screening')
providedCompile 'google:gwt-user:2.4'
providedRuntime "eclipse:jetty-deploy:${jettyVersion}.v20210927@jar",
"eclipse:jetty-xml:${jettyVersion}.v20210927@jar",
"eclipse:jetty-webapp:${jettyVersion}.v20210927@jar",
"eclipse:jetty-servlet:${jettyVersion}.v20210927@jar",
"eclipse:jetty-security:${jettyVersion}.v20210927@jar",
"eclipse:jetty-server:${jettyVersion}.v20210927@jar",
"eclipse:jetty-continuation:${jettyVersion}.v20210927@jar"
gwt 'reveregroup:gwt-image-loader:1.1.4',
'google:gwt-dev:2.4'
zipping "eclipse:jetty-distribution:${jettyVersion}@zip"
datastore_server project(':screening'),
'bioformats:bioformats:6.5.1',
'imagej:ij:1.43u',
'cisd:cisd-openbis-knime-server:13.6.0.r29301',
'apache:xml-apis:1.3.03',
'slf4j:slf4j:1.6.2',
'slf4j:slf4j-log4j12:1.6.2',
'sybit:image-viewer:0.3.6'
javadoc_sources project(path: ':commonbase', configuration: 'archives'),
project(path: ':common', configuration: 'archives'),
project(path: ':openbis_api', configuration: 'archives'),
project(path: ':openbis-common', configuration: 'archives'),
project(path: ':server-application-server', configuration: 'archives'),
project(path: ':server-original-data-store', configuration: 'archives'),
Adam Laskowski
committed
project(path: ':screening', configuration: 'archives'),
'sis:sis-base:18.09.0:sources',
'cisd:cisd-args4j:9.11.2:sources',
'cisd:cisd-hotdeploy:13.01.0:sources'
javadoc_compilation project(path: ':screening')
testImplementation project(path: ':commonbase', configuration: 'tests'),
Adam Laskowski
committed
project(path: ':common', configuration: 'tests'),
project(path: ':dbmigration', configuration: 'tests'),
project(path: ':authentication', configuration: 'tests'),
project(path: ':openbis_api', configuration: 'tests'),
project(path: ':openbis-common', configuration: 'tests'),
project(path: ':server-original-data-store', configuration: 'tests'),
Adam Laskowski
committed
'fjelmer:classycle:1.4.2',
'testng:testng:6.8-CISD',
'springframework:spring-test:5.0.17.RELEASE'
testImplementation(project(path: ':server-application-server', configuration: 'tests')) {
exclude group: 'google', module: 'gwt-user'
sourceSets {
Adam Laskowski
committed
test {
resources {
srcDirs = ['source/java', 'sourceTest/java']
}
}
}
def gwtBuildDir = "${project.buildDir}/gwt"
def gwtCacheBuildDir = "${project.buildDir}/gwt-unitCache"
def gwtModuleName = 'ch.systemsx.cisd.openbis.OpenBIS'
def gwtModuleBuildDir = "${gwtBuildDir}/${gwtModuleName}"
def gwtArchivePath = 'resource'
def gwtArchiveFileName = 'gwt.tar.gz'
Adam Laskowski
committed
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
task compileGwt(dependsOn: classes, type: JavaExec) {
ext.buildDir = gwtBuildDir
def extraDir = "${project.buildDir}/extra"
// inputs.source
sourceSets.main.java.srcDirs
// inputs.dir
sourceSets.main.output.resourcesDir
outputs.dir buildDir
doFirst {
file(buildDir).mkdirs()
}
main = 'com.google.gwt.dev.Compiler'
classpath {
[
sourceSets.main.java.srcDirs,
project(":openbis").sourceSets.main.java.srcDirs,
project(":openbis").sourceSets.main.output.resourcesDir,
project(":openbis").sourceSets.main.output.classesDirs,
project(":openbis").sourceSets.main.compileClasspath,
project(":common").sourceSets.main.java.srcDirs,
project(":openbis_api").sourceSets.main.java.srcDirs,
project(":screening").sourceSets.main.java.srcDirs,
project(":screening").sourceSets.main.output.resourcesDir,
configurations.gwt
]
}
args =
[
gwtModuleName,
'-war', buildDir,
'-logLevel', 'INFO',
'-localWorkers', '2',
'-compileReport',
'-extra', extraDir,
]
maxHeapSize = '1024m'
systemProperty "javax.xml.parsers.SAXParserFactory", "org.apache.xerces.jaxp.SAXParserFactoryImpl"
}
anttil
committed
task buildCoreUIPackageUsingJDK8(type: Tar, dependsOn: compileGwt) {
Adam Laskowski
committed
from gwtBuildDir
destinationDirectory = file(gwtArchivePath)
archiveFileName = gwtArchiveFileName
compression = Compression.GZIP
doLast { // Cleanup, the rest of the build should not use these
delete gwtBuildDir
delete gwtCacheBuildDir
}
}
task untarGwt(type: Copy) {
Adam Laskowski
committed
from tarTree(resources.gzip("${gwtArchivePath}/${gwtArchiveFileName}"))
into gwtBuildDir
}
piotr.kupczyk@id.ethz.ch
committed
node {
Adam Laskowski
committed
download = true
version = '18.12.1'
workDir = file("${projectDir}/node/nodejs")
nodeModulesDir = file("${projectDir}")
piotr.kupczyk@id.ethz.ch
committed
}
task bundleOpenbisStaticResources(type: Exec) {
Adam Laskowski
committed
dependsOn 'untarGwt'
dependsOn 'npmInstall'
commandLine 'bash', '-c', "${projectDir}/resource/js/v3/build.sh"
piotr.kupczyk@id.ethz.ch
committed
}
task copyOpenbisStaticResources(type: Copy) {
Adam Laskowski
committed
dependsOn 'bundleOpenbisStaticResources'
from "${project(':server-application-server').projectDir}/source/java/ch/systemsx/cisd/openbis/public"
Adam Laskowski
committed
into gwtModuleBuildDir
}
anttil
committed
ext.classpathEntries = files(
project(':server-application-server').file('source/java/applicationContext.xml'),
project(':server-application-server').file('source/java/dbConfigurationContext.xml'),
project(':server-application-server').file('source/java/ehcache.xml'),
project(':server-application-server').file('source/java/genericApplicationContext.xml'),
project(':server-application-server').file('source/java/hibernateContext.xml'),
project(':server-application-server').file('source/java/schema-for-xslt20.xsd'),
project(':server-application-server').file('source/java/XMLSchema.xsd'),
Adam Laskowski
committed
project(':screening').file('source/java/screening-applicationContext.xml'),
project(':screening').file('source/java/screening-dssApplicationContext.xml'),
project(':screening').file('source/java/screening-plugin-applicationContext.xml'),
project(':common').file('source/java/genericCommonContext.xml'),
'source/java/standard-technologies-applicationContext.xml'
anttil
committed
)
ext.zipEntries = files(
project(':server-application-server').file('dist/server/autosymlink.sh'),
project(':server-application-server').file('dist/server/check.sh'),
project(':server-application-server').file('dist/server/configure.sh'),
project(':server-application-server').file('dist/server/export-master-data.py'),
project(':server-application-server').file('dist/server/export-master-data.sh'),
project(':server-application-server').file('dist/server/install.sh'),
project(':server-application-server').file('dist/server/openBIS.keystore'),
project(':server-application-server').file('dist/server/openbis.conf'),
project(':server-application-server').file('dist/server/passwd.sh'),
project(':server-application-server').file('dist/server/register-master-data.sh'),
project(':server-application-server').file('dist/server/setup-env'),
project(':server-application-server').file('dist/server/shutdown.sh'),
project(':server-application-server').file('dist/server/startup.sh'),
project(':server-application-server').file('dist/server/status.sh'),
project(':server-application-server').file('dist/server/version.sh'),
project(':server-application-server').file('dist/server/watchdog.sh'),
project(':server-application-server').fileTree(dir: 'dist/server').matching {
Adam Laskowski
committed
include 'base/**'
},
file('dist/server/service.properties'),
file('dist/server/web-client.properties')
)
task checkFilesExist {
Adam Laskowski
committed
inputs.files files(classpathEntries, zipEntries)
doLast {
classpathEntries.each {
x -> assert x.exists()
}
zipEntries.each {
x -> assert x.exists()
}
anttil
committed
}
war.dependsOn untarGwt
war.dependsOn copyOpenbisStaticResources
war.dependsOn checkFilesExist
war {
rootSpec.eachFile { file ->
|| file.name.startsWith('datastore_server')
|| file.name.startsWith('bioformats')
|| file.name.startsWith('cisd-image-readers')
Adam Laskowski
committed
) {
file.exclude()
}
}
from "${project.buildDir}/gwt/ch.systemsx.cisd.openbis.OpenBIS"
from signedJarsFolder
anttil
committed
webXml = file('resource/server/web.xml')
webInf {
from "${project.buildDir}/gwt/WEB-INF",
project(':server-application-server').file('resource/server/bis-common.xml'),
Adam Laskowski
committed
file('resource/server/spring-servlet.xml'),
file('resource/server/jetty-web.xml'),
project(':common').file('resource/server/web-common.xml')
Adam Laskowski
committed
from(classpathEntries) {
anttil
committed
}
Adam Laskowski
committed
from('dist/server') {
into("WEB-INF/classes")
include "etc/log.xml"
}
Adam Laskowski
committed
from('targets/dist') {
into("WEB-INF/classes")
include 'BUILD*INFO'
rename 'BUILD.*INFO', 'BUILD-openbis.INFO'
anttil
committed
Adam Laskowski
committed
from('../screening/source') {
into("WEB-INF/classes")
include "sql/**/*.sql"
exclude "sql/imaging/postgresql/_ERD"
}
anttil
committed
from('../server-application-server/source') {
into("WEB-INF/classes")
include "sql/**/*.sql"
exclude "sql/generic/_ERD"
}
felmer
committed
def downloadCorePlugin(url, pluginname) {
Adam Laskowski
committed
if (!project.getGradle().startParameter.isOffline()) {
def file = project(':server-application-server').file("../openbis_standard_technologies/targets/downloads/${pluginname}.zip")
Adam Laskowski
committed
if (file.exists() == false || System.currentTimeMillis() - file.lastModified() > 3600000) {
file.getParentFile().mkdirs()
ext.executeFunction('curl', [url, '-sLk', '-o', file.getAbsolutePath()])
ext.executeFunction('unzip', ['-uqo', file.getAbsolutePath(), '-d', '../openbis_standard_technologies/targets/downloads/'])
}
}
import org.paleozogt.gradle.zip.SymZip;
task zipCorePlugins(type: SymZip) {
Adam Laskowski
committed
duplicatesStrategy 'include'
includeEmptyDirs = false
archiveName 'core-plugins.zip'
downloadCorePlugin('https://github.com/aarpon/obit_flow_core_technology/archive/release/20.x.zip', 'flow')
downloadCorePlugin('https://github.com/aarpon/obit_microscopy_core_technology/archive/release/20.x.zip', 'microscopy')
downloadCorePlugin('https://github.com/aarpon/obit_shared_core_technology/archive/release/20.x.zip', 'shared')
from project(':screening').fileTree(dir: 'source/core-plugins', includes: ['screening/**', 'screening-optional/**'], excludes: ['**/package-to-dist'])
from fileTree(dir: 'targets/downloads/obit_flow_core_technology-release-20.x/core-plugins', includes: ['flow/**'])
from fileTree(dir: 'targets/downloads/obit_microscopy_core_technology-release-20.x/core-plugins', includes: ['microscopy/**'])
from fileTree(dir: 'targets/downloads/obit_shared_core_technology-release-20.x/core-plugins', includes: ['shared/**'])
from 'dist/core-plugins'
from 'dist/server/core-plugins.properties'
into 'core-plugins'
def generateMD5(final file) {
Adam Laskowski
committed
java.security.MessageDigest digest = java.security.MessageDigest.getInstance("MD5")
file.withInputStream() { is ->
byte[] buffer = new byte[8192]
int read = 0
while ((read = is.read(buffer)) > 0) {
digest.update(buffer, 0, read);
}
}
byte[] md5sum = digest.digest()
BigInteger bigInt = new BigInteger(1, md5sum)
return bigInt.toString(16)
}
task checksums {
Adam Laskowski
committed
ext.destFile = new File(buildDir, 'configuration.MD5')
ext.inputFiles = war.getSource().filter({ file -> file.name.endsWith('xml') || file.name.endsWith('.conf') || file.name.endsWith('.properties') })
inputs.files inputFiles
outputs.file destFile
Adam Laskowski
committed
doLast {
if (destFile.exists()) {
destFile.delete()
}
destFile.createNewFile()
def configFiles = classpathEntries.filter({ file -> file.name.endsWith('xml') || file.name.endsWith('.conf') || file.name.endsWith('.properties') })
configFiles.each { file ->
destFile.text += generateMD5(file) + " webapps/openbis/WEB-INF/classes/" + file.name + "\n"
}
configFiles = war.getSource().filter({ file -> file.name.endsWith('xml') || file.name.endsWith('.conf') || file.name.endsWith('.properties') }).minus(classpathEntries)
configFiles.each { file ->
destFile.text += generateMD5(file) + " webapps/openbis/WEB-INF/" + file.name + "\n"
}
}
}
checksums.dependsOn war
task createJettyVersionFile {
ext.versionFile = new File(buildDir, 'jetty-version.txt')
outputs.file versionFile
doLast {
versionFile.text = "${jettyDistributionVersion}"
}
}
task zip(type: Zip, dependsOn: createJettyVersionFile) {
from createJettyVersionFile
Adam Laskowski
committed
from zipEntries
from checksums
from configurations.zipping
anttil
committed
from zipCorePlugins.archivePath
Adam Laskowski
committed
from zipAdminConsole.archivePath
rename 'jetty-distribution(.*).zip', 'jetty.zip'
rename 'openBIS(.*).war', 'openBIS.war'
}
zip.dependsOn war
zip.dependsOn zipCorePlugins
anttil
committed
zip.dependsOn zipAdminConsole
zip.dependsOn checksums
task zipDss(type: Zip, dependsOn: copyJarsForWebStart) {
Adam Laskowski
committed
baseName 'datastore_server-standard-technologies'
includeEmptyDirs true
from(configurations.datastore_server) {
into 'datastore_server/lib'
exclude '**/antlr*.jar'
exclude '**/fastutil*.jar'
exclude '**/gwt*.jar'
exclude '**/gxt*.jar'
exclude '**/hibernate*.jar'
exclude '**/jmock*.jar'
exclude '**/junit*.jar'
exclude '**/lucene*.jar'
exclude '**/restrictions*.jar'
exclude '**/testng*.jar'
rename 'common-.*jar', 'common.jar'
rename 'commonbase-.*jar', 'commonbase.jar'
}
from(signedJarsFolder) {
into 'datastore_server/lib/dss_upload_gui'
exclude openbisClientJarName
exclude dssCliClientJarName
}
from(project(':server-original-data-store').fileTree(dir: 'dist', includes: ['**/*'], excludes: ['dss_client.sh', 'etc/**'])) {
Adam Laskowski
committed
into 'datastore_server';
}
from(project(':server-original-data-store').files('dist/etc/datastore_server.conf', 'dist/etc/openBIS.keystore')) {
Adam Laskowski
committed
into 'datastore_server/etc';
}
from(fileTree(dir: 'dist', includes: ['etc/service.properties', 'etc/log.xml'])) {
into 'datastore_server'
}
from(project(':screening').file('dist/etc/tabular-data-graph.properties')) {
into 'datastore_server/etc';
}
}
task zipBdlServer(type: Zip, dependsOn: project(':big_data_link_server').tasks.distZip) {
Adam Laskowski
committed
baseName 'big_data_link_server'
from zipTree('../big_data_link_server/build/distributions/big_data_link_server.zip')
}
task pybisZip(type: Zip) {
Adam Laskowski
committed
baseName 'pybis'
from '../pybis/'
}
task obisZip(type: Zip) {
Adam Laskowski
committed
baseName 'obis'
from '../obis/'
task clientsAndApis(type: Zip, dependsOn: [dssClientZip, queryApiZip, apiV3Zip, screeningApiZip, pybisZip, obisZip, dropboxJavaDocZip, dynamicApiJavadocZip]) {
Adam Laskowski
committed
baseName 'openBIS-clients-and-APIs'
from dssClientZip.archivePath
from queryApiZip.archivePath
from apiV3Zip.archivePath
from screeningApiZip.archivePath
from pybisZip.archivePath
from obisZip.archivePath
from dropboxJavaDocZip.archivePath
from dynamicApiJavadocZip.archivePath
from('dist/client/readme.txt')
rename { filename ->
if (filename.startsWith('pybis-')) {
def contentOfSetUpFile = zipTree(pybisZip.archivePath).getFiles().findAll { it.path.endsWith('src/python/setup.cfg') }.iterator().next().text
def pybisVersion = (contentOfSetUpFile =~ /version.*=.*(.*)/)[0][1]
'pybis-' + pybisVersion + '.zip'
} else {
filename
}
anttil
committed
}

yvesn
committed
task deleteOpenbisNgUi(type: Delete) {
Adam Laskowski
committed
delete 'dist/core-plugins/openbis-ng-ui'

yvesn
committed
}
task copyOpenbisNgUiToCorePlugins(type: Copy, dependsOn: [deleteOpenbisNgUi, ':openbis_ng_ui:copyWebApp']) {
piotr.kupczyk@id.ethz.ch
committed
from project(':openbis_ng_ui').file('build/core-plugins')
into file('dist/core-plugins')

yvesn
committed
}
zipCorePlugins.dependsOn copyOpenbisNgUiToCorePlugins
task generateJavadoc(type: Javadoc) {
Adam Laskowski
committed
source = configurations.javadoc_sources.collect {
zipTree(it).matching {
include "**/ch/ethz/sis/openbis/generic/asapi/**/*.java"
include "**/ch/ethz/sis/openbis/generic/dssapi/**/*.java"
include "**/ch/systemsx/cisd/**/api/**/*.java"
include "**/ch/systemsx/cisd/common/annotation/*.java"
include "**/ch/systemsx/cisd/base/**/*.java"
include "**/OpenBISScreeningML.java"
include "**/ch/systemsx/cisd/**/etlserver/TopLevelDataSetRegistratorGlobalState.java"
include "**/ch/systemsx/cisd/**/etlserver/registrator/*.java"
include "**/ch/systemsx/cisd/common/mail/*.java"
}
}
classpath = configurations.javadoc_compilation
maxMemory = "1024m"
options.addStringOption("source", "1.8")
build.dependsOn zip
build.dependsOn zipDss
build.dependsOn zipBdlServer
build.dependsOn clientsAndApis
anttil
committed
build.dependsOn dssUploadGuiStandaloneZip
build.dependsOn dssUploadGuiStandaloneJar