You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.7中使用Envoy通过HTTPS访问Bitbucket仓库可行吗?

解决Laravel Envoy通过HTTPS克隆Bitbucket仓库的问题

你的核心问题出在Envoy任务的命令拼接逻辑上,我来帮你一步步梳理解决:

错误根源分析

你在@setup段里把$repo定义成了完整的git clone命令,然后在@task里又重复写了git clone,导致最终服务器执行的命令变成了:

git clone "" "git clone https://myaccount@bitbucket.org/myaccount/votes.git 20190309072721"

Git会把整个git clone https://...字符串当成仓库地址,自然会报错说无法识别git clone https这个奇怪的协议。

正确的Envoy配置示例

把仓库地址和Git命令拆分,只在@setup里定义纯仓库URL,然后在task里构建正确的克隆命令:

@setup
$server_login_user = 'deployer_user';
$repo = 'https://myaccount@bitbucket.org/myaccount/votes.git'; // 仅保留仓库URL,不要加git clone
$branch = 'main'; // 替换为你需要部署的分支,比如master/main
$release_number = date('YmdHis'); // 自动生成唯一的发布目录名
@endsetup

@servers(['production' => $server_login_user.'@NNN.NN.NN.NN'])

@task('deploy', ['on' => 'production'])
    # 先创建发布目录(如果目录不存在的话)
    mkdir -p /var/www/html/project_name/release/{{ $release_number }}
    # 执行标准的Git克隆命令
    git clone -b {{ $branch }} "{{ $repo }}" "/var/www/html/project_name/release/{{ $release_number }}"
@endtask

额外关键注意事项

  • Bitbucket HTTPS认证问题:如果你的Bitbucket账号开启了两步验证(2FA),直接用账号密码克隆会失败,需要在Bitbucket账号后台创建一个App Password,然后用这个密码替换URL里的账号密码,格式为:
    https://你的用户名:你的App密码@bitbucket.org/client/project_name.git
    
  • 避免手动输入密码:为了让Envoy执行时不用手动输入密码,可以在部署服务器上配置Git凭证存储:git config --global credential.helper store,或者把凭证直接写在URL里(注意:不要把带密码的URL提交到版本控制)。
  • 分支可选处理:如果不需要指定分支,直接去掉命令里的-b {{ $branch }}部分,Git会默认克隆仓库的默认分支。

调整后执行envoy run deploy,应该就能正常通过HTTPS克隆Bitbucket仓库了。

内容的提问来源于stack exchange,提问作者Petro Gromovo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:28:33