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

如何使用Cloud Build Trigger和cloudbuild.yaml将目录部署到FTP/SSH服务器

Cloud Build 部署目录到FTP/SSH服务器完整配置

你已经完成了待上传文件列表的生成,以下分两种部署场景补充后续配置步骤,所有敏感参数请统一在触发器配置中设置为变量,不要硬编码在yaml文件中。

方案1:部署到SSH/SFTP服务器

使用预装rsync和ssh的镜像完成批量同步,需要提前在触发器中配置以下变量:

  • 普通变量:_SSH_HOST(服务器地址)、_SSH_USER(SSH用户名)、_SSH_TARGET_DIR(服务器目标目录)
  • 秘密变量:_SSH_PRIVATE_KEY(SSH登录私钥)

完整cloudbuild.yaml示例:

steps:
  # 你已有的生成待上传文件列表的步骤
  - name: 'ubuntu'
    entrypoint: 'bash'
    args:
      - '-c'
      - |-
        find $_UPLOAD_DIRNAME -exec echo {} >> batch.txt \;
        cat ./batch.txt
    env:
      ...

  # 配置SSH登录权限
  - name: 'ubuntu'
    entrypoint: 'bash'
    args:
      - '-c'
      - |-
        mkdir -p /root/.ssh
        chmod 700 /root/.ssh
        echo "$_SSH_PRIVATE_KEY" > /root/.ssh/id_rsa
        chmod 600 /root/.ssh/id_rsa
        echo -e "Host *\n  StrictHostKeyChecking no\n  UserKnownHostsFile /dev/null" > /root/.ssh/config
    secretEnv: ['_SSH_PRIVATE_KEY']

  # 按文件列表同步到SSH服务器
  - name: 'instrumentisto/rsync-ssh'
    entrypoint: 'bash'
    args:
      - '-c'
      - |-
        rsync -av --files-from=./batch.txt ./ $_SSH_USER@$_SSH_HOST:$_SSH_TARGET_DIR/
    env:
      - '_SSH_USER=$_SSH_USER'
      - '_SSH_HOST=$_SSH_HOST'
      - '_SSH_TARGET_DIR=$_SSH_TARGET_DIR'

方案2:部署到FTP服务器

使用lftp工具完成批量上传,需要提前在触发器中配置以下变量:

  • 普通变量:_FTP_HOST(FTP服务器地址)、_FTP_USER(FTP用户名)、_FTP_TARGET_DIR(服务器目标目录)
  • 秘密变量:_FTP_PASS(FTP登录密码)

完整cloudbuild.yaml示例:

steps:
  # 你已有的生成待上传文件列表的步骤
  - name: 'ubuntu'
    entrypoint: 'bash'
    args:
      - '-c'
      - |-
        find $_UPLOAD_DIRNAME -exec echo {} >> batch.txt \;
        cat ./batch.txt
    env:
      ...

  # 安装lftp并执行批量上传
  - name: 'alpine'
    entrypoint: 'ash'
    args:
      - '-c'
      - |-
        apk add --no-cache lftp
        echo "open $_FTP_HOST" > ftp_batch.txt
        echo "user $_FTP_USER $_FTP_PASS" >> ftp_batch.txt
        echo "cd $_FTP_TARGET_DIR" >> ftp_batch.txt
        # 如FTP服务器需要SSL连接,删除下一行即可
        echo "set ftp:ssl-allow no" >> ftp_batch.txt
        # 遍历待上传文件生成上传指令
        while read -r file; do
          if [ -f "$file" ]; then
            echo "mkdir -p $(dirname "$file")" >> ftp_batch.txt
            echo "put $file -o $file" >> ftp_batch.txt
          fi
        done < batch.txt
        echo "bye" >> ftp_batch.txt
        lftp -f ftp_batch.txt
    env:
      - '_FTP_HOST=$_FTP_HOST'
      - '_FTP_USER=$_FTP_USER'
      - '_FTP_PASS=$_FTP_PASS'
      - '_FTP_TARGET_DIR=$_FTP_TARGET_DIR'

触发器配置注意事项

  • 所有变量都可以在触发器配置页面直接添加、修改,无需调整yaml文件内容
  • 密码、私钥等敏感信息必须设置为秘密变量,避免明文泄露
  • 触发规则可根据需求设置为代码推送到指定分支自动触发,或手动触发

内容的提问来源于stack exchange,提问作者Martin Zeitler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:39:04