我正在尝试构建一个持续集成系统。每次推送到GitHub都会触发构建。
每个构建都需要签出/下载存储库以进行提交它的处理。我试图找到一种方法,在大型存储库上花费几分钟(因为构建只需要几秒钟......)。
请注意,我不想在构建之间存储数据(这会消除缓存的可能性)。
我已经探索过的解决方案:
git clone
然后签出提交:工作但大型存储库需要几分钟我在GitHub上看到的每个其他解决方案都假定服务器上最近的git版本,或者克隆存储库一次没问题,但在我的情况下它不是。我在每次构建时从头开始(因为这是一个约束)。
所以我在GitHub的特定情况下询问:如何在特定提交下载(以任何方式)代码,以便能够在该提交上运行持续集成工具?
答案 0 :(得分:2)
您可以使用以下格式的网址从GitHub下载特定提交的存档:
https://github.com/PROJECT/REPO/archive/COMMITID.zip
例如,如果我有一个名为" dockerize"我想下载提交ID 169532e
我可以运行:
curl -OL https://github.com/larsks/dockerize/archive/169532e.zip
我在这里使用了一个简短的提交ID,但您可以使用长提交ID,分支或标记等。
这将为我提供一个.zip
存档,其中包含该特定提交的文件。顶级目录将命名为PROJECT-LONGCOMMITID
。例如,上面的命令将导致存档,其中顶级目录为
dockerize-169532eba46757aca8002e1c9bb257079a739f75/README.md
。
这使得仅该特定提交中的文件;它不会获取.git
目录或任何存储库历史记录。