Sbt-github-packages: 凭证的 JVM 属性替代项

创建于 2020-06-10  ·  11评论  ·  资料来源: djspiewak/sbt-github-packages

IntelliJ 无法使用此插件加载项目,因为它无法在加载项目时定义为 sbt 设置的环境变量。 为 MacOS 上的应用程序设置它们似乎不可靠,因为以前的工作技术在操作系统更新时被破坏了。

如果 github 令牌可以作为 JVM 属性提供,那将是很好的,它可以很容易地设置。

最有用的评论

要使环境变量在 IntelliJ 中工作,请启用 sbt shell 以重新加载项目。

构建工具 > sbt > sbt 项目

image

这在社区版 2020.3 版中对我有用。

所有11条评论

很高兴接受TokenSource的 PR !

我同意这会有所帮助,但如果您需要,我会将此作为快速/肮脏的解决方案。

  • 使用您可能需要的所有包范围(读取、写入、删除)创建个人访问令牌。
  • 在 ~/.gitconfig... 中设置令牌属性,如 repo README 文件中所述。
  • 在您的 build.sbt 文件中... githubTokenSource := TokenSource.GitConfig("github.token") || TokenSource.Environment("GITHUB_TOKEN")
  • IntelliJ + sbt shell 应该会成功,而不会抱怨缺少环境变量。

该解决方法对我不起作用。

该解决方法对我不起作用。

您使用的个人访问令牌是否设置了包范围? ~/.gitconfig 文件应该有这样的一行。

[github]
    token = <github_token_value>

是的,这就是我在 .gitconfig 文件中的内容。

该解决方法对我不起作用。

您使用的个人访问令牌是否设置了包范围? ~/.gitconfig 文件应该有这样的一行。

[github]
  token = <github_token_value>

我尝试过类似的~/.gitconfig ,它也没有为我所用。

要使环境变量在 IntelliJ 中工作,请启用 sbt shell 以重新加载项目。

构建工具 > sbt > sbt 项目

image

这在社区版 2020.3 版中对我有用。

要使环境变量在 IntelliJ 中工作,请启用 sbt shell 以重新加载项目。

构建工具 > sbt > sbt 项目

image

这在社区版 2020.3 版中对我有用。

这对我不起作用。 我通过环境变量配置了它。 作为一种解决方法,我通过使用sbt-dotenv插件解决了这个问题。 在此之后,一切正常,无需对 IntelliJ 配置或其他方式进行任何更改。

此问题中建议的解决方法的变体适用于我的 IntelliJ 设置。

githubTokenSource := TokenSource.Or(
  TokenSource.Environment("GITHUB_TOKEN"), // Injected during a github workflow for publishing
  TokenSource.GitConfig("github.token") // local token set in ~/.gitconfig
)

我分享说,我们的团队认为通过将 githubTokenSource 值作为通用设置注入到 build.sbt 中每个项目的配置块中,我们已经通过单项目和多项目构建解决了这个问题。 对于具有 ~/.gitconfig github.token 条目或具有 GITHUB_TOKEN 环境变量的用户、IDE 和 GitHub Action 工作区来说,一切都很顺利。

直到我们中的一个人决定使用 Lagom 插件的runAll任务。

对于原始问题,这会立即消失。

Lagom 插件用于部署服务群的分叉上下文缺少环境变量和 ~/.gitconfig 文件。

我们正在研究为该分叉执行环境设置环境的方法。

但是,即使没有调用 GitHub 包插件任务,也必须提供 GITHUB_TOKEN 的总体假设被证明对我们的用户和机器人来说是令人沮丧的,因为我们的用户和机器人碰巧已经有了该令牌可用。

SBT 大师。

是否有适当的方法将设置(尤其是githubTokenSource )“注入”到全局命名空间中,以便像sbt-github-packages这样的插件可以看到所有明确定义的项目的设置,所有动态定义的项目(像 Lagom 的插件创建的那样)、所有构建阶段和所有分叉上下文?

必须明确声明在所有这些排列中始终不变的凭证的位置是很繁重的,必须深入了解 SBT 如何管理命名空间或状态缓存的细节。

也许这不是这个特定插件的错,但这个插件被指责为必须进行所有这些内部 SBT 手术以试图涵盖所有情况。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

mkurz picture mkurz  ·  6评论

djspiewak picture djspiewak  ·  23评论

pedrorijo91 picture pedrorijo91  ·  3评论

jilen picture jilen  ·  3评论

wpoosanguansit picture wpoosanguansit  ·  3评论