【问题标题】:Authenticate with Azure Artifacts from Dockerfile for Java(Maven), NPM使用来自 Dockerfile for Java(Maven)、NPM 的 Azure Artifacts 进行身份验证
【发布时间】:2020-09-12 18:18:10
【问题描述】:

有人可以提供什么是推荐的解决方案,用于在 MavenNPMPython 的 Azure Artifacts 的 docker build 阶段在 Dockerfile 内部进行身份验证>?

虽然在 Stack Overflow 或互联网上(在下面的各种文章中)提到了从 Dockerfile 内部构建时访问经过身份验证的 Azure Artifacts 提要的特定问题的大多数解决方案都针对 nuget 生态系统,但我的问题是 MavenNPMPython 包。

为 nuget 和 docker 提供解决方案的示例博客-

感谢这里的帮助。

【问题讨论】:

  • 您好,请问这个问题呢?下面的答案是否解决了您的问题,如果是,您可以 Accept it as an Answer ,这样它可以帮助遇到相同问题的其他社区成员,我们可以存档这个帖子,谢谢。

标签: docker maven npm azure-devops azure-artifacts


【解决方案1】:

我的问题是针对 Maven、NPM 或 Python 包的。

这些包类型来自不同的系统,所以我们应该使用不同的方式来验证它们。

对于 Maven:

检查set-up-your-feed 。你应该配置你的pom.xml文件来定义url,然后用PAT定义settings.xml文件。您可以在项目中管理这两个文件,然后使用 Dockerfile 将settings.xml 复制到${user.home}/.m2 文件夹。

对于 NPM:

您可以在此处关注Other 主题配置一个包含凭据的.npmrc。另外我认为您可以创建一个普通的.npmrc 文件,然后使用Npm Authenticate task 对其进行修改。这是working sample

对于 Python:

我们可以使用Pip Authenticate task 填充PIP_EXTRA_INDEX_URL 环境变量并将其作为构建参数传递。像这样:arguments: --build-arg INDEX_URL=$(PIP_EXTRA_INDEX_URL)

您可以查看this similar issue的两个答案了解更多详情。

【讨论】:

  • 感谢@lance Li-MSFT,所以看起来封装这个的唯一方法是创建一个临时的 settings.xml 或 npmrc 文件(其中秘密或令牌在构建期间的运行时被替换)和构建完成后,我们可以使用多阶段构建将其丢弃。我说的对吗?
  • @BB8 是的。一旦软件包恢复并且真正的构建完成,我们可以添加一个delete 步骤来删除临时文件。
  • 感谢@lance Li-MSFT
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 2018-04-06
  • 1970-01-01
  • 1970-01-01
  • 2021-02-01
  • 2015-08-22
  • 2018-01-04
相关资源
最近更新 更多