我有一个 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
。
有人成功实现了吗?
经过几次其他尝试和错误后,它可以使用此设置:
<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>
问题在于,虽然领域是自动设置的,但它也用于检索凭据。因此,如果凭证块中缺少领域,则它无法与主机匹配(自动添加领域)。