mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-09 22:45:04 +00:00
The ML subproject of xpack has a cache for the cpp artifact snapshots which is checked on each build. The cache is outside of the build dir so that it is not wiped on a typical clean, as the artifacts can be large and do not change often. This commit adds a cleanCache task which will wipe the cache dir, as over time the size of the directory can become bloated.
56 lines
1.8 KiB
Groovy
56 lines
1.8 KiB
Groovy
import org.elasticsearch.gradle.VersionProperties
|
|
|
|
apply plugin: 'distribution'
|
|
|
|
ext.version = VersionProperties.elasticsearch
|
|
|
|
// This project pulls a snapshot version of the ML cpp artifacts and sets that as the artifact
|
|
// for this project so it can be used with dependency substitution.
|
|
|
|
void getZip(File snapshotZip) {
|
|
String zipUrl = "http://prelert-artifacts.s3.amazonaws.com/maven/org/elasticsearch/ml/ml-cpp/${version}/ml-cpp-${version}.zip"
|
|
File snapshotMd5 = new File(snapshotZip.toString() + '.md5')
|
|
HttpURLConnection conn = (HttpURLConnection) new URL(zipUrl).openConnection();
|
|
|
|
// do a HEAD first to check the zip hash against the local file
|
|
conn.setRequestMethod('HEAD');
|
|
if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
|
|
throw new GradleException('ML cpp snapshot does not exist')
|
|
}
|
|
|
|
String remoteMd5 = conn.getHeaderField('ETag')
|
|
if (snapshotZip.exists()) {
|
|
// do a HEAD first to check the zip hash against the local file
|
|
String localMd5 = snapshotMd5.getText('UTF-8')
|
|
if (remoteMd5.equals(localMd5)) {
|
|
logger.info('Using cached ML snapshot')
|
|
return
|
|
}
|
|
}
|
|
|
|
snapshotZip.bytes = new URL(zipUrl).bytes
|
|
snapshotMd5.setText(remoteMd5, 'UTF-8')
|
|
}
|
|
|
|
File snapshotZip = new File(projectDir, ".cache/ml-cpp-${version}.zip")
|
|
task downloadMachineLearningSnapshot {
|
|
onlyIf {
|
|
// skip if ml-cpp is being built locally
|
|
findProject(':ml-cpp') == null &&
|
|
// skip for offline builds - just rely on the artifact already having been downloaded before here
|
|
project.gradle.startParameter.isOffline() == false
|
|
}
|
|
doFirst {
|
|
snapshotZip.parentFile.mkdirs()
|
|
getZip(snapshotZip)
|
|
}
|
|
}
|
|
|
|
task cleanCache(type: Delete) {
|
|
delete "${projectDir}/.cache"
|
|
}
|
|
|
|
artifacts {
|
|
'default' file: snapshotZip, name: 'ml-cpp', type: 'zip', builtBy: downloadMachineLearningSnapshot
|
|
}
|