2016-06-20 3 views
1

У меня есть сценарий, который я хочу выполнить, когда обновляется конкретный каталог. Чтобы быть более конкретным: команда разработчиков имеет 4 каталога (давайте скажем «a», «b», «c» и «d»), которые они время от времени обновляют. У меня есть сценарий, который принимает имя параметра каталога. Я хочу выполнить этот скрипт с параметром «a», когда обновляется каталог «a». Возможно ли это с Дженкинсом? Если да, могу ли я сделать то же самое, используя SVN?Запуск сценария Python при обновлении каталога

+0

Ничего общего с python. У Дженкинса должен быть плагин SVN, который делает именно это. –

ответ

2

Вы можете сделать это, используя сам python, с библиотекой watchdog.

from watchdog.observers import Observer 
from watchdog.events import PatternMatchingEventHandler 

class FileHandler(PatternMatchingEventHandler): 
    def process(self, event): 
     print event.src_path, event.event_type # print now only for degug 

    def on_modified(self, event): 
     self.process(event) 

    def on_created(self, event): 
     self.process(event) 

if __name__ == '__main__': 
    args = sys.argv[1:] 
    observer = Observer() 
    observer.schedule(MyHandler(), path=args[0] if args else '.') 
    observer.start() 

    try: 
     while True: 
      time.sleep(1) 
    except KeyboardInterrupt: 
     observer.stop() 

    observer.join() 
+0

Благодарим вас за ответ, который может быть очень полезным! Однако я не уверен, что это лучше, чем использование Дженкинса. Эти каталоги расположены на сервере, поэтому, вероятно, я должен запустить этот скрипт на стороне сервера, чего я не хочу делать. Больше я не хочу, чтобы он работал все время, и я хочу иметь простой переключатель для запуска или остановки его. – Michael280

+0

У Jenkins есть плагин для выполнения задания, где это может искать изменения файловой системы и запускать сборку. Но поддержка заканчивается там, я не уверен, может ли она передать имя измененного каталога скрипту. https://wiki.jenkins-ci.org/display/JENKINS/FSTrigger+Plugin –

Смежные вопросы