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

GitLab CI执行dotnet publish后如何将产物复制到另一部署仓库

完整配置及问题修复方案

可直接使用的流水线配置

publish-to-dev:
  stage: publish-to-dev
  image: mcr.microsoft.com/dotnet/sdk:3.1-focal
  variables:
    # 替换为你自己的部署仓库Git地址,建议用SSH地址配合CI密钥使用
    DEPLOY_REPO: "git@gitlab.example.com:your-group/your-deploy-repo.git"
    # 发布产物输出路径,可自行调整
    PUBLISH_DIR: "./publish_output"
  script:
    # 执行.Net项目发布,输出到指定目录
    - dotnet publish -c Release -o $PUBLISH_DIR
    # 克隆部署仓库到本地deploy目录
    - git clone $DEPLOY_REPO ./deploy
    # 递归复制所有发布产物到部署仓库目录,覆盖旧文件
    - cp -r $PUBLISH_DIR/* ./deploy/
    # 提交变更并推送到部署仓库,触发后续Plesk自动部署
    - cd deploy
    - git config user.name "CI自动部署"
    - git config user.email "ci@yourdomain.com"
    - git add -A
    - git commit -m "部署更新: 源码提交ID $CI_COMMIT_SHORT_SHA"
    - git push

历史报错修复说明

之前执行复制出现的目录忽略错误,是因为Linux默认cp命令仅支持复制文件,不会递归处理子目录。你的发布产物中包含多语言包、runtimes、wwwroot等多个子目录,直接执行不带参数的cp就会抛出该错误导致任务失败。
解决方法仅需要给cp命令添加-r递归参数,即可完整复制所有文件和子目录,通用命令格式如下:

cp -r 你的发布产物目录/* 部署仓库本地目录/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:39:02