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

