Я хотел бы, чтобы scons считывал номер предыдущей версии из файла, обновлял исходный файл новым номером версии и текущей датой, а затем записывал номер обратно в исходный файл, готовый к следующей сборке.
Это должно происходить только, когда цель устарела. IOW номер версии не меняется, если сборка не выполняется. Исходный файл контролируется исходным кодом и не является исходным файлом, иначе он может инициировать другую сборку при регистрации (из-за CI). УТОЧНЕНИЕ С точки зрения scons, код всегда будет устаревшим из-за автоматически сгенерированного исходного файла, но scons будет запускаться только из задания непрерывной интеграции (Jenkins) при обнаружении изменения SCM. .
Я просмотрел AddPostMethod
, но это, кажется, срабатывает для всех файлов в списке исходных файлов.
Методы Command
и Builder
используют VARIANT_DIR
, поэтому я не могу редактировать эти файлы, а затем возвращать их обратно, поскольку они больше не карта на репозиторий.
Я надеюсь, что просто неправильно понимаю некоторые тонкости scons, иначе у меня заканчиваются идеи!
Обновление Если подумать еще немного, комментарий Тома верен. Хотя у меня есть два файла, один текстовый файл с контролируемой версией (не исходный код) и один исходный файл без контроля исходного кода, нет возможности вернуть один файл и предотвратить непрерывный цикл сборки/регистрации. Jenkins увидит новый текстовый файл и запустит сборку, а scons увидит новый сгенерированный файл. Так что, если я не удалю сгенерированный файл в какой-то момент, хотя это, похоже, противоречит рабочему процессу обоих инструментов.
У кого-нибудь есть способ добиться этого? Это кажется довольно простым. В конечном счете, я просто хочу генерировать номера сборки каждый раз при запуске сборки.
AddPostAction('magic source file.o', func)
, если я правильно читаю документацию, но я никогда не использовал действие публикации, поэтому я не совсем уверен - person Tom Tanner   schedule 02.07.2013AddPostAction(someProgram, func)
, что объясняет, почему я видел, как он запускался для каждого исходного файла, а не для одного. - person Adam Naylor   schedule 02.07.2013