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