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

Bitbucket部署流水线使用atlassian/scp-deploy无法排除SCP传输文件夹

问题原因及修复方案

核心原因1:排除路径格式错误

atlassian/scp-deploy 底层实际调用rsync执行文件同步(原生scp本身没有--exclude参数),rsync的--exclude规则要求路径必须相对于你指定的传输源根目录,不能填写本地绝对路径:

  • 你当前配置的LOCAL_PATH为${BITBUCKET_CLONE_DIR}/*,实际传输的是克隆目录下的所有子文件/子文件夹,源根目录就是${BITBUCKET_CLONE_DIR}
  • 你填写的${BITBUCKET_CLONE_DIR}/vendor/*是本地绝对路径,rsync在源根目录下匹配不到对应路径,因此排除规则完全不生效

核心原因2:变量未正常解析

你在EXTRA_ARGS的取值中使用了单引号,YAML语法中单引号包裹的内容不会解析内部的${BITBUCKET_CLONE_DIR}变量,实际传递给rsync的参数会保留未替换的变量字符串,进一步导致规则失效。


修复方案

直接修改EXTRA_ARGS参数,去掉绝对路径前缀和不必要的变量引用即可:

# 排除vendor下所有文件和.env文件
EXTRA_ARGS: '--exclude=vendor/* --exclude=.env'
# 如果要排除整个vendor文件夹,可简化为
# EXTRA_ARGS: '--exclude=vendor --exclude=.env'

注意:即使你后续把LOCAL_PATH修改为${BITBUCKET_CLONE_DIR}(不带末尾的/*),以上排除规则依然有效,不需要做任何调整。

可选验证步骤

如果需要确认排除规则是否正确传递,可临时在pipe执行前添加变量打印命令排查:

script:
  - echo "Expected exclude args: --exclude=vendor --exclude=.env"
  - pipe: atlassian/scp-deploy:1.0.1
    variables:
      # 其他变量保持原有配置不变
      USER: $USER
      SERVER: $SERVER
      REMOTE_PATH: '/tmp/deploy'
      LOCAL_PATH: '${BITBUCKET_CLONE_DIR}/*'
      EXTRA_ARGS: '--exclude=vendor --exclude=.env'

内容的提问来源于stack exchange,提问作者Manish Garotki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 21:06:03