持续集成 如何根据 git 的 diff reversion 来部署环境?

紫殇情结 · 2017年03月08日 · 最后由 ovpt 回复于 2017年03月12日 · 2448 次阅读

如何根据 git diff 来部署环境呢?这时候还尚未提交到代码库没有 commit id 该怎么部署测试环境呢?

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 6 条回复 时间 点赞

上下文是?没明白为何要根据 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 然后应用到远程服务器上触发测试。我们解决这类场景是:

  • Gerrit
  • Jenkins
  • Gerrit Trigger

git commit/review 后, Jenkins job 按照 Gerrit event 触发执行,获取本次的代码变更。下游 job 可以执行测试集通知测试结果。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册