如何配置Bitbucket Pipeline,仅部署PR合并到Master后的修改文件
只部署Bitbucket Pipeline中变更文件的解决方案
当前你用的atlassian/scp-deploy管道会直接上传所有文件,要实现增量部署,最省心的办法是换成rsync——它能自动识别本地和远程的文件差异,只传输变动的内容,还能处理文件删除的情况。
修改后的完整Pipeline代码如下:
image: pyguerder/bitbucket-pipelines-php74 pipelines: branches: master: - step: name: 'Deploy to production' deployment: production caches: - composer script: - apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com - apt-get update && apt-get install -y rsync # 安装rsync工具 # rsync增量同步:只传变更文件 - rsync -avz --delete \ -e "ssh -i <(echo '$MY_SSH_KEY') -o StrictHostKeyChecking=no" \ "${BITBUCKET_CLONE_DIR}/" \ "${SSH_USERNAME}@${SERVER_IP}:${REMOTE_PATH}/"
关键参数说明:
-avz:a(归档模式)保留文件权限、时间戳等元数据;v(详细输出)方便排查问题;z(压缩传输)节省带宽--delete:可选参数,如果需要删除远程服务器上本地已不存在的文件就保留,不需要就删掉-e "ssh ...":指定用SSH连接,通过临时文件加载私钥,关闭主机密钥检查避免Pipeline卡住- 路径末尾的
/别漏:${BITBUCKET_CLONE_DIR}/表示同步目录里的所有内容,不是目录本身;远程路径同理
内容的提问来源于stack exchange,提问作者Krish
相关产品推荐
相关产品推荐

