在Github包注册表中将Docker映像绑定到正确的Github提交

在Github包注册表中将Docker映像绑定到正确的Github提交,git,docker,github,github-package-registry,Git,Docker,Github,Github Package Registry,使用docker push将包发布到Github包注册表时,该包似乎链接到主分支上的最新提交。但是,我目前正在另一个分支上构建我的包,或者在特定标记上构建我的包。有没有办法将发布的映像绑定到特定的git提交,以便链接到映像的源代码资产是正确的?帮助页面“”提到: 将映像推送到GitHub包注册表: $ docker push docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION 因此,只要您已经从任何您想要的Git提交中构建并标记了

使用
docker push
将包发布到Github包注册表时,该包似乎链接到主分支上的最新提交。但是,我目前正在另一个分支上构建我的包,或者在特定标记上构建我的包。有没有办法将发布的映像绑定到特定的git提交,以便链接到映像的源代码资产是正确的?

帮助页面“”提到:

将映像推送到GitHub包注册表:

$ docker push docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION
因此,只要您已经从任何您想要的Git提交中构建并标记了您的图像,该步骤就独立于所述Git提交:它完全依赖于您所构建的内容

您可以将变量添加到您的
docker构建中
,以包含Git信息。
请参阅“”中的“”


无论何时使用docker build命令创建映像,它都会接受目录中的所有更改。如果你指向master,那么它将从master构建它


为了解决这个问题,您可以单独使用单独的目录进行构建,或者编写小脚本来完成同样的工作。例如,您可以编写一个shell脚本,该脚本将在temp文件夹中克隆您的存储库,并从特定分支中提取最新的更改,创建并将构建推送到注册表。

映像已正确构建和标记。问题在于,
docker push
步骤独立于所述git提交。这意味着版本中引用的提交以及链接到该版本的资产(如图所示)将与映像的实际资产和提交不匹配,除非您在该提交是主映像的负责人时构建并发布该映像。这意味着从较旧的提交/标记或从master分支发布的图像将没有正确链接的提交。@Sebastian a发行版未链接到master HEAD,您的问题中也未提及该发行版(这是关于Github包注册表的,不是关于Github存储库发行版的)。尽管如此,您仍然可以为特定的标记创建一个释放,这反过来会引用正确的Git提交。我的问题是,每当为不存在的标记创建一个释放时,它默认为创建一个指向主控头的新标记。对于docker图像,通常会标记最新图像
最新的
,这似乎不适用于Github的包注册表。@Sebastian我同意。在脚本构建和发布Docker图像时,需要首先创建标记和发布。
docker build -t flask-local-build --build-arg GIT_COMMIT=$(git log -1 --format=%h) .
docker inspect flask-local-build | jq '.[].ContainerConfig.Labels'