问题描述
我需要在 Cake building 上构建一个任务,以允许我将 docker 映像推送到 Azure 容器注册表。我在互联网上搜索,但我没有找到如何做到这一点......有人遇到了同样的问题?
解决方法
好吧,我认为这不是更好的方法,但我有第一次迭代:
[TaskName("PushDockerImage")]
[TaskDescription("Login on acr and push Docker Image")]
public sealed class PushDockerImageTask : FrostingTask<BuildContext>
{
public override void Run(BuildContext context)
{
var settings = new AzLoginSettings
{
Username = context.AzureLogin,Password = context.AzurePassword,};
context.Az().Login(settings);
var acrSettings = new AzAcrLoginSettings
{
Arguments = new ProcessArgumentBuilder()
.Append("--name").AppendQuoted(context.AzureContainerRegistry)
};
context.Az().Acr.Login(acrSettings);
var imageReference = context.DockerImageReference;
context.DockerPush(imageReference);
}
}
这里的主要问题是我必须在命令行中提供用户名和密码。我想和帕特一起做,但我做不到
,因此,暂时忽略 Cake,您“想要”遵循 https://docs.microsoft.com/en-us/azure/container-registry/container-registry-get-started-docker-cli?tabs=azure-cli 处的文档
大致:
- 登录
- 标记图像
- 推送图片
可以通过 azure cli、azure PS 或 docker 客户端使用它的 login
命令登录 mcr。
所以,回到 Cake,你可能需要结合
-
DockerLogin 将
server
参数设置为您的 mcr 要求 - DockerTag 带有包含指向您的 mcr 注册表的完全限定路径的标记
- DockerPush