如何从一个存储库访问同一组织下的其他存储库的 github 包注册表?

Sid*_*Sid 3 github github-actions github-package-registry

我在有Org两个不同存储库repo-1repo-2.
我已将大约 50 个奇怪的 Maven 依赖项上传到 的 GitHub Packages 注册表repo-1,现在我们正在迁移到repo-2. pom.xml 和所有 GitHub Actions 工作流程都按原样复制。因此,我需要访问repo-2Maven 构建工作流程的同一组依赖项。但是,repo-2 无法从repo-1Packages 注册表下载依赖项。

工作流程片段:

- name: build
  run: mvn clean package '-Dmaven.test.skip=true' '-Dmaven.wagon.http.pool=false' --file pom.xml -B -X
  env:
    GITHUB_TOKEN: ${{ github.token }}
    MAVEN_OPTS: -Xmx3072M -Xss128M -XX:MetaspaceSize=512M -XX:MaxMetaspaceSize=2048M -XX:+CMSClassUnloadingEnabled
Run Code Online (Sandbox Code Playgroud)

pom.xml 中的存储库配置片段:

<repositories>
    <repository>
        <id>central</id>
        <url>https://repo1.maven.org/maven2</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>1_maven.apache.org</id>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <url>https://repo.maven.apache.org/maven2</url>
        <layout>default</layout>
    </repository>
    <repository>
        <id>github</id>
        <url>https://maven.pkg.github.com/Org/repo-1</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <releases>
            <enabled>true</enabled>
        </releases>
    </repository>
    <repository>
        <id>jasper</id>
        <url>https://jaspersoft.jfrog.io/jaspersoft/third-party-ce-artifacts/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)

我对这两个存储库都有管理员访问权限,以下是我尝试过的一些操作:

  1. 官方文档中的一些访问控制设置,尤其是此 -将存储库连接到 GitHub 上的组织拥有的包。在我的情况下,“连接存储库”按钮没有出现。
  2. 使用默认的 GitHub 令牌以及我的 PAT。(PAT 需要访问软件包并获得 SSO 授权)
  3. 使用 -X 开关。令人惊讶的是,调试日志没有显示为什么无法获取依赖项。
  4. 第二个和第三个辅助选项打开repo-1,如本快照所示 -在此输入图像描述

然而,到目前为止,没有任何效果。

小智 7

截至 2022 年 12 月,已有解决方案。

在您的组织中,转到包并选择您想要访问的包。在右侧的包设置下,您可以在“管理操作访问”下添加其他存储库。其他存储库仅需要读取权限。

在 YAML 工作流文件中,为工作流添加权限,如下所示: 权限示例 工作流需要对内容和包的读取权限

现在您可以使用 GITHUB_TOKEN 下载其他私有仓库中的包

工作流程权限: https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs

存储库访问: https://docs.github.com/en/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility#github-actions-access-for-organization-owned-container -图片

  • 请注意,这不适用于 Maven 和 gradle 包。请参阅 https://docs.github.com/en/packages/learn-github-packages/about-permissions-for-github-packages#permissions-for-repository-scoped-packages (2认同)

kuh*_*yal 6

您应该能够关注这篇文章:https://www.schakko.de/2020/12/19/using-github-workflow-with-maven-dependency-from-a-private-github-package-registry/

值得注意的是,它GITHUB_TOKEN仅适用于同一存储库中的上传和下载。

如果您想从另一个存储库访问包,则必须创建个人访问令牌并使用用户名/令牌作为身份验证。

所以基本上你的步骤 2. 包括你的用户名应该可以工作。