Повторное использование вывода задачи загрузки Gradle между запусками CI - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть проект 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.

Почему он считает, что мой результат загрузки "устаревший"? Как заставить его повторно использовать уже загруженный файл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...