Heroku在部署我的Vapor应用程序时没有找到正确的SSH密钥,并立即失败。当我尝试在Heroku上部署我的服务器时,当我向我的应用程序添加一个私有存储库时,我得到了这个错误。
- (在添加此私有存储库之前,部署工作正常)*
Fetching git@github.com:MyName/MyRepository.git
warning: 'myrepository.git': skipping cache due to an error: Failed to clone repository git@github.com:MyName/MyRepository.git:
Cloning into bare repository '/app/.cache/org.swift.swiftpm/repositories/MyRepository-65a67a5f'...
Load key "/app/.ssh/id_rsa": error in libcrypto
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
error: Failed to clone repository git@github.com:MyName/MyRepository.git:
Cloning into bare repository '/tmp/build_e6a4655b/.build/repositories/MyRepository-65a67a5f'...
Load key "/app/.ssh/id_rsa": error in libcrypto
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
! Push rejected, failed to compile Swift app.
! Push failed
私有存储库在我的Vapor应用程序的Package.swift
文件中是这样设置的。
dependencies: [
.package(url: "git@github.com:MyName/MyRepository.git", branch: "develop")
]
在部署Vapor应用程序时,Heroku会查找app/.ssh/id_rsa
密钥,但这不是我设置要使用的密钥。我在我的Mac上创建了一个名为~/ssh/id_heroku
的密钥,我在GitHub和Heroku上设置了这个密钥,没有任何问题。
我已经在Heroku上使用了buildpack https://github.com/heroku/heroku-buildpack-ssh-key.git
,我在Heroku应用程序设置上的Vapor之前添加了它。
我的Mac上的.ssh/config
文件设置看起来是这样的:
Host heroku
HostName heroku.com
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_heroku
1条答案
按热度按时间jljoyd4f1#
Credits转到@vzsg,来自Vapor Discord Channel。
Heroku上的私人Github仓库(2023)
1.不需要添加额外的构建包,因为
https://github.com/vapor-community/heroku-buildpack
可以完成这项工作。1.在服务器应用的根目录下创建一个名为
bin/pre_compile
的文件,内容如下:1.将文件设置为可执行文件并提交到git:
1.创建具有存储库权限的个人访问令牌:
GitHub documentation
1.设置两个配置变量:使用您的GitHub用户名的
GITHUB_USER
(您为其创建了令牌并有权访问私有存储库),以及使用新创建的令牌值的GITHUB_AUTH_TOKEN
:1.从终端或Heroku网站部署数据库。
请注意,私有存储库的名称必须以
git@github.com:
开头,而不是https://github.com
。