根据Commit ID自动触发Docker Hub的构建

26 4月

有时候自己的Docker镜像需要上传到Docker Hub上,为了保证镜像的更新,我们需要出发Docker Hub的构建。具体操作有以下几种:

  1. 从Travis CI(或者其他CI)来触发,每次提交自动构建新的镜像到Docker Hub
  2. 从其他镜像触发,比如你的镜像依赖了tomcat,那么就可以在Docker Hub中配置tomcat镜像一更新,你自己就更新
  3. 通过Docker Hub手动触发

这三个方法看起来第一个最好,但是有个先决条件,项目库或者说CI权限在自己手动。如果你的镜像编译了第三方的repo,那其实你没有办法配置webhook这一类的通知来触发构建。

因为最近在用阿里云函数计算,所以想到一个取巧的方法,通过commit id来判断是否为最新构建,大致思路如下:

  1. 在Dockerfile中输出commit id
  2. 通过Github API获取目标项目的最新commit id
  3. 通过Docker Hub API获取最新构建的日志
  4. 对比日志,如果commit id一样,就说明构建是最新的
  5. 如果不一样,就调用Docker Hub API触发新的构建

在Dockerfile中添加:

然后构建日志中就有commit id信息了

触发构建用的Docker Hub API地址可以在Build Settings中找到

发表评论

电子邮件地址不会被公开。