Travis CI Scala Play Application Build & Deployment Optimization



我在GitHub上有一个项目,我使用Travis CI进行CI&CD。它是一个使用sbt构建的Scala应用程序,并使用Play框架作为web应用程序运行。我已经编写了构建管道,以便作为构建阶段执行以下操作:

jobs:
include:
- stage: test
script: sbt clean coverage test coverageReport
- stage: assemble-jar
script: sbt "set test in assembly := {}" assembly
if: branch = master
- stage: push-docker 
script: bash docker_push.sh 
if: branch = master  

我现在面临的问题是,在测试阶段,它会被格式化和编译一次,在组装和推送docker阶段也是如此。考虑到Scala编译器的速度有多慢,这很烦人。有没有什么方法可以优化它,使它不会在每个阶段都被编译?我确实了解了缓存,在我的yml中也有以下内容:

cache:
directories:
- "$HOME/.ivy2/cache"
- "$HOME/.sbt"

但不幸的是,这并没有帮助,因为它只缓存依赖项,而不缓存上一个构建阶段的结果。我能做些什么让它变得更好?

首先,您不能真正重用测试阶段的编译类文件,因为这些文件嵌入了scoverage工具,这使得它们在运行时依赖于scoverage。当你试图在没有它的情况下运行时,它会崩溃。

其次,如果您想在assembly-jar和push-doker阶段之间共享构建文件,您可以使用S3来做到这一点:https://docs.travis-ci.com/user/build-stages/share-files-s3/

相关内容

  • 没有找到相关文章

最新更新