如何解决使用 Poetry 从 Github 安装多个私有包并部署密钥
我想使用诗歌将多个私有 Github 存储库作为 python 包安装到我的存储库中。这在本地运行 poetry install
时工作正常,因为我将公共 SSH 密钥添加到 Github,这允许诗歌访问私有存储库。问题是我想在我的 CI/CD 管道中安装这些相同的私有包,为此我需要为每个 repo 添加一个部署密钥。正确的部署密钥需要用于正确的存储库,为了使其工作,我需要使用以下格式的一些别名设置配置(我实际上还没有知道这是否真的有效) ):
// /.ssh/config
Host repo-1.github.com
IdentityFile ~/.ssh/repo-1-deploy-key
Host repo-2.github.com
IdentityFile ~/.ssh/repo-2-deploy-key
其中 repo-1
和 repo-2
是我需要安装的私有存储库的名称。在本地运行时,pyproject.toml
包需要按以下格式设置:
// pyproject.toml
...
[tool.poetry.dependencies]
repo-1 = { git = "ssh://git@github.com/equinor/repo-1.git" }
repo-2 = { git = "ssh://git@github.com/equinor/repo-2.git" }
...
因为这将允许开发人员在没有任何配置的情况下安装软件包(假设他们有权访问)。然而,对于 CI/CD 管道,URL 需要与 SSH 配置文件中的别名匹配,因此它需要看起来像这样:
// pyproject.toml
...
[tool.poetry.dependencies]
repo-1 = { git = "ssh://git@repo-1.github.com/equinor/repo-1.git" }
repo-2 = { git = "ssh://git@repo-2.github.com/equinor/repo-2.git" }
...
现在,我似乎被困在了如何在同一个 pyproject 文件中包含两个不同的 git 路径?我尝试了以下操作:
//pyproject.toml
[tool.poetry.dependencies]
repo-1 = { git = "ssh://git@repo-1.github.com/equinor/repo-1.git",optional=true }
repo-2 = { git = "ssh://git@repo-2.github.com/equinor/repo-2.git",optional=true }
[tool.poetry.dev-dependencies]
repo-1 = { git = "ssh://git@repo-1.github.com/equinor/repo-1.git" }
repo-2 = { git = "ssh://git@repo-2.github.com/equinor/repo-2.git" }
[tool.poetry.extras]
cicd_modules = ["repo-1","repo-2"]
这样我就可以在本地运行 poetry install
,它会使用开发依赖项和 CI/CD 管道中的 poetry install --no-dev --extras cicd_modules
来使用别名路径。可悲的是,这给了我一个 CalledProcessError
,因为尽管可选标志设置为 true,但似乎诗歌试图安装可选包。
我在这里做错了什么,我是否以某种方式错误地使用了可选标志?有没有更好的方法来解决这个问题? 总而言之,我只是希望能够使用诗歌和 Github 在 CI/CD 管道中部署密钥的包安装多个私有存储库,而不会破坏本地安装行为,如果以这种方式或其他更好的方式,我真的没有什么强烈的意见。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。