caching - 在构建之间使用 gitlab ci runner 时如何为 sbt 启用 .ivy2 缓存

标签 caching sbt gitlab gitlab-ci-runner

当使用 gitlab ci runner 和 sbt 时,我想避免每次构建时都下载所有 sbt jar 文件。有什么办法可以缓存这个吗?这是我的 .gitlab-ci.yml 文件,它没有成功缓存 .ivy2 文件。

image: openjdk:8-jre-alpine

services:
- docker:dind

variables:
  SBT_VERSION: "0.13.13"
  SBT_HOME: "/usr/local/sbt"
  SBT_JAR: "http://dl.bintray.com/sbt/native-    packages/sbt/${SBT_VERSION}/sbt-${SBT_VERSION}.tgz"

cache:
  paths:
    - ~/.ivy2

stages:
  - setup

setup:
  stage: setup
  script:
  - export PATH="${SBT_HOME}/bin:$PATH"
  - apk --update add bash wget curl tar git
  - wget ${SBT_JAR}
  - mkdir /usr/local/sbt
  - tar -xf sbt-${SBT_VERSION}.tgz -C /usr/local/sbt --strip-components=1
  - echo -ne "- with sbt sbt-${SBT_VERSION}\n" >> /root/.built
  - rm sbt-${SBT_VERSION}.tgz
  - echo "$PATH"
  - cat /root/.built
  - ls -als /usr/local/sbt
  - sbt sbt-version
  - ls -als ~/.ivy2

最佳答案

假设您使用的是 docker runner,那么您需要更新 config.toml 文件并使 /root/.ivy2 与卷持久化

这是我的:

concurrent = 1
check_interval = 0

[[runners]]
  name = xxx
  url = yyy
  token = zzz
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "ruby:2.1"
    privileged = false
    disable_cache = false
    volumes = ["/cache", "/srv/home:/root/" ]
  [runners.cache]

关于caching - 在构建之间使用 gitlab ci runner 时如何为 sbt 启用 .ivy2 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40427591/

相关文章:

docker - 带有gitlab的Docker Windows 10

javascript - Redis - 持久化个人散列

google-chrome - chrome 隐身模式缓存是存储在磁盘还是内存中,是否加密?

android - 如何使用 auto devops 定位 .gitlab-ci.yml 中的较新版本(java 11 而不是 8,Android 31 而不是 29)

scala - 如何覆盖具有多个子项目的 SBT 项目中子项目的设置

scala - 构建.sbt : cannot resolve symbol inThisBuild

gitlab - 登录到位于 Gitlab 中的 docker 注册表

c# - ASP.NET 输出缓存位置?

iphone - UITableViewCell 重用具有可变高度单元格的标识符

java - IntelliJ IDEA : Error:scalac: Class javax. servlet.ServletException 未找到 - 继续 stub