代码之家  ›  专栏  ›  技术社区  ›  joesan

Gitci缓存阶段之间的依赖关系

  •  1
  • joesan  · 技术社区  · 6 年前

    我有下面的GitLab yml文件,我已经分阶段编写了它,假设每个阶段都会保留依赖关系,但似乎情况并非如此!

    # This file is a template, and might need editing before it works on your project.
    # Official Java image. Look for the different tagged releases at
    # https://hub.docker.com/r/library/java/tags/ . A Java image is not required
    # but an image with a JVM speeds up the build a bit.
    image: java:8
    
    variables:
      FILE_TARGET_PATH: $FILE_TARGET_PATH
    
    stages:
      - test
      - run
    
    cache:
      key: "$CI_BUILD_REF_NAME" # contains either the branch or the tag, so it's caching per branch
      untracked: true
      paths:
        - "sbt-cache/.ivy.cache"
        - "sbt-cache/.boot"
        - "sbt-cache/.sbtboot"
        - "sbt-cache/target"
    
    before_script:
      # Enable the usage of sources over https
      - apt-get update -yqq
      - apt-get install apt-transport-https -yqq
      # Add keyserver for SBT
      - echo "deb http://dl.bintray.com/sbt/debian /" | tee -a /etc/apt/sources.list.d/sbt.list
      - apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
      # Install SBT
      - apt-get update -yqq
      - apt-get install sbt -yqq
    
    Run unit Tests:
      stage: test
      tags:
        - master
      script:
        # Execute your project's tests
        - sbt -Denv=test clean test
    
    Run Pipeline:
      stage: run
      tags:
        - master
      script:
        # Execute the pipeline
        - sbt -Denv=test run
    

    如何缓存此多级设置中的依赖项?我的机器上有一个本地的跑步者在运行管道。文物会帮助我吗?

    0 回复  |  直到 6 年前
        1
  •  1
  •   Andrius Versockas    5 年前

    如果您使用的是比1.0.4更新的sbt版本,则缓存将不适用于您,因为编译器将始终使所有文件无效。 https://github.com/sbt/sbt/issues/4168

    我的建议是将sci的sbt版本降到1.0.4。如果这没有帮助,您还可以通过添加到 build.sbt :

    // Debug incremental zinc compiler
    logLevel := Level.Debug
    incOptions := incOptions.value.withApiDebug(true).withRelationsDebug(true)
    

    here