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___________
相关产品推荐
相关产品推荐

