我正在计算我的dll版本之前,使用一些信息,从我的源和git数据。
我还想将该版本作为图像的标签公开。
为此,我使用powershell读取文件的最终版本:
RUN $version = [System.Diagnostics.FileVersionInfo]::GetVersionInfo('C:\WebAPI\bin\WebAPI.dll').FileVersion; \
Set-Content -Path 'C:\VERSION' -Value $version
然后,在生成之后,我读取该文件并使用--label argumet重新生成:
# Read version from image
$id = $(docker create my_image)
docker cp "${id}:C:\VERSION" version.txt
docker rm -v $id
$version = Get-Content -Path version.txt
# Rebuid with version label
docker build -t my_image --cache-from my_image --label version=$version .
它可以工作,但是很难看,而且msbuild从未被缓存过,只为那个标签重建它需要太长时间。
我正在寻找其他的想法,如何用构建内部计算的版本来标记,或者,如何强制Docker使用缓存。