55

我有一个 github 存储库user/repo,但真正的项目位于子文件夹中user/repo/project/build.sbt
我应该在其中写什么.travis.yml以使 Travis 忽略顶部文件夹并仅在项目文件夹中工作?

受此启发,尝试了以下方法,但没有成功:

env:
  global:
    - REPO="user/repo"
    - CI_HOME=`pwd`/$REPO
script: sh -c 'cd $CI_HOME/project' && sbt ++$TRAVIS_SCALA_VERSION package

错误日志:

$ sh -c 'cd $CI_HOME/project' && sbt ++$TRAVIS_SCALA_VERSION package
Detected sbt version 0.12.2-RC1
/home/travis/build/user/repo doesn't appear to be an sbt project.

理想情况下,应该有一种方法来指定构建文件夹,但让 Travis 处理构建命令。

4

5 回答 5

122

您也可以尝试在.travis.yml文件中添加以下行:

before_script: cd project
于 2013-05-10T10:18:59.463 回答
48

我尝试在我的 travis.yml 文件中使用它,但没有用

before_script: cd project

然后我尝试了这个

before_install: cd project

那行得通

于 2015-05-03T16:37:37.210 回答
17

只需编写一个 shell 脚本并使用它来构建您的项目。确保它在本地工作。这样的事情应该可以解决问题:

build.sh

#!/bin/sh
cd $TRAVIS_BUILD_DIR/project
sbt ++$TRAVIS_SCALA_VERSION package

.travis.yml

script: build.sh
于 2013-02-05T00:15:12.167 回答
1

在您的 .travis.yml 文件中添加以下内容应该可以做到:

before_script: cd <project_name>
script:
  - sbt compile
  - sbt test
于 2018-01-24T20:04:34.987 回答
-2

在您的 yml 文件中,cd sub-folder在运行构建命令之前添加一个“”步骤:

  默认:
    - 步:
        脚本:
          - 光盘项目
          - sbt ++$TRAVIS_SCALA_VERSION 包

gradle 项目示例:

  默认:
    - 步:
        脚本:
          - 光盘项目
          - chmod +x gradlew
          - ./gradlew assembleDebug

"chmod: cannot access 'gradlew': No such file or directory"如果gradlew文件与 git root 位于不同的文件夹中,这将修复类似的错误。

它也适用于使用 yml 文件的其他构建系统,例如bitbucket-pipelines.yml

于 2018-09-05T21:43:57.930 回答