我的Django应用程序的这个Jenkins构建配置在"执行Windows批处理命令"字段:
// Code is downloaded using Git plugin
virtualenv data/.venv
call data/.venv/Scripts/activate.bat
pip install -r requirements/local.txt
cd src/
python .\manage.py test
cd ..
fabric dev deploy // Build job get stuck here
除最后一步外,所有步骤都正常。 Jenkins在第一次尝试连接到远程服务器时遇到困难。在"控制台输出"是旋转器继续旋转,我需要手动杀死构建。
当我从CLI手动运行Fabric任务时,它可以工作。我读到了Jenkins + known_hosts的一些问题,所以我在fabfile中尝试了env.reject_unknown_hosts = True
以查看是否有"添加到授权密钥"问题
Fabfile很标准,没什么特别的:
@task
def dev():
env.user = "..."
env.hosts = "..."
env.key_filename = "..."
nv.reject_unknown_hosts = True
@task
def deploy():
local("python src/manage.py check") # <---- OK, output is in Jenkins
run('git reset --hard') # <---- Jenkins will freeze
run('git pull --no-edit origin master')
# etc ....
print("Done.")
答案 0 :(得分:0)
这些需要密码,这个过程可能会被问到用户的密码。
将--no-pty
添加到命令中,以确保它不会阻止并报告错误。
它是基于您的特定远程/ ssh / tty设置解决的。