如何将Docker Hub自动构建标记为Git SHA

18

我们正在使用自动化的 Docker Hub 构建来创建我们的应用程序镜像,每当新的提交被推送到 Github 时就会自动生成。

当我们手动更改 docker hub 上的标签时,这样做也很好。现在我们想要做的是将镜像标签自动创建为 git commit sha,以便我们可以在我们的 Kubernetes 部署中拉取该镜像进行滚动更新。

我们想要类似于这样的东西, 当提交 foo 被推送到我们的应用程序仓库时, Docker Hub 将自动构建镜像,然后我们将在 Docker Hub 上获得一个新的镜像, myimage:foo

我没有找到在 Docker Hub 上实现这一点的文档。如何实现这一点?我们在dockerhub上只有两个选项,即标签和分支

谢谢。


1
您可能对 Docker Hub 上的高级自动化构建感兴趣;请查看 https://docs.docker.com/docker-cloud/builds/advanced/ - thaJeztah
@thaJeztah 尝试过了,但是没有起作用,你有任何使用案例吗? - slashRahul
你能否添加更多细节,说明你在Docker Cloud上尝试了什么,以及什么没有起作用?如果包含这些信息可能会很有价值,然后我可以尝试获取有关如何解决它的信息或报告错误。 - thaJeztah
我尝试在Dockerfile中使用这个命令:ENV SOURCE_COMMIT <commit hash>,但不确定这是否是正确的用法。 - slashRahul
我也遇到了同样的问题。这里有什么帮助吗?如果镜像标签相同,Kubernetes集群不会更新,而Docker Hub自动构建系统只生成最新标签或带有分支名称的标签。Docker Hub应该有一个选项,可以使用git提交ID为镜像打标签。 - Jitendra
1个回答

8
hooks/目录下创建一个名为post_push的新可执行文件,并使用以下内容推送具有最新git短哈希作为标记的另一个镜像:
#!/bin/bash

SHORTHASH="$(git rev-parse --short HEAD)"
docker tag $IMAGE_NAME $DOCKER_REPO:$SHORTHASH
docker push $DOCKER_REPO:$SHORTHASH

2
为什么不使用内置的$SOURCE_COMMIT而使用您专门编写的$SHORTHASH代码呢? - rexypoo
@rexypoo,我已经很久没有使用$SOURCE_COMMIT了,但是如果我没记错的话,它比git输出的rev-parse要短一个字符。大多数其他工具使用较长的版本,所以我宁愿使用那个版本。$SHORTHASH == c67080b8$SOURCE_COMMIT == c67080b - HeroCC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接