Я хотел бы предложить услугу непрерывной интеграции (планирую использовать hudson
, но решение должно работать и для других) с веб-интерфейсом, в котором пользователь определит URL-адрес SCM (например, git
URL-адрес) и корень рабочего пространства / исходного кода, который используется для сборки, следует очистить (по крайней мере, необязательно) перед сборкой. Для этого требуется много повторных проверок, которые я хотел бы кэшировать (т.е. сделать так, чтобы они считывались из локального хранилища, а не извлекались из удаленного ресурса).
Различные SCM (git
, svn
и ртутный /hg
) используют разные протоколы (HTTP, HTTPS, git
и т. д.), некоторые из них могут быть кэшированы (HTTP), другие, как правило, нет (HTTPS без использования посредника, что неприемлемо для надежной службы imo, которую я хочу предоставить) или конкретно нет (я не нашел ни одного git
серверы кеширования протокола).
Кеширование HTTP - не проблема, но мало git
хостер поддерживает его или перенаправляет на HTTPS. Я хотел бы поддерживать один протокол, который надежно кеширует проверки и предлагать пользователю его использовать.
Перенаправление через прокси-сервер SOCKS может быть выполнено для HTTP и git
протокол, но это не позволяет кэшировать. Другие протоколы, такие как IGD, также нельзя использовать для кеширования.
Действительно, проблема, о которой вы говорите, существует и вызывает множество вопросов, таких как «как долго я должен кэшировать ответ? Что, если у меня есть два проекта, у которых частота коммитов сильно различается?». Есть некоторые проприетарные решения, которые делают то, что вы ищете, т.е. если вы используете Atlassian Stash, у него есть встроенный плагин, который управляет кэшированием ответов при оформлении заказа, чтобы снизить нагрузку на сервер.
Лучшее решение в любом случае отличается от того, что вы хотите сделать. Лучшее и рекомендуемое решение - использовать перехватчики после фиксации, они существуют в git, svn и, я думаю, также и в других vcs. Просто пусть ваш репозиторий запускает сборку в вашей системе CI, а не непрерывно опрашивает задания CI. Как вы упомянули Jenkins (Hudson), плагин Git, например, уже предоставляет URL-адреса для выполнения такого рода действий.