<<: *CONTAINER_TEMPLATE | <<: *CONTAINER_TEMPLATE | ||||
cpu: 7.5 | cpu: 7.5 | ||||
memory: 8Gb | memory: 8Gb | ||||
elasticsearch_distribution_cache: | |||||
folder: sonar-application/build/elasticsearch-**.tar.gz | |||||
script: | script: | ||||
- ./private/cirrus/cirrus-build.sh | - ./private/cirrus/cirrus-build.sh | ||||
<<: *DEFAULT_ARTIFACTS_TEMPLATE | <<: *DEFAULT_ARTIFACTS_TEMPLATE |
repositories { | repositories { | ||||
def repository = project.hasProperty('qa') ? 'sonarsource-qa' : 'sonarsource' | def repository = project.hasProperty('qa') ? 'sonarsource-qa' : 'sonarsource' | ||||
// The environment variables ARTIFACTORY_PRIVATE_USERNAME and ARTIFACTORY_PRIVATE_PASSWORD are used on QA env (Jenkins) | |||||
// On local box, please add artifactoryUsername and artifactoryPassword to ~/.gradle/gradle.properties | |||||
def artifactoryUsername = System.env.'ARTIFACTORY_PRIVATE_USERNAME' ?: (project.hasProperty('artifactoryUsername') ? project.getProperty('artifactoryUsername') : '') | |||||
def artifactoryPassword = System.env.'ARTIFACTORY_PRIVATE_PASSWORD' ?: (project.hasProperty('artifactoryPassword') ? project.getProperty('artifactoryPassword') : '') | |||||
maven { | maven { | ||||
// The environment variables ARTIFACTORY_PRIVATE_USERNAME and ARTIFACTORY_PRIVATE_PASSWORD are used on QA env (Jenkins) | |||||
// On local box, please add artifactoryUsername and artifactoryPassword to ~/.gradle/gradle.properties | |||||
def artifactoryUsername = System.env.'ARTIFACTORY_PRIVATE_USERNAME' ?: (project.hasProperty('artifactoryUsername') ? project.getProperty('artifactoryUsername') : '') | |||||
def artifactoryPassword = System.env.'ARTIFACTORY_PRIVATE_PASSWORD' ?: (project.hasProperty('artifactoryPassword') ? project.getProperty('artifactoryPassword') : '') | |||||
if (artifactoryUsername && artifactoryPassword) { | |||||
credentials { | |||||
username artifactoryUsername | |||||
password artifactoryPassword | |||||
if (artifactoryUsername && artifactoryPassword) { | |||||
credentials { | |||||
username artifactoryUsername | |||||
password artifactoryPassword | |||||
} | |||||
} else { | |||||
// Workaround for artifactory | |||||
// https://www.jfrog.com/jira/browse/RTFACT-13797 | |||||
repository = 'public' | |||||
} | } | ||||
} else { | |||||
// Workaround for artifactory | |||||
// https://www.jfrog.com/jira/browse/RTFACT-13797 | |||||
repository = 'public' | |||||
} | |||||
url "https://repox.jfrog.io/repox/${repository}" | |||||
url "https://repox.jfrog.io/repox/${repository}" | |||||
} | |||||
ivy { | |||||
if (artifactoryUsername && artifactoryPassword) { | |||||
credentials { | |||||
username artifactoryUsername | |||||
password artifactoryPassword | |||||
} | |||||
} else { | |||||
// Workaround for artifactory | |||||
// https://www.jfrog.com/jira/browse/RTFACT-13797 | |||||
repository = 'public' | |||||
} | |||||
url "https://repox.jfrog.io/repox/sonarsource-bucket" | |||||
patternLayout { | |||||
artifact '/[organisation]/[module]/[module]-[revision].[ext]' | |||||
} | |||||
metadataSources { artifact() } | |||||
} | } | ||||
} | } | ||||
org.gradle.jvmargs=-Xmx2048m | org.gradle.jvmargs=-Xmx2048m | ||||
org.gradle.caching=true | org.gradle.caching=true | ||||
org.gradle.vfs.watch=true | org.gradle.vfs.watch=true | ||||
# https://www.elastic.co/downloads/elasticsearch-no-jdk | |||||
elasticsearchDownloadUrlPath=https://artifacts.elastic.co/downloads/elasticsearch/ | |||||
elasticsearchDownloadRepoxUrlPath=https://repox.jfrog.io/artifactory/sonarsource-bucket/sonarqube/elasticsearch/ | |||||
elasticsearchDownloadUrlFileNoJdk=elasticsearch-8.7.0-no-jdk-linux-x86_64.tar.gz | |||||
elasticsearchDownloadUrlFileJdk=elasticsearch-8.7.0-linux-x86_64.tar.gz | |||||
elasticsearchDownloadSha512NoJdk=155ff74d55ff4ec9abe04877fd9da50f7083e5dee6c80fc85d61819fa1ca3e22dfa70478ab0632d89f1ec10153cfb38361c88a9babf4a4900cfd2d0639346673 | |||||
elasticsearchDownloadSha512Jdk=7ac6ee5e2e2ccee1ebb20a1c94992b90e879b8b37273d59ae1496b1e8ae5499ae1b6ddce8cea7dda3b63e7e45352735b2bd3328ad0fdd6d6aadb020de21eb894 | |||||
elasticsearchVersion=8.7.0 | |||||
projectType=application | projectType=application | ||||
org.gradle.logging.level=info | org.gradle.logging.level=info |
} | } | ||||
configurations { | configurations { | ||||
zipDist | |||||
zip | zip | ||||
scanner | scanner | ||||
web | web | ||||
jdbc_h2 'com.h2database:h2' | jdbc_h2 'com.h2database:h2' | ||||
jdbc_mssql 'com.microsoft.sqlserver:mssql-jdbc' | jdbc_mssql 'com.microsoft.sqlserver:mssql-jdbc' | ||||
jdbc_postgresql 'org.postgresql:postgresql' | jdbc_postgresql 'org.postgresql:postgresql' | ||||
def artifactoryUsername = System.env.'ARTIFACTORY_PRIVATE_USERNAME' ?: (project.hasProperty('artifactoryUsername') ? project.getProperty('artifactoryUsername') : '') | |||||
def artifactoryPassword = System.env.'ARTIFACTORY_PRIVATE_PASSWORD' ?: (project.hasProperty('artifactoryPassword') ? project.getProperty('artifactoryPassword') : '') | |||||
if (artifactoryUsername && artifactoryPassword) { | |||||
zipDist "sonarqube:elasticsearch:${elasticsearchVersion}-no-jdk-linux-x86_64@tar.gz" | |||||
} else { | |||||
zipDist "sonarqube:elasticsearch:${elasticsearchVersion}-linux-x86_64@tar.gz" | |||||
} | |||||
} | } | ||||
// declare dependencies in configuration bundledPlugin to be packaged in lib/extensions | // declare dependencies in configuration bundledPlugin to be packaged in lib/extensions | ||||
} | } | ||||
} | } | ||||
def artifactoryUsername = System.env.'ARTIFACTORY_PRIVATE_USERNAME' ?: (project.hasProperty('artifactoryUsername') ? project.getProperty('artifactoryUsername') : '') | |||||
def artifactoryPassword = System.env.'ARTIFACTORY_PRIVATE_PASSWORD' ?: (project.hasProperty('artifactoryPassword') ? project.getProperty('artifactoryPassword') : '') | |||||
task verifyElasticSearchDownload(type: Verify) { | |||||
if (artifactoryUsername && artifactoryPassword) { | |||||
src new File(buildDir, "$elasticsearchDownloadUrlFileNoJdk") | |||||
algorithm 'SHA-512' | |||||
checksum elasticsearchDownloadSha512NoJdk | |||||
} else { | |||||
src new File(buildDir, "$elasticsearchDownloadUrlFileJdk") | |||||
algorithm 'SHA-512' | |||||
checksum elasticsearchDownloadSha512Jdk | |||||
} | |||||
} | |||||
task downloadElasticSearch(type: Download) { | |||||
if (artifactoryUsername && artifactoryPassword) { | |||||
src "$elasticsearchDownloadRepoxUrlPath$elasticsearchDownloadUrlFileNoJdk" | |||||
username artifactoryUsername | |||||
password artifactoryPassword | |||||
dest "$buildDir/$elasticsearchDownloadUrlFileNoJdk" | |||||
} else { | |||||
src "$elasticsearchDownloadUrlPath$elasticsearchDownloadUrlFileJdk" | |||||
dest "$buildDir/$elasticsearchDownloadUrlFileJdk" | |||||
} | |||||
onlyIfModified true | |||||
finalizedBy verifyElasticSearchDownload | |||||
} | |||||
downloadLicenses { | downloadLicenses { | ||||
dependencyConfiguration = 'appLicenses' | dependencyConfiguration = 'appLicenses' | ||||
} | } | ||||
task zip(type: Zip, dependsOn: [configurations.compileClasspath, downloadElasticSearch, verifyElasticSearchDownload]) { | |||||
task zip(type: Zip, dependsOn: [configurations.compileClasspath]) { | |||||
duplicatesStrategy DuplicatesStrategy.EXCLUDE | duplicatesStrategy DuplicatesStrategy.EXCLUDE | ||||
def archiveDir = "sonarqube-$project.version" | def archiveDir = "sonarqube-$project.version" | ||||
} | } | ||||
} | } | ||||
from(tarTree(downloadElasticSearch.dest)) { | |||||
ResolvedArtifact elasticSearchArtifact = configurations.zipDist.resolvedConfiguration.resolvedArtifacts.find { | |||||
it.moduleVersion.id.name == "elasticsearch" | |||||
} | |||||
from(tarTree(elasticSearchArtifact.file)) { | |||||
eachFile { fcd -> | eachFile { fcd -> | ||||
def path = fcd.relativePath.segments - fcd.relativeSourcePath.segments + fcd.relativeSourcePath.segments.drop(1) | def path = fcd.relativePath.segments - fcd.relativeSourcePath.segments + fcd.relativeSourcePath.segments.drop(1) | ||||
fcd.relativePath = new RelativePath(true, *path) | fcd.relativePath = new RelativePath(true, *path) |