Как прозрачно кэшировать клон мерзавца?

Я хотел бы предложить непрерывную услугу по интеграции (я планирую использовать 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 не могут использоваться для кэширования ни одного.

2
задан 27 June 2015 в 20:34
1 ответ

Действительно, проблема, о которой вы говорите, существует и компенсирует множество вопросов, таких как «как долго я должен кэшировать ответ? Что, если у меня есть два проекта, у которых частота коммитов сильно различается ? ". Есть некоторые проприетарные решения, которые делают то, что вы ищете, например, если вы используете Atlassian Stash, он имеет встроенный плагин, который управляет кешированием ответов при оформлении заказа, чтобы снизить нагрузку на сервер.

Лучшее решение в любом случае другое. от того, что вы хотите сделать. Лучшее и рекомендуемое решение - использовать хуки после фиксации, они существуют в git, svn и, я думаю, также и в других vcs. Просто пусть ваш репозиторий запускает сборку в вашей системе CI, а не непрерывно опрашивает задания CI. Как вы упомянули Jenkins (Hudson), плагин Git, например, уже предоставляет URL-адреса для выполнения такого рода действий.

0
ответ дан 3 December 2019 в 14:41

Теги

Похожие вопросы