Пометить существующее изображение - PullRequest
0 голосов
/ 15 января 2019

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

Я ищу другие идеи, как пометить версию, рассчитанную внутри сборки, или идею, как заставить докер использовать кеш как есть.

1 Ответ

0 голосов
/ 15 января 2019

Есть несколько способов сделать это. Один из них - добавить в качестве тега строку хэша последнего коммита git.

Получить хэш последнего коммита:

git rev-parse HEAD

Оставьте только 12 символов:

git rev-parse HEAD | cut -c 1-12

Построить это:

docker build <path> -t my_image:$(git rev-parse HEAD | cut -c 1-12)

После этого вы получите что-то вроде этого:

Successfully built 69a5823a74e6
Successfully tagged my_image:196957476da0

В этом случае докер будет использовать кеш.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...