如何使用 GITHUB_TOKEN 密钥和 Maven Jib 插件将图像推送到 GitHub 包?

Posted

技术标签:

【中文标题】如何使用 GITHUB_TOKEN 密钥和 Maven Jib 插件将图像推送到 GitHub 包?【英文标题】:How to push images to GitHub Packages using GITHUB_TOKEN secret with Maven Jib plugin? 【发布时间】:2020-08-31 06:40:21 【问题描述】:

我想将使用 Maven Jib plugin 构建的 Docker 镜像推送到 GitHub Packages。

我读到我可以在 GitHub Packages 中使用 GITHUB_TOKEN 密码进行身份验证。

但我在 Jib 文档中找不到使用令牌进行身份验证的方法。

我只看到了一种使用用户名和密码的方法。

<settings>
  ...
  <servers>
    ...
    <server>
      <id>MY_REGISTRY</id>
      <username>MY_USERNAME</username>
      <password>MY_SECRET</password>
    </server>
  </servers>
</settings>

如何使用 Maven jib 插件通过令牌进行身份验证?

【问题讨论】:

【参考方案1】:

l免责声明:我以前从未听说过 GitHub Packages。

根据 GitHub Packages 网站上的示例,该示例显示了一些 Docker CLI 命令,包括下面的docker login

$ docker login docker.pkg.github.com --username phanatic
Logged in successfully

$ docker tag app docker.pkg.github.com/phanatic/repo/app:1.0

$ docker push docker.pkg.github.com/phanatic/repo/app:1.0.0

我认为MY_REGISTRY 应该是docker.pkg.github.comMY_USERNAME 应该是你的用户名(在上面的例子中是phanatic)。此外,您的 &lt;to&gt;&lt;image&gt;(目标 Docker 映像名称)应以 docker.pkg.github.com/&lt;your username &gt;/... 开头,如上。

GitHub Packages 文档(here 和 here)似乎建议您可以在 GitHub Actions 中使用 GITHUB_TOKEN 作为密码。我强烈建议您在settings.xml 中加密&lt;password&gt; 的密码值(GITHUB_TOKEN)。请参阅Maven doc 了解如何操作。您需要创建settings-security.xml

在使用settings.xmlsettings-security.xml 之前,我将首先在本地测试用户名和GITHUB_TOKEN&lt;to&gt;&lt;auth&gt;&lt;username&gt;&lt;to&gt;&lt;auth&gt;&lt;password&gt;(未加密)的组合,以检查这些值是否有效。

【讨论】:

GITHUB_TOKEN 是secret provided by default when using GitHub Actions。我知道 Maven Jib 插件支持标准用户名:pwd Docker 登录。但我想专门使用GITHUB_TOKEN 进行身份验证。我不想使用我的个人帐户用户名:pwd。 见help.github.com/en/packages/… 和help.github.com/en/packages/…。我认为您可以使用GITHUB_TOKEN 作为密码。 我在那些文档中找不到任何地方写着我可以将令牌用作密码或至少是其中的一个示例。那会很奇怪。不过我可以试试。 “配置 Docker 以与 GitHub Packages 一起使用”文档说“使用 GITHUB_TOKEN 进行身份验证如果您使用的是 GitHub Actions 工作流程,则可以使用 GITHUB_TOKEN 在 GitHub Packages 中发布和使用包,而无需存储和管理个人访问令牌。有关详细信息,请参阅使用 GITHUB_TOKEN 进行身份验证。"

以上是关于如何使用 GITHUB_TOKEN 密钥和 Maven Jib 插件将图像推送到 GitHub 包?的主要内容,如果未能解决你的问题,请参考以下文章

如何将MAV转换成MP3格式,为啥用千千静音后成无效格式了

使用 RSACryptoServiceProvider,如何将密钥交换密钥和签名密钥存储在同一个密钥容器中?

json l87 y u MAV bro - Destiny Stats

服务如何生成和使用公共和秘密 API 密钥?

EC2 和密钥对 - 如何使用不同的 ssh 密钥

如何在 TPM 中加载和使用持久对称密钥?