使用 Apache Ivy / Spark 从 GitLab 包注册表获取工件时未经授权

问题描述 投票:0回答:1

我有一个 jar 部署到 GitLab 包注册表,我正在尝试将其添加到我的 Spark 应用程序中。但是,它无法获得受密码保护的注册表的授权。

我尝试设置

spark.jars.packages
spark.jars.repositories
,但即使使用硬编码令牌,它也无法正确授权。尽管它尝试用来获取 pom/jar 的 URL 在复制并直接与 curl 一起使用时工作得很好。

在寻找解决方案时,我发现了这篇博文:https://xebia.com/blog/spark-packages-from-a-password-protected-repository/

提出了以下 Ivy 设置:

<ivysettings>
    <settings defaultResolver="default" />
    <credentials 
        host="private.git.domain.com"
        username="read_only" 
        passwd="<TOKEN>"/>
    <resolvers>
        <ibiblio name="maven2" m2compatible="true" />
        <ibiblio name="gitlab" m2compatible="true"
            root="https://private.git.domain.com/api/v4/projects/<ID>/packages/maven" />
        <chain name="default">
            <resolver ref="maven2" />
            <resolver ref="gitlab" />
        </chain>
    </resolvers>
</ivysettings>

但我仍然不断收到

HTTP response status: 401
CLIENT ERROR: Unauthorized
,因为它似乎无法正确添加凭据。该领域将自动设置为
GitLab Packages Registry

有人成功实现了吗?

apache-spark gitlab ivy package-managers
1个回答
0
投票

经过几次其他尝试和错误后,它可以使用此设置:

<ivysettings>
    <settings defaultResolver="default" />
    <credentials 
        host="private.git.domain.com"
        realm="GitLab Packages Registry"
        username="read_only" 
        passwd="<TOKEN>"/>
    <resolvers>
        <ibiblio name="maven2" m2compatible="true" />
        <ibiblio name="gitlab" m2compatible="true"
            root="https://private.git.domain.com/api/v4/projects/<ID>/packages/maven" />
        <chain name="default">
            <resolver ref="maven2" />
            <resolver ref="gitlab" />
        </chain>
    </resolvers>
</ivysettings>

问题在于,虽然领域是自动设置的,但它也用于检索凭据。因此,如果凭证块中缺少领域,则它无法与主机匹配(自动添加领域)。

© www.soinside.com 2019 - 2024. All rights reserved.