shad-go/distbuild/pkg/artifact
Sergey Paramoshkin dc939b6ed1
update repo
2023-10-02 22:32:41 +03:00
..
cache.go update repo 2023-10-02 22:32:41 +03:00
cache_test.go update repo 2023-10-02 22:32:41 +03:00
client.go update repo 2023-10-02 22:32:41 +03:00
client_test.go update repo 2023-10-02 22:32:41 +03:00
handler.go go fix old build tags. 2022-03-15 23:49:56 +03:00
README.md Release filecache, artifactcache and tarstream source code 2023-04-26 16:06:56 +04:00

artifact

Пакет artifact реализует кеш хранения артефактов и протокол для передачи артефактов между воркерами.

Артефакт - это директория, содержащая в себе результат работы джоба. Артефакт может состоять из произвольного набора файлов и директорий.

Основной тип artifact.Cache занимается хранением артефактов на диске и контролем одновременного доступа. Все методы artifact.Cache concurrency safe.

Одна горутина может начать писать артефакт. Начало записи берёт лок на запись. Никто другой не может работать с артефактом, на который взят лок на запись. Горутина должна позвать commit или abort после того, как она закончила работать с артефактом.

commit помещает артефакт в кеш. abort отменяет запись артефакта, удаляя все данные.

Реализация artifact.Cache вам дана.

Скачивание артефакта

*artifact.Handler должен реализовывать один метод GET /artifact?id=1234. Хендлер отвечает на запрос содержимым артефакта в формате tarstream.

Функция Download должна скачивать артефакт из удалённого кеша в локальный.

Обратите внимание, что конструктор хендлера принимает *zap.Logger. Запишите в этот логгер интересные события, это поможет при отладке в следующих частях задачи.