mirror of
https://github.com/corda/corda.git
synced 2024-12-24 07:06:44 +00:00
595d41af04
* Able to send hand coded messages to an Artemis node inbox Get startup race condition fixed. Start cleanup work. Fixup after rebase Remove SASL hack for now Minor tweaks. Enable AMQP mode manually. Add configuration control Slight clean up Stop timeouts that don't work with AMQP Rename class Get TLS constants from :node-api Primitive integration test Put back commented line Session per bridge to alow rollback on remote rejects. Add more tests and handle multiple IP adddresses Reduce logging Fixup after rebase Add a test to verify the remote end AMQP rejection logic works and does cause message replay. Allow Artemis to duplicate after session rollback Reduce number of threads Move legacy bridge related code over to CoreBridgeManager Shared threadpool for bridges Add a test to confirm that no side effects when using a shared thread pool. Address PR comments and remove dead lines Rebase and add some comments Remove a couple of blank lines Ensure AMQP bridges are used in tests Fixup after removal of testNodeConfiguration Add a couple of doc comments Add a couple of doc comments Make things internal and use CordaFuture Address some PR comments Change comment type * Use Artemis 2.2 to fix AMQP problems. Add explicit test of legacy core bridges, as marking the factory class private had silently broken them. * Fix change due to using Artemis 2.2
332 lines
12 KiB
Groovy
332 lines
12 KiB
Groovy
buildscript {
|
|
// For sharing constants between builds
|
|
Properties constants = new Properties()
|
|
file("$projectDir/constants.properties").withInputStream { constants.load(it) }
|
|
|
|
// Our version: bump this on release.
|
|
ext.corda_release_version = "3.0-SNAPSHOT"
|
|
// Increment this on any release that changes public APIs anywhere in the Corda platform
|
|
ext.corda_platform_version = constants.getProperty("platformVersion")
|
|
ext.gradle_plugins_version = constants.getProperty("gradlePluginsVersion")
|
|
|
|
// Dependency versions. Can run 'gradle dependencyUpdates' to find new versions of things.
|
|
//
|
|
// TODO: Sort this alphabetically.
|
|
ext.kotlin_version = constants.getProperty("kotlinVersion")
|
|
ext.quasar_version = '0.7.9'
|
|
|
|
// gradle-capsule-plugin:1.0.2 contains capsule:1.0.1
|
|
// TODO: Upgrade gradle-capsule-plugin to a version with capsule:1.0.3
|
|
ext.capsule_version = '1.0.1'
|
|
|
|
ext.asm_version = '0.5.3'
|
|
|
|
/*
|
|
* TODO Upgrade to version 2.4 for large message streaming support
|
|
*
|
|
* Due to a memory leak in the connection handling code in Artemis, we are
|
|
* temporarily downgrading to version 2.2.0.
|
|
*
|
|
* The memory leak essentially triggers an out-of-memory exception within
|
|
* less than 10 seconds and can take down a node if a non-TLS connection is
|
|
* attempted against the P2P port.
|
|
*
|
|
* The issue has been reported to upstream:
|
|
* https://issues.apache.org/jira/browse/ARTEMIS-1559
|
|
*/
|
|
ext.artemis_version = '2.2.0'
|
|
ext.jackson_version = '2.9.2'
|
|
ext.jetty_version = '9.4.7.v20170914'
|
|
ext.jersey_version = '2.25'
|
|
ext.jolokia_version = '1.3.7'
|
|
ext.assertj_version = '3.8.0'
|
|
ext.slf4j_version = '1.7.25'
|
|
ext.log4j_version = '2.9.1'
|
|
ext.bouncycastle_version = constants.getProperty("bouncycastleVersion")
|
|
ext.guava_version = constants.getProperty("guavaVersion")
|
|
ext.okhttp_version = '3.5.0'
|
|
ext.netty_version = '4.1.9.Final'
|
|
ext.typesafe_config_version = constants.getProperty("typesafeConfigVersion")
|
|
ext.fileupload_version = '1.3.3'
|
|
ext.junit_version = '4.12'
|
|
ext.mockito_version = '2.10.0'
|
|
ext.jopt_simple_version = '5.0.2'
|
|
ext.jansi_version = '1.14'
|
|
ext.hibernate_version = '5.2.6.Final'
|
|
ext.h2_version = '1.4.194' // Update docs if renamed or removed.
|
|
ext.postgresql_version = '42.1.4'
|
|
ext.rxjava_version = '1.2.4'
|
|
ext.dokka_version = '0.9.14'
|
|
ext.eddsa_version = '0.2.0'
|
|
ext.dependency_checker_version = '3.0.1'
|
|
ext.commons_collections_version = '4.1'
|
|
ext.beanutils_version = '1.9.3'
|
|
ext.crash_version = 'cce5a00f114343c1145c1d7756e1dd6df3ea984e'
|
|
ext.jsr305_version = constants.getProperty("jsr305Version")
|
|
ext.shiro_version = '1.4.0'
|
|
ext.artifactory_plugin_version = constants.getProperty('artifactoryPluginVersion')
|
|
|
|
// Update 121 is required for ObjectInputFilter and at time of writing 131 was latest:
|
|
ext.java8_minUpdateVersion = '131'
|
|
|
|
repositories {
|
|
mavenLocal()
|
|
mavenCentral()
|
|
jcenter()
|
|
}
|
|
dependencies {
|
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
|
|
classpath "net.corda.plugins:publish-utils:$gradle_plugins_version"
|
|
classpath "net.corda.plugins:quasar-utils:$gradle_plugins_version"
|
|
classpath "net.corda.plugins:cordformation:$gradle_plugins_version"
|
|
classpath "net.corda.plugins:cordapp:$gradle_plugins_version"
|
|
classpath "net.corda.plugins:api-scanner:$gradle_plugins_version"
|
|
classpath 'com.github.ben-manes:gradle-versions-plugin:0.15.0'
|
|
classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlin_version"
|
|
classpath "org.jetbrains.dokka:dokka-gradle-plugin:${dokka_version}"
|
|
classpath "org.ajoberstar:grgit:1.1.0"
|
|
classpath "net.i2p.crypto:eddsa:$eddsa_version" // Needed for ServiceIdentityGenerator in the build environment.
|
|
classpath "org.owasp:dependency-check-gradle:${dependency_checker_version}"
|
|
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:$artifactory_plugin_version"
|
|
}
|
|
}
|
|
|
|
plugins {
|
|
// TODO The capsule plugin requires the newer DSL plugin block.It would be nice if we could unify all the plugins into one style,
|
|
// but the DSL has some restrictions e.g can't be used on the allprojects section. So we should revisit this if there are improvements in Gradle.
|
|
// Version 1.0.2 of this plugin uses capsule:1.0.1
|
|
id "us.kirchmeier.capsule" version "1.0.2"
|
|
}
|
|
|
|
ext {
|
|
corda_revision = org.ajoberstar.grgit.Grgit.open(file('.')).head().id
|
|
}
|
|
|
|
apply plugin: 'project-report'
|
|
apply plugin: 'com.github.ben-manes.versions'
|
|
apply plugin: 'net.corda.plugins.publish-utils'
|
|
apply plugin: 'net.corda.plugins.cordformation'
|
|
apply plugin: 'maven-publish'
|
|
apply plugin: 'com.jfrog.artifactory'
|
|
|
|
// We need the following three lines even though they're inside an allprojects {} block below because otherwise
|
|
// IntelliJ gets confused when importing the project and ends up erasing and recreating the .idea directory, along
|
|
// with the run configurations. It also doesn't realise that the project is a Java 8 project and misconfigures
|
|
// the resulting import. This fixes it.
|
|
apply plugin: 'java'
|
|
sourceCompatibility = 1.8
|
|
targetCompatibility = 1.8
|
|
|
|
|
|
allprojects {
|
|
apply plugin: 'kotlin'
|
|
apply plugin: 'java'
|
|
apply plugin: 'jacoco'
|
|
apply plugin: 'org.owasp.dependencycheck'
|
|
|
|
dependencyCheck {
|
|
suppressionFile = '.ci/dependency-checker/suppressedLibraries.xml'
|
|
cveValidForHours = 1
|
|
format = 'ALL'
|
|
}
|
|
sourceCompatibility = 1.8
|
|
targetCompatibility = 1.8
|
|
|
|
tasks.withType(JavaCompile) {
|
|
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" << "-Xlint:-options" << "-parameters"
|
|
}
|
|
|
|
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
|
|
kotlinOptions {
|
|
languageVersion = "1.1"
|
|
apiVersion = "1.1"
|
|
jvmTarget = "1.8"
|
|
javaParameters = true // Useful for reflection.
|
|
}
|
|
}
|
|
|
|
tasks.withType(Jar) { task ->
|
|
// Includes War and Ear
|
|
manifest {
|
|
attributes('Corda-Release-Version': corda_release_version)
|
|
attributes('Corda-Platform-Version': corda_platform_version)
|
|
attributes('Corda-Revision': corda_revision)
|
|
attributes('Corda-Vendor': 'Corda Open Source')
|
|
attributes('Automatic-Module-Name': "net.corda.${task.project.name.replaceAll('-', '.')}")
|
|
}
|
|
}
|
|
|
|
tasks.withType(Test) {
|
|
// Prevent the project from creating temporary files outside of the build directory.
|
|
systemProperties['java.io.tmpdir'] = buildDir
|
|
}
|
|
|
|
group 'net.corda'
|
|
version "$corda_release_version"
|
|
|
|
repositories {
|
|
mavenLocal()
|
|
mavenCentral()
|
|
jcenter()
|
|
maven { url 'https://jitpack.io' }
|
|
}
|
|
|
|
configurations {
|
|
compile {
|
|
// We want to use SLF4J's version of these bindings: jcl-over-slf4j
|
|
// Remove any transitive dependency on Apache's version.
|
|
exclude group: 'commons-logging', module: 'commons-logging'
|
|
}
|
|
runtime {
|
|
// We never want isolated.jar on classPath, since we want to test jar being dynamically loaded as an attachment
|
|
exclude module: 'isolated'
|
|
}
|
|
}
|
|
}
|
|
|
|
// Check that we are running on a Java 8 JDK. The source/targetCompatibility values above aren't sufficient to
|
|
// guarantee this because those are properties checked by the Java plugin, but we're using Kotlin.
|
|
//
|
|
// We recommend a specific minor version (unfortunately, not checkable directly) because JavaFX adds APIs in
|
|
// minor releases, so we can't work with just any Java 8, it has to be a recent one.
|
|
if (!JavaVersion.current().java8Compatible)
|
|
throw new GradleException("Corda requires Java 8, please upgrade to at least 1.8.0_$java8_minUpdateVersion")
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
jcenter()
|
|
}
|
|
|
|
// Required for building out the fat JAR.
|
|
dependencies {
|
|
compile project(':node')
|
|
compile "com.google.guava:guava:$guava_version"
|
|
|
|
// Set to corda compile to ensure it exists now deploy nodes no longer relies on build
|
|
compile project(path: ":node:capsule", configuration: 'runtimeArtifacts')
|
|
compile project(path: ":webserver:webcapsule", configuration: 'runtimeArtifacts')
|
|
|
|
// For the buildCordappDependenciesJar task
|
|
runtime project(':client:jfx')
|
|
runtime project(':client:mock')
|
|
runtime project(':client:rpc')
|
|
runtime project(':core')
|
|
runtime project(':confidential-identities')
|
|
runtime project(':finance')
|
|
runtime project(':webserver')
|
|
testCompile project(':test-utils')
|
|
}
|
|
|
|
jar {
|
|
// Prevent the root project from building an unwanted dummy CorDapp.
|
|
enabled = false
|
|
}
|
|
|
|
task jacocoRootReport(type: org.gradle.testing.jacoco.tasks.JacocoReport) {
|
|
dependsOn = subprojects.test
|
|
additionalSourceDirs = files(subprojects.sourceSets.main.allSource.srcDirs)
|
|
sourceDirectories = files(subprojects.sourceSets.main.allSource.srcDirs)
|
|
classDirectories = files(subprojects.sourceSets.main.output)
|
|
executionData = files(subprojects.jacocoTestReport.executionData)
|
|
reports {
|
|
html.enabled = true
|
|
xml.enabled = true
|
|
csv.enabled = false
|
|
}
|
|
onlyIf = {
|
|
true
|
|
}
|
|
doFirst {
|
|
executionData = files(executionData.findAll {
|
|
it.exists()
|
|
})
|
|
}
|
|
}
|
|
|
|
tasks.withType(Test) {
|
|
reports.html.destination = file("${reporting.baseDir}/${name}")
|
|
}
|
|
|
|
task deployNodes(type: net.corda.plugins.Cordform, dependsOn: ['jar']) {
|
|
directory "./build/nodes"
|
|
node {
|
|
name "O=Controller,OU=corda,L=London,C=GB"
|
|
notary = [validating : true]
|
|
p2pPort 10002
|
|
cordapps = []
|
|
}
|
|
node {
|
|
name "O=Bank A,OU=corda,L=London,C=GB"
|
|
p2pPort 10012
|
|
rpcPort 10013
|
|
webPort 10014
|
|
cordapps = []
|
|
}
|
|
node {
|
|
name "O=Bank B,OU=corda,L=London,C=GB"
|
|
p2pAddress "localhost:10007"
|
|
rpcAddress "localhost:10008"
|
|
webAddress "localhost:10009"
|
|
cordapps = []
|
|
}
|
|
}
|
|
|
|
bintrayConfig {
|
|
user = System.getenv('CORDA_BINTRAY_USER')
|
|
key = System.getenv('CORDA_BINTRAY_KEY')
|
|
repo = 'corda'
|
|
org = 'r3'
|
|
licenses = ['Apache-2.0']
|
|
vcsUrl = 'https://github.com/corda/corda'
|
|
projectUrl = 'https://github.com/corda/corda'
|
|
gpgSign = true
|
|
gpgPassphrase = System.getenv('CORDA_BINTRAY_GPG_PASSPHRASE')
|
|
publications = ['corda-jfx', 'corda-mock', 'corda-rpc', 'corda-core', 'corda', 'corda-finance', 'corda-node', 'corda-node-api', 'corda-test-common', 'corda-test-utils', 'corda-jackson', 'corda-verifier', 'corda-webserver-impl', 'corda-webserver', 'corda-node-driver', 'corda-confidential-identities']
|
|
license {
|
|
name = 'Apache-2.0'
|
|
url = 'https://www.apache.org/licenses/LICENSE-2.0'
|
|
distribution = 'repo'
|
|
}
|
|
developer {
|
|
id = 'R3'
|
|
name = 'R3'
|
|
email = 'dev@corda.net'
|
|
}
|
|
}
|
|
|
|
// Build a ZIP of all JARs required to compile the Cordapp template
|
|
// Note: corda.jar is used at runtime so no runtime ZIP is necessary.
|
|
// Resulting ZIP can be found in "build/distributions"
|
|
task buildCordappDependenciesZip(type: Zip) {
|
|
baseName 'corda-deps'
|
|
from configurations.runtime
|
|
from configurations.compile
|
|
from configurations.testCompile
|
|
from buildscript.configurations.classpath
|
|
from 'node/capsule/NOTICE' // CDDL notice
|
|
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
|
}
|
|
|
|
artifactory {
|
|
publish {
|
|
contextUrl = 'https://ci-artifactory.corda.r3cev.com/artifactory'
|
|
repository {
|
|
repoKey = 'corda-dev'
|
|
username = 'teamcity'
|
|
password = System.getenv('CORDA_ARTIFACTORY_PASSWORD')
|
|
}
|
|
|
|
defaults {
|
|
// Root project applies the plugin (for this block) but does not need to be published
|
|
if(project != rootProject) {
|
|
publications(project.extensions.publish.name())
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
task generateApi(type: net.corda.plugins.GenerateApi){
|
|
baseName = "api-corda"
|
|
}
|