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