У меня есть GitLab CI, который использует cache для хранения некоторых файлов для совместного использования между этапами одного конвейера.
Извлекать:
default:
image: maven:3.9.0-eclipse-temurin-17
tags:
- k8s-aws
stages:
- build
- deploy
cache:
paths:
- .m2/repository/
- target/
- pom.xml
build-branch:
stage: build
script:
- some script which alter the pom.xml
deploy:
stage: deploy
script:
- mvn deploy
Теперь в конце конвейера я хотел бы удалить pom.xml из кеша.
Я попробовал решение в этом посте, но поскольку я использую образ докера, оно, похоже, не работает.
Есть ли простой способ очистить весь кеш в начале (и/или конце) моего конвейера?
В конце я проделал обратную операцию, чтобы получить оригинал pom.xml, но мне интересно узнать, содержит ли конкретное решение по очистке кеша более одного файла в другом варианте использования.
Используя образ Docker, я наивно думал, что кеш будет уничтожен между двумя запусками, но кажется, что тома Docker сохраняются.





Кажется, что кеш сохраняется между каждым выполнением конвейера специально, чтобы предотвратить перезагрузку повторяющихся файлов.
Я обнаружил, что правильный способ передачи недолговечных файлов между этапами и не сохранения их по всему конвейеру — это артефакты .
Из моего предыдущего примера, если я хочу, чтобы pom был разделен между этапами, мне просто нужно сделать следующее:
default:
image: maven:3.9.0-eclipse-temurin-17
tags:
- k8s-aws
stages:
- build
- deploy
cache:
paths:
- .m2/repository/
- target/
build-branch:
stage: build
artifacts:
- pom.xml
script:
- some script which alter the pom.xml
deploy:
stage: deploy
script:
- mvn deploy
Этап deploy сможет прочитать pom.xml из этапа build-branch, и он будет удален для следующего выполнения.