12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- 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 = "https://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
- }
|