Я рассчитываю свою версию 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 никогда не кэшируется и занимает слишком много времени, чтобы перестроить все это только для этого ярлыка.
Я ищу другие идеи, как пометить версию, рассчитанную внутри сборки, или идею, как заставить докер использовать кеш как есть.