с кэшированием артефактов в пределах одного пайплайна и кэшированием кэшей сбт/иви/курсира в пределах ветки?
я вот с этим щас страдаю. Гитлаб умеет кеши кешировать только из рабочей директории, поэтому кешировать ~/.sbt не выйдет
там можно переопределить, мы вроде это победили, но как я понял гитлаб не может кэшировать разные папки по разному
что ты имеешь в виду под кешировать по разному?
> с кэшированием артефактов в пределах одного пайплайна и кэшированием кэшей сбт/иви/курсира в пределах ветки
а, ну я такое как раз сделал через cache & artifacts
под артефактами я имею в виду папку target, сори
а что тебе в ней надо кешировать? Результаты компиляции?
да, чтобы не компилировать в каждой джобе пайплайна одно и то же
в билдсбт: pushRemoteCacheTo in ThisBuild := Some( MavenCache("local-ci-cache", file("remote-cache")) ) в ямле самая первая джоба компилирует и пушит в кеш результат: compile: stage: compile script: - ets -s -f '[%T.%L]' scalafmt-native --check - ets -s -f '[%T.%L]' sbt compile test:compile pushRemoteCache artifacts: paths: - target/scala-2.13/meta - target/scala-2.13/test-meta - local-ci-cache/ и первая команда в каждой джобе, где нужна компиляция выглядит как-то так: sbt pullRemoteCache cmd cmd cmd
как победили с переопределением? У меня там проблемы с образом с СБТ, что в нем хочется скачать нужную версию заранее
это вообще ни с чем не помогает, папку с кэшом надо же куда-то запихивать, с таким же успехом можно и target кэшировать
она и запихивается в артефакт
variables: SBT_OPTS: "-Dsbt.global.base=sbt-cache/.sbtboot -Dsbt.boot.directory=sbt-cache/.boot -Dsbt.ivy.home=sbt-cache/.ivy" COURSIER_CACHE: "sbt-cache/coursier" cache: key: "$CI_BUILD_REF_NAME" untracked: true paths: - "sbt-cache/.ivy/cache" - "sbt-cache/coursier" - "sbt-cache/.boot" - "sbt-cache/.sbtboot"
а сам лаунчер сбт откуда берете?
лично я image: "hseeberger/scala-sbt:11.0.9.1_1.4.6_2.13.4", но некоторые мои коллеги меня бы за это раскритиковали
Обсуждают сегодня