如何根据 git diff 来部署环境呢?这时候还尚未提交到代码库没有 commit id 该怎么部署测试环境呢?
上下文是?没明白为何要根据 git diff 部署
我们是希望可以做到当产生一个 diff 时,自动去触发一个单元测试,如果测试通过就提交代码。类似这样的功能 ps 我们在用 facebook 的 phabricator 好像有类似功能
这个可以用 git pre-commit hook 做吧?一旦执行 commit 操作,自动执行指定的程序,程序返回值非 0 就不能提交。
同样的有 pre-push hook,一旦做 push 操作就执行指定程序。
还是一样的问题吧 如果不是在本地跑的话 还是涉及到如何拿到有变化的代码 放到环境中去
还是不明白你的需求是什么。。。
如果你的代码都还没 commit ,也还没 push ,这个时候这个代码只应该部署在本地做自测或者调试,不应该部署到实际环境中,否则出问题了无法追溯(代码仓库里没有)。
如果是要部署,那就直接获取要部署的代码版本(git tag 或者 git 分支),进行 build 之后部署到环境中。这种情况下不需要理会 diff 内容是什么吧,只要确保代码是 git 里面要部署的那个版本就够了。
git diff 一般只有做 patch(补丁)或者代码评审的时候才会关注的把?
你提到的关键字有 不在本地跑 diff 自动触发。既然需要在远程执行,你肯定是要 commit 的对吧,总不能生成 patch 然后应用到远程服务器上触发测试。我们解决这类场景是:
git commit/review 后, Jenkins job 按照 Gerrit event 触发执行,获取本次的代码变更。下游 job 可以执行测试集通知测试结果。