Я пытаюсь использовать Boxen для настройки нашей среды разработки. У нас есть несколько репозиториев, которые мы хотим открыть и запустить скрипт, чтобы начать работу. Мы пришли к соглашению: в репозиториях есть каталог scripts/
со сценарием bootstrap
, который необходимо запустить.
Похоже, это возможно с помощью команды exec
. Но чтобы сказать ему, что запускать, мне нужно получить доступ к каталогу репо. Другие скрипты используют $repo_dir
или ${boxen::config:srcdir}/${name}
. Я пробовал каждый из них и несколько разных стилей exec
, но безрезультатно.
Манифест
class projects::hero {
include ruby
boxen::project { 'hero':
ruby => '2.0.0',
source => 'myorg/hero'
}
->
Exec {
command => '$repo_dir/scripts/echo'
}
->
notify {'hero is running at $srcdir':}
}
Это проще заявленной цели. Скрипты должны запускаться в каталоге, в котором они находятся. Итак, мой первый (и, надеюсь, окончательный) манифест будет иметь что-то вроде этого для шага exec
:
->
exec { 'running bootstrap on hero':
command => '$repo_dir/scripts/bootstrap',
cwd => '$repo_dir/scripts'
}
Сценарий
На данный момент scripts/echo
очень прост:
#!/bin/bash
echo "Echo File!"
touch `date`
Поскольку результат на самом деле не будет виден, мы создаем файл с датой, чтобы мы могли наблюдать этот побочный эффект и знать, что скрипт действительно выполнялся.
Вызов бокса
Я просто вызываю этот проект прямо из каталога manifests
:
Chris:manifests chris$ boxen hero
Выход
Warning: Scope(Class[Boxen::Environment]): Setting up 'hero'. This can be made permanent by having 'include projects::hero' in your personal manifest.
Error: Could not find resource 'command => $repo_dir/scripts/echo' for relationship from 'Boxen::Project[hero]' on node chris.local
Error: Could not find resource 'command => $repo_dir/scripts/echo' for relationship from 'Boxen::Project[hero]' on node chris.local
Это также верно, если я попробую ${boxen::config::srcdir}
вместо этого. Глядя на другие примеры, эти переменные используются и, похоже, работают. Я неправильно называю? Есть ли другая переменная, которую я должен использовать?