diff --git a/docker/spring-cloud-contract-docker/project/build.gradle b/docker/spring-cloud-contract-docker/project/build.gradle index 355529999b..f169b70645 100644 --- a/docker/spring-cloud-contract-docker/project/build.gradle +++ b/docker/spring-cloud-contract-docker/project/build.gradle @@ -27,6 +27,7 @@ Map envVars = [ REPO_WITH_BINARIES_URL: new EnvVar("URL of your Artifact Manager (defaults to the default URL of https://jfrog.com/artifactory/[Artifactory] when running locally)", "http://localhost:8081/artifactory/libs-release-local"), REPO_WITH_BINARIES_USERNAME: new EnvVar("(optional) Username when the Artifact Manager is secured", "admin"), REPO_WITH_BINARIES_PASSWORD: new EnvVar("(optional) Password when the Artifact Manager is secured", "password"), + REPO_ALLOW_INSECURE_PROTOCOL: new EnvVar("(optional) If allows to publish artifacts to Artifact Manager over insecure HTTP", "false"), PUBLISH_ARTIFACTS: new EnvVar("If set to `true`, publishes the artifact to binary storage", "true"), PUBLISH_ARTIFACTS_OFFLINE: new EnvVar("If set to `true`, publishes the artifacts to local m2", "false"), EXTERNAL_CONTRACTS_GROUP_ID: new EnvVar("Group ID of the project with contracts", "com.example"), @@ -41,6 +42,8 @@ Map envVars = [ EXTERNAL_CONTRACTS_WORK_OFFLINE: new EnvVar("If set to `true`, retrieves the artifact with contracts from the container's `.m2`. Mount your local `.m2` as a volume available at the container's `/root/.m2` path", "false"), PUBLISH_STUBS_TO_SCM: new EnvVar("If set to `true` will run the task to publish stubs to scm", false), MESSAGING_TYPE: new EnvVar("Type of messaging. Can be either [rabbit] or [kafka].", ""), + DEBUG: new EnvVar("(Docker Image only) Applicable for Docker Image - turns on debug mode for the Gradle build", "false"), + ADDITIONAL_FLAGS: new EnvVar("(Docker Image only) Additional flags to be passed to the Gradle build", ""), ] group = getProp(envVars, "PROJECT_GROUP") ?: 'com.example' @@ -137,7 +140,7 @@ contracts { baseClassForTests = "contracts.ContractTestsBase" testMode = "EXPLICIT" stubsSuffix = getProp(envVars, "PRODUCER_STUBS_CLASSIFIER") ?: "stubs" - failOnNoContracts = getProp(envVars, "FAIL_ON_NO_CONTRACTS") ?: false + failOnNoContracts = Boolean.parseBoolean(getProp(envVars, "FAIL_ON_NO_CONTRACTS") ?: "false") if (getProp(envVars, "EXTERNAL_CONTRACTS_ARTIFACT_ID")) { logger. lifecycle("Will use an artifact with contracts [${getProp(envVars, "EXTERNAL_CONTRACTS_GROUP_ID")}:${getProp(envVars, "EXTERNAL_CONTRACTS_ARTIFACT_ID")}]") @@ -160,7 +163,7 @@ contracts { delegate.version = getProp(envVars, "EXTERNAL_CONTRACTS_VERSION") ?: "+" } contractsMode = Boolean. - parseBoolean(getProp(envVars, "EXTERNAL_CONTRACTS_WORK_OFFLINE").toString()) ? "LOCAL" : "REMOTE" + parseBoolean(getProp(envVars, "EXTERNAL_CONTRACTS_WORK_OFFLINE")) ? "LOCAL" : "REMOTE" } else { logger.lifecycle("Will use contracts from the mounted [/contracts] folder") @@ -187,22 +190,26 @@ test { } publishing { - repositories { - maven { - url getProp(envVars, 'REPO_WITH_BINARIES_URL') ?: 'http://localhost:8081/artifactory/libs-release-local' - credentials { - username getProp(envVars, 'REPO_WITH_BINARIES_USERNAME').toString() ?: 'admin' - password getProp(envVars, 'REPO_WITH_BINARIES_PASSWORD').toString() ?: 'password' - } + publications { + maven(MavenPublication) { + artifact verifierStubsJar } } - publications { + repositories { + maven { + allowInsecureProtocol Boolean.parseBoolean(getProp(envVars, 'REPO_ALLOW_INSECURE_PROTOCOL') ?: "false") + url getProp(envVars, 'REPO_WITH_BINARIES_URL') ?: 'http://localhost:8081/artifactory/libs-release-local' + credentials { + username getProp(envVars, 'REPO_WITH_BINARIES_USERNAME') ?: 'admin' + password getProp(envVars, 'REPO_WITH_BINARIES_PASSWORD') ?: 'password' + } + } } } // explicitly disable artifacts publication -boolean publishEnabled = Boolean.parseBoolean(getProp(envVars, "PUBLISH_ARTIFACTS").toString() ?: "true") -boolean publishOffline = Boolean.parseBoolean(getProp(envVars, "PUBLISH_ARTIFACTS_OFFLINE").toString() ?: "false") +boolean publishEnabled = Boolean.parseBoolean(getProp(envVars, "PUBLISH_ARTIFACTS") ?: "true") +boolean publishOffline = Boolean.parseBoolean(getProp(envVars, "PUBLISH_ARTIFACTS_OFFLINE") ?: "false") publish.setEnabled(publishEnabled) publishToMavenLocal.setEnabled(publishOffline) @@ -214,11 +221,11 @@ gradle.taskGraph.whenReady { graph -> findAll { it.name.startsWith("publish") && it.name.endsWith("ToMavenLocal") }*.setEnabled(publishOffline) } -if (Boolean.parseBoolean(getProp(envVars, "PUBLISH_STUBS_TO_SCM").toString())) { +if (Boolean.parseBoolean(getProp(envVars, "PUBLISH_STUBS_TO_SCM") ?: "false")) { publish.dependsOn("publishStubsToScm") } -Object getProp(Map envVars, String propName) { +String getProp(Map envVars, String propName) { if (!envVars.containsKey(propName)) { throw new IllegalStateException("You've referenced a property with name [${propName}] but it's not in the list of accepatble props ${envVars.keySet()}") } @@ -259,4 +266,4 @@ task dumpAllProps() { new DocsFromSources(project).buildApplicationEnvVars() } -} \ No newline at end of file +} diff --git a/docker/spring-cloud-contract-docker/project/build.sh b/docker/spring-cloud-contract-docker/project/build.sh index 78a76eb328..007e993eef 100755 --- a/docker/spring-cloud-contract-docker/project/build.sh +++ b/docker/spring-cloud-contract-docker/project/build.sh @@ -6,7 +6,12 @@ set -o nounset set -o pipefail export PROJECT_NAME="${PROJECT_NAME:-example}" +export DEBUG="${DEBUG:-false}" echo "Setting project name to [${PROJECT_NAME}]" echo "rootProject.name='${PROJECT_NAME}'" >> settings.gradle echo "Running the build" -./gradlew clean build publishToMavenLocal publish --stacktrace +export ADDITIONAL_FLAGS="${ADDITIONAL_FLAGS:-}" +if [[ "${DEBUG}" == "true" ]]; then + ADDITIONAL_FLAGS="${ADDITIONAL_FLAGS} --debug" +fi +./gradlew clean build publishToMavenLocal publish --stacktrace ${ADDITIONAL_FLAGS}