Bitbucket CI/CD非默认分支(release/QA)部署EC2配置问题
Bitbucket CI/CD配置(release/QA分支部署EC2)
一、配置文件存放问题
在master分支创建.bitbucket-pipelines.yml是可行的,但必须将该配置文件同步到release/QA分支。Bitbucket Pipelines触发分支流水线时,会读取该分支根目录下的配置文件,如果release/QA分支没有这个文件,流水线会无法启动。你可以通过合并master分支的配置到release/QA分支,或者直接在release/QA分支创建相同的配置文件。
二、release/QA分支的正确CI/CD配置
以下是修正并完善后的配置(适配Laravel项目部署需求):
image: php:7.2 pipelines: branches: release/QA: - step: name: 部署至EC2测试环境 caches: - composer script: # 安装流水线所需工具(php镜像默认无ssh客户端) - apt-get update && apt-get install -y ssh-client # 配置SSH免密登录(需提前在Bitbucket仓库设置私钥) - mkdir -p ~/.ssh - echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa # 配置known_hosts,避免首次连接确认提示 - ssh-keyscan -H ip-170-30-6-60 >> ~/.ssh/known_hosts # 安装Composer并处理Laravel依赖(可选,根据项目需求) - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" - php composer-setup.php --install-dir=/usr/local/bin --filename=composer - composer install --no-dev --optimize-autoloader # Laravel项目优化(可选) - php artisan config:cache - php artisan route:cache # 执行EC2上的部署脚本 - ssh root@ip-170-30-6-60 'bash -s' < execute.sh
关键配置说明
- 镜像与工具安装:php:7.2基于Debian系统,需用
apt-get替代yum;必须安装ssh-client才能执行远程登录命令。 - SSH密钥配置:
- 在Bitbucket仓库的「Settings > Pipelines > SSH keys」中,添加你的EC2私钥(对应EC2实例
~/.ssh/authorized_keys中的公钥)。 - 在「Settings > Pipelines > Environment variables」中创建
SSH_PRIVATE_KEY变量,值为你的EC2私钥内容,勾选「Secured」保护密钥。
- 在Bitbucket仓库的「Settings > Pipelines > SSH keys」中,添加你的EC2私钥(对应EC2实例
- Known_hosts处理:用
ssh-keyscan获取EC2主机的公钥并写入本地known_hosts,避免流水线因首次连接需要人工确认而中断。 - 部署脚本修正:将原配置中的
bash s改为bash -s,确保ssh能从标准输入读取execute.sh的内容并在EC2上执行。 - Laravel项目适配:添加Composer安装、依赖安装、项目优化步骤,确保部署的代码是可运行的测试版本。
三、额外注意事项
- 确保EC2实例的安全组开放了Bitbucket Pipelines的IP段,否则流水线无法连接EC2。
execute.sh需放在项目根目录,脚本内容需包含EC2上的部署操作(如拉取代码、重启服务等)。
内容的提问来源于stack exchange,提问作者chethana weerasinghe
相关产品推荐
相关产品推荐

