git 拉取远程服务器时 Fabric 2 自动部署错误。未找到存储库
Fabric 2 automating deployment error when git pulling on remote server. Repository not found
我正在尝试使用 Fabric 2 自动化我的部署。
当我通过远程服务器上的命令行手动执行 git 拉取操作时,一切正常。
当我尝试对我的 Fabric/Invoke 脚本执行相同操作时,它不允许我拉取。
虽然允许我执行 git 状态和其他命令。
代码:
# Imports
from fabric import Connection
from fabric.tasks import task
import os
# Here i pass my local passphrase:
kwargs = {'passphrase': os.environ["SSH_PASSPHRASE"]}
@task
def serverdeploy(c, branch="Staging"):
con = Connection('myuser@myhost', connect_kwargs=kwargs)
with con.cd("/home/user/repository/"):
# Activate the virtual environment:
with con.prefix("source ENV/bin/activate"):
con.run("git pull origin {}".format(branch))
结果是:
git@bitbucket.org: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
备注:
在进行拉取时,我什至没有被要求输入密码。
我试过在不激活环境的情况下进行拉取,但这也没有用。
可能是什么问题?
请将 con.run("git pull origin {}".format(branch))
放在 with con.prefix("source ENV/bin/activate"):
之外。
您的代码与解释器或虚拟环境无关!试试看,它应该有效!
最有可能的问题是您登录的用户具有 bitbucket.org 的正确 ssh 密钥设置,但结构连接用户不同。您可以以fabric连接的用户身份使用这两个命令来测试设置是否正确:
ssh -T git@bitbucket.org
ssh -T -i /path/to/private_key git@bitbucket.org
为了解决这个问题,将私钥复制到 /home/myuser/.ssh
目录并将 bitbucket.org 的 ssh 配置条目添加到 /home/myuser/.ssh/config
:
Host bitbucket.org
IdentityFile /path/to/private_key
我正在尝试使用 Fabric 2 自动化我的部署。
当我通过远程服务器上的命令行手动执行 git 拉取操作时,一切正常。
当我尝试对我的 Fabric/Invoke 脚本执行相同操作时,它不允许我拉取。
虽然允许我执行 git 状态和其他命令。
代码:
# Imports
from fabric import Connection
from fabric.tasks import task
import os
# Here i pass my local passphrase:
kwargs = {'passphrase': os.environ["SSH_PASSPHRASE"]}
@task
def serverdeploy(c, branch="Staging"):
con = Connection('myuser@myhost', connect_kwargs=kwargs)
with con.cd("/home/user/repository/"):
# Activate the virtual environment:
with con.prefix("source ENV/bin/activate"):
con.run("git pull origin {}".format(branch))
结果是:
git@bitbucket.org: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
备注:
在进行拉取时,我什至没有被要求输入密码。
我试过在不激活环境的情况下进行拉取,但这也没有用。
可能是什么问题?
请将 con.run("git pull origin {}".format(branch))
放在 with con.prefix("source ENV/bin/activate"):
之外。
您的代码与解释器或虚拟环境无关!试试看,它应该有效!
最有可能的问题是您登录的用户具有 bitbucket.org 的正确 ssh 密钥设置,但结构连接用户不同。您可以以fabric连接的用户身份使用这两个命令来测试设置是否正确:
ssh -T git@bitbucket.org
ssh -T -i /path/to/private_key git@bitbucket.org
为了解决这个问题,将私钥复制到 /home/myuser/.ssh
目录并将 bitbucket.org 的 ssh 配置条目添加到 /home/myuser/.ssh/config
:
Host bitbucket.org
IdentityFile /path/to/private_key