我在设置Leiningen来解决GitLab的私有依赖时遇到问题。
它在Maven项目中运行良好。我通过提供存储在~/.m2/settings.xml
中的HTTP头(Private-Token:abcd
)的配置来配置它(如GitLab文档中所述)。
我试过通过遵循文档设置与lein类似的东西,但在解决依赖打印Could not find artifact ... in releases
时总是失败。以下是我在project.clj中添加的内容:
:repositories [["releases" {:url "https://gitlab.com/api/v4/projects/.../packages/maven"
:creds :gpg}]]
我可能添加私有令牌不正确(或使用错误的凭据提供程序)。尝试了不同的用户名/密码/口令组合添加到~/.lein/凭据。CLJ(后来用gpg加密),但没有正常工作。有提示吗?
根据gitlab的注册认证文档,认证是使用访问令牌执行的,根据这个gitlab文档,可以在private_token中传递。url查询参数或PRIVATE-TOKEN头。
不幸的是,Leiningen不允许这两种身份验证方法。所以——你猜对了——有一个插件。这个插件实际上只是一小段代码,它代表了所谓的"马车"。工厂。
你可以这样使用:
;; inside project.clj file
:dependencies [[your-lib "0.1.0"]] ;; "your-lib" is the name of the package you published to to your gitlab's package registry
;; group and name of the package are usually the same, so you can mention just one of them
;; and it will be expanded to look like this:
;; your-lib/your-lib/0.1.0/your-lib-0.1.0.jar
:plugins [[net.clojars.hissyfit/lein-gitlab-cart "1.0.0"]]
:repositories [["this-name-doesnt-matter" {:url "gitlab://<your_gitlab_domain>/api/v4/projects/<your_project_id>/packages/maven"
:username "Private-Token"
:password <actual_token_value_here>}]]
注意事项:
注意的值:urlKey以"gitlab://"开头。这是lein-gitlab-cart所需要的。插件来识别应该注册哪个url以使用它的工厂类。在幕后,插件将"gitlab://"回归正常"https://"
如果同一个gitlab组下有来自不同项目的多个包,可以指定:url关键字为"gitlab://" your_gitlab_domain "/api/v4/groups/" your_group_id "/-/packages/maven"(您可以使用组的令牌来访问它包含的项目的包)
我发现,当使用部署令牌而不是项目/组访问令牌时,您确实需要替换:用户名密钥为"部署-令牌";而不是"Private-Token"
由您决定如何将令牌的实际值输入:password键,但我发现使用
~(System/getenv "MY_GITLAB_TOKEN")
从环境变量中检索它是最方便的。
并且,经过几天和许多不成功的尝试后,我也得出结论,该插件只能用于解决中提到的依赖项:dependencies在:plugins中提到的任何私有lein插件都不能工作。向量。它似乎更多的是一个问题,其中Leiningen目前(v2.10)解决插件依赖的顺序,自定义马车工厂只允许在所有插件解决后注册(它不可能发生,因为我们需要lein-gitlab-cart插件的马车工厂来解决我们的私有插件的地址)。