Подтвердить что ты не робот

Как указать папку сборки в Travis?

У меня есть репозиторий 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 обрабатывает команду сборки.

4b9b3361

Ответ 1

Просто напишите оболочку script и используйте ее для создания своего проекта. Убедитесь, что он работает локально. Что-то вроде этого должно сделать трюк:

build.sh:

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

.travis.yml:

script: build.sh

Ответ 2

Вы также можете попробовать добавить следующую строку в свой файл .travis.yml:

before_script: cd project

Ответ 3

Я попытался использовать это в моем файле travis.yml, но не работал

before_script: cd project

Затем я попробовал это

before_install: cd project

И это сработало 😅

Ответ 4

Добавление ниже в ваш файл .travis.yml должно сделать это:

before_script: cd <project_name>
script:
  - sbt compile
  - sbt test

Ответ 5

В вашем файле yml добавьте шаг " cd sub-folder ", прежде чем запускать команду сборки:

  default:
    - step:
        script:
          - cd project
          - sbt ++$TRAVIS_SCALA_VERSION package

Пример для gradle проектов:

  default:
    - step:
        script:
          - cd project
          - chmod +x gradlew
          - ./gradlew assembleDebug

Это исправит ошибку, такую как "chmod: cannot access 'gradlew': No such file or directory", если файл gradlew находится в другой папке, в корне git.

Он также будет работать в других системах сборки, которые используют файлы yml, например, bitbucket-pipelines.yml.