Скажем, у меня есть скрипт cmd.wait, который следит за изменениями в управляемом репозитории git. Как лучше всего запустить этот скрипт, даже если репозиторий не изменился?
Вот сценарий:
my-repo:
git.latest:
- name: [email protected]:my/repo.git
- rev: master
- target: /opt/myrepo
- user: me
- require:
- pkg: git
syncdb:
cmd.run:
- name /opt/bin/syncdb.sh
load-resources:
cmd.wait:
- name: /opt/bin/load_script.py /opt/myrepo/resources.xml
- require:
- cmd: syncdb
- watch:
- git: my-repo
index-resources:
cmd.wait:
- name: /opt/bin/indexer.sh
- watch:
- cmd: load-resources
Скажем, я запускаю это состояние, но syncdb
терпит неудачу. load-resources
и index-resources
также терпят неудачу из-за отсутствия предварительных условий. Но my-repo
удалось, и теперь у него последняя проверка репозитория.
Итак, я исправляю проблему, которая вызывала сбой syncdb
, и это удается. Но теперь мои cmd.watch
скрипты не запускаются, потому что my-repo
не сообщает об изменениях.
Мне нужно запустить только один раз, load-resources
, и в будущем я хочу, чтобы он запускался только при изменении репо. Теперь я мог бы просто изменить его, чтобы использовать cmd.run
, но на самом деле у меня есть куча этих cmd.wait
скриптов в похожем состоянии, и я действительно не хочу проходить и переключать их все а затем переключите их обратно. То же самое касается внесения искусственных изменений в репозиторий git. Задействовано несколько репозиториев, и это раздражает во многих отношениях. Наконец, я могу предвидеть, что что-то подобное произойдет снова, и мне нужно надежное решение для обработки этого случая, которое не требует множества подверженных ошибкам ручных вмешательств.
Итак, есть ли способ запустить эти cmd.watch
скрипты вручную? Или есть умный способ переставить зависимости, чтобы можно было запускать их вручную?