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

GitLab CI/CD:如何将构建产物部署至服务器目录?

GitLab CI/CD部署构建产物到服务器指定目录

要把pages阶段生成的public目录部署到服务器指定路径,核心是通过SSH类工具完成文件传输,下面是具体的配置方案:

前置准备

先在你的GitLab项目「设置」→「CI/CD」→「变量」中添加以下敏感信息(变量类型选「掩码」避免泄露):

  • DEPLOY_SERVER:目标服务器的IP或域名
  • DEPLOY_USER:服务器的登录用户名
  • DEPLOY_KEY:服务器的SSH私钥(用于免密登录,注意私钥格式要正确)
  • DEPLOY_TARGET_DIR:服务器上的目标部署目录(比如/var/www/html/docs/)

修改后的deploy阶段配置

deploy: 
  stage: deploy
  dependencies:
    - pages
  before_script:
    # 安装SSH和文件同步工具
    - apt update && apt install -y openssh-client rsync
    # 配置SSH免密登录环境
    - mkdir -p ~/.ssh
    - echo "$DEPLOY_KEY" > ~/.ssh/id_rsa
    - chmod 600 ~/.ssh/id_rsa  # SSH要求私钥权限必须是600
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config  # 跳过首次连接的主机验证
  script:
    # 用rsync同步public目录内容到服务器目标路径
    # 注意public/后面的斜杠:表示同步目录内的所有文件,而非整个public目录
    - rsync -avz --delete public/ "$DEPLOY_USER@$DEPLOY_SERVER:$DEPLOY_TARGET_DIR"
  only:
    - DOXYGEN-MASTER 

关键参数说明

  • rsync参数:-a(归档模式,保留文件权限、时间戳等属性)、-v(显示同步详情)、-z(传输时压缩,节省带宽)、--delete(删除目标目录中本地已不存在的文件,保持两端内容一致)
  • 如果服务器使用非默认SSH端口(比如2222),需要修改rsync命令,添加端口指定:
    rsync -avz -e 'ssh -p 2222' --delete public/ "$DEPLOY_USER@$DEPLOY_SERVER:$DEPLOY_TARGET_DIR"
    

内容的提问来源于stack exchange,提问作者0___________

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:32:35