У меня есть проект Gradle, который зависит от внешнего артефакта. Я настроил build.gradle
следующим образом:
plugins {
id "de.undercouch.download" version "4.0.0"
}
ext {
sdkVersion = "14.135.0"
sdkArchiveLocation = file("$buildDir/cache/TFS-SDK-${sdkVersion}.zip")
}
task downloadArchive(type: Download) {
src "https://github.com/JetBrains/team-explorer-everywhere/releases/download/$sdkVersion/TFS-SDK-${sdkVersion}.zip"
dest sdkArchiveLocation
overwrite false
}
Он работает нормально: правильно загружает файл во время сборки, а затем использует загруженные результаты так, как мне нужно. Если я выполню эту задачу несколько раз, будет загружать файл только один раз и впоследствии повторно использовать результат загрузки.
Но теперь, чтобы мои сборки были менее зависимы от сети, я решил кэшировать результат загрузки на моем CI-сервере (в данном случае Azure Pipelines):
- task: Cache@2
inputs:
key: 'client/backend/tfs-sdk/build.gradle'
path: client/backend/tfs-sdk/build/cache
Я намеревался повторно использовать результат загрузки между запусками CI без повторной загрузки файла каждый раз. Но каждый раз, когда я запускаю задание CI, в журналах я вижу следующее:
:client:backend:tfs-sdk:downloadArchive (Thread[Task worker for ':',5,main]) started.
Download https://github.com/JetBrains/team-explorer-everywhere/releases/download/14.135.0/TFS-SDK-14.135.0.zip
> Task :client:backend:tfs-sdk:downloadArchive
Deleting stale output file: /home/vsts/work/1/s/client/backend/tfs-sdk/build/cache/TFS-SDK-14.135.0.zip
Task ':client:backend:tfs-sdk:downloadArchive' is not up-to-date because:
No history is available.
:client:backend:tfs-sdk:downloadArchive (Thread[Task worker for ':',5,main]) completed. Took 6.03 secs.
Почему он считает, что мой результат загрузки "устаревший"? Как заставить его повторно использовать уже загруженный файл?