shipit-deploy Windows 部署环境搭建指南:Scoop 依赖配置与 rsync 盘符路径问题解析
DevOpsCLICI/CD【免费下载链接】shipitUniversal automation and deployment tool ⛵️项目地址https://gitcode.com/gh_mirrors/sh/shipit点击查看免费下载本文基于 shipit 仓库中的 Windows 部署文档packages/shipit-deploy/docs/Windows.md面向需要在 Windows 环境下运行 shipit-deploy 自动化发布的开发者。读完本文你将掌握如何用 Scoop 安装 OpenSSH、rsync、pshazz 三件套如何正确配置 SSH 私钥路径key如何绕开 Windows 盘符与 rsync 路径约定之间的冲突rsyncFrom并理解每一步背后 shipit-deploy / ssh-pool 的源码实现使配置真正可复制、可验证。为什么 shipit-deploy 在 Windows 上需要特殊准备shipit-deploy 是 Shipit 的部署任务集合其deploy命令会按固定链条依次执行 6 个子任务注册入口见 deploy/index.jsdeploy:init → deploy:fetch → deploy:update → deploy:publish → deploy:clean → deploy:finish其中与 Windows 环境强相关的有两处deploy:fetch在本地 workspace 中执行git init/git fetch/git checkout等本地命令见 fetch.js。deploy:update调用shipit.remoteCopy把构建产物同步到远端服务器底层是本地 rsync ssh 命令见 update.js。也就是说即使目标服务器是 LinuxWindows 客户端本机也必须能跑通ssh、rsync以及脚本执行环境。这正是原文档开头强调 Requires Powershell 的原因shipit-cli 的任务脚本以 shell 脚本形式驱动而 rsync 在 Windows 上的行为又与 Linux 不同因此需要按下面的步骤单独准备环境。第一步用 Scoop 安装基础工具原文档要求通过 Scoop 安装依赖。在 PowerShell 中执行iex (new-object net.webclient).downloadstring(https://get.scoop.sh) set-executionpolicy unrestricted -s cu第二条命令调整当前用户的 PowerShell 执行策略这是 Scoop 安装脚本能正常落地的前提。接着安装三个核心程序scoop install openssh scoop install rsync scoop install pshazz三者的分工工具作用在 shipit 中的用途OpenSSH提供ssh.exe执行shipit.remote()的所有远端命令rsync提供rsync.exedeploy:update阶段把 workspace 增量同步到远端 release 目录pshazz让 PowerShell 能执行类 bash 的命令脚本使 shipit 任务链中的 shell 风格脚本在 PowerShell 环境可运行一个值得注意的底层细节ssh-pool 在发起远端拷贝前会先用which(rsync)探测本机是否支持 rsync见 rsync.js探测失败时会回退到 scp tar 的慢速方案Connection.js。因此务必确保rsync.exe在 PATH 中可被找到否则部署不会报错但会退化。第二步配置 SSH 私钥keyshipit-deploy 通过key配置项指定 SSH 私钥路径README Options 章节。原文档给出的 Windows 写法是key: c:/users/username/.ssh/id_rsa关键点Windows 风格绝对路径必须把反斜杠\替换为正斜杠/。这不是格式洁癖而是由命令拼接方式决定的——key最终会被直接拼进命令行作为 ssh 的-i参数// packages/ssh-pool/src/commands/ssh.js if (key) args [...args, -i, key]见 ssh.js。同一把 key 还会被复用为 rsync 的远端传输通道Connection.rsyncCopy会先用formatSshCommand({ key, ... })生成 ssh 子命令再通过--rsh参数交给 rsync见 Connection.js 与 rsync.js// rsyncCopy 中拼装出的命令形如 // rsync --archive --compress --rsh ssh -i key -o StrictHostKeyChecking... src dest这条拼接逻辑有对应的单元测试佐证例如 rsync.test.js 验证了remoteShell会以--rsh ssh形式出现在命令中。所以key路径写错、或写成含反斜杠的形式会导致 ssh 找不到私钥表现为授权失败或 rsync 反复弹出密码提示。第三步解决 workspace 盘符问题Windows 最大的坑原文档用大量篇幅记录了一个 Windows 特有的矛盾一方面shipit 会把当前盘符作为目录树的根来使用 workspace 路径另一方面rsync 要求源路径里显式带上盘符。原文档作者在项目位于D:盘时逐一尝试过三种workspace写法结果如下workspace 配置项目拷贝位置rsync 表现/workspace/d:\workspace失败rsync 找不到文件夹d:/workspace/d:\workspace失败rsync 找不到文件夹/d/workspace/d:\d\workspacersync 能正常从D:\workspace同步但项目被拷贝到了错误位置这个矛盾在源码里可以找到清晰解释项目拷贝侧deploy:fetch的setupWorkspace直接使用shipit.config.workspace作为 git 仓库初始化目录fetch.js。当 workspace 写成/d/workspace/这种盘符当目录的形式时Node 在d:盘上下文中解析它会落到d:\d\workspace于是出现项目被拷到d:\d\workspace的现象。rsync 同步侧deploy:update的remoteCopy用p.resolve(rsyncFrom, dirToCopy)计算本地源目录并在末尾强制补上/作为 rsync 源路径update.jsconst rsyncFrom shipit.config.rsyncFrom || shipit.workspace const uploadDirPath p.resolve(rsyncFrom, shipit.config.dirToCopy || ) // ... await shipit.remoteCopy(srcDirectory, shipit.releasePath, options)rsync 在 Windows 上把/d/workspace/这类Unix 风格 盘符的路径解释为D:\workspace却完全不认识D:\workspace或裸/workspace/。两侧的路径方言不一致就是文档中所有尝试失败或只成功一半的根源。官方支持的解法rsyncFrom配置项原文档记载作者最终选择了第 1 种写法/workspace/并通过一次源码修改在 PR 中追加了rsyncDrive配置项让 rsync 源路径自动带上盘符解决了 rsync 侧的问题。在当前上游代码中这一能力已经以rsyncFrom配置项的形式落地READMEWhen deploying from Windows, prepend the workspace path with the drive letter. For example/d/tmp/workspaceif your workspace is located ind:\tmp\workspace.也就是说当 workspace 位于d:\tmp\workspace时配置rsyncFrom: /d/tmp/workspaceremoteCopy就会用这个带盘符的 Unix 风格路径去跑 rsync而项目拷贝仍走workspace配置的语义。两者各司其职正好分别满足上面源码分析中的两条路径。相关提示如果启用了shallowClone: truesetupWorkspace会创建一个临时目录并忽略workspace配置fetch.js此时 rsync 源取自该临时目录通常位于系统盘如 C:盘符问题一般不会出现需要跨盘符的固定 workspace 场景才需要rsyncFrom。Windows 下的完整 shipitfile 示例综合原文档与 README 配置示例一个 Windows 环境可运行的配置骨架如下处替换为实际值module.exports shipit { require(shipit-deploy)(shipit) shipit.initConfig({ default: { workspace: /workspace, // shipit 拷贝项目用相对当前盘符解析 rsyncFrom: /d/workspace, // rsync 源路径显式带 D 盘盘符 deployTo: /var/myapp, // 远端部署目录POSIX 风格 repositoryUrl: https://github.com/username/repo.git, branch: master, ignores: [.git, node_modules], keepReleases: 2, key: c:/users/username/.ssh/id_rsa, shallowClone: false, // 使用固定 workspace 时需关闭 keepWorkspace: false, }, staging: { servers: deployyour-server, }, }) }配置会被extendShipit合并默认值并校验缺deployTo会直接抛错见 extendShipit.js。执行部署shipit staging deploy如需回滚使用shipit staging rollback。故障排查ssh 可执行文件冲突原文档 Troubleshooting 一节记录了一个高频问题Rsync 优先使用它自带的ssh.exe。如果安装了 gitbash或其他自带 ssh.exe 的程序要确保 PATH 中默认被使用的ssh.exe是 rsync 目录下的那一个。提示可以把 rsync 的安装目录放到 PATH 最前面来实现。结合源码可以解释为什么会这样如前所述rsync 的远端通道是通过--rsh参数注入的 ssh 命令rsync.jsrsync 子进程启动 ssh 时按PATH 搜索顺序解析可执行文件若 PATH 里 Git for Windows 的ssh.exe排在前面就会出现shipit 直连 ssh 正常、rsync 同步时却报 host key 异常/反复要密码之类的错位现象因为两个 ssh 客户端各自维护known_hosts与配置。解决办法就是文档给出的保证 rsync 自带的ssh.exe在 PATH 中优先级最高。小结Windows 部署检查清单PowerShell 已安装 Scoop并执行过set-executionpolicy unrestricted -s cuscoop install openssh、scoop install rsync、scoop install pshazz均完成where rsync能找到 rsync 目录下的rsync.exekey使用正斜杠的 Windows 绝对路径且对应私钥对部署服务器可用workspace与rsyncFrom分开配置前者决定项目拷贝位置后者以/d/...形式为 rsync 提供带盘符的源路径PATH 中 rsync 目录的ssh.exe优先于其他 ssh 客户端用shipit staging deploy走完整任务链验证关注deploy:fetch的 workspace 日志与deploy:update的 rsync 输出。以上步骤与配置项均可在仓库中交叉验证环境要求来自 Windows 部署文档配置语义来自 shipit-deploy README命令拼接行为来自 ssh-pool 命令构建器 及其测试用例。赞分享DevOpsCLICI/CD【免费下载链接】shipitUniversal automation and deployment tool ⛵️项目地址https://gitcode.com/gh_mirrors/sh/shipit点击查看免费下载相关推荐Shipit Windows 部署实战指南shipit-deploy 在 Windows 下的环境准备、key 与 workspace 盘符配置Shipit Windows 部署实战指南shipit deploy 在 Windows 下的环境准备、key 与 workspace 盘符配置 本文基于仓库DevOpsCLICI/CD解决Windows环境依赖噩梦Scoop容器化部署完全指南解决Windows环境依赖噩梦Scoop容器化部署完全指南 你是否还在为Windows开发环境的依赖冲突而头疼团队协作时在我电脑上能运行是否已成常态开发工具CLI新手必看7-Zip命令行完全上手教程10分钟掌握高效压缩技巧新手必看7 Zip命令行完全上手教程10分钟掌握高效压缩技巧 7 Zip是一款功能强大的开源压缩工具支持多种压缩格式通过命令行操作可以实现高效的文件压缩文档前端上一篇oh-my-hermes egress attempts 预写日志指南1 条记录如何防止 AI Agent 外部副作用失控下一篇终极窗口分辨率控制指南用SRWE轻松突破游戏窗口限制创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

双串电池主动均衡系统设计:硬件拓扑与均衡策略详解

双串电池主动均衡系统设计:硬件拓扑与均衡策略详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 2:58:33 阅读更多 →
谁是我们成长的真正动力?

谁是我们成长的真正动力?

前言如果你刷过陶白白的视频,一定听过这句被无数人奉为圭臬的话:"人这辈子真正的动力,从来都不是来源于热爱,而是来源于痛苦。"很多人初听觉得反鸡汤、扎心,但仔细回想自己的人生经历,却发现无比…

2026/10/15 2:58:33 阅读更多 →
掌控感心理学解析:人类最底层的心理需求

掌控感心理学解析:人类最底层的心理需求

什么是真正的掌控感?从心理学到人生哲学的完整指南 掌控感是人类核心心理需求之一,其水平显著影响个体的心理状态、生理健康、认知表现与社会功能。本文基于心理学三大经典理论及神经科学研究成果,系统阐述掌控感的定义、作用机制与常见认知误区,提出一套可操作的健康掌控感…

2026/10/15 2:57:32 阅读更多 →

最新新闻

Natron ErodeSmooth 节点完全指南:归一化功率加权腐蚀/膨胀滤镜的参数解析与源码级解读

Natron ErodeSmooth 节点完全指南:归一化功率加权腐蚀/膨胀滤镜的参数解析与源码级解读

音视频视频处理图形学桌面应用 【免费下载链接】Natron Open-source video compositing software. Node-graph based. Similar in functionalities to Adobe After Effects and Nuke by The Foundry. 项目地址: https://gitcode.com/gh_mirrors/na/Natron 点击查看 …

2026/10/15 3:32:41 阅读更多 →
GreaterWMS 移动端构建实战:基于 Quasar CLI 与 Cordova 的 Android 打包安装全流程

GreaterWMS 移动端构建实战:基于 Quasar CLI 与 Cordova 的 Android 打包安装全流程

后端前端企业应用 【免费下载链接】GreaterWMS This Inventory management system is the currently Ford Asia Pacific after-sales logistics warehousing supply chain process . After I leave Ford , I start this project . You can share your vacant warehouse space, …

2026/10/15 3:32:41 阅读更多 →
从Apollo-11代号项目到可复现工程:逆向拆解与改造指南

从Apollo-11代号项目到可复现工程:逆向拆解与改造指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 3:32:41 阅读更多 →
rospack depends1 报错排查:ROS依赖查询与环境变量配置实战

rospack depends1 报错排查:ROS依赖查询与环境变量配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 3:32:41 阅读更多 →
Vue2多页面应用模板:从vue.config.js到webpack配置的完整实践

Vue2多页面应用模板:从vue.config.js到webpack配置的完整实践

简介:Vue 2.0多页面应用模板面向需要同时维护多个独立页面的前端开发场景,旨在解决传统单页应用在官网、专题页等多入口项目中重复搭建构建流程、难以统一工程化配置的问题。资源包共32个文件,压缩后仅31KB,包含15个JavaScript脚本…

2026/10/15 3:32:41 阅读更多 →
NC65销售订单批量导入实战:从数据清洗到SQL脚本全攻略

NC65销售订单批量导入实战:从数据清洗到SQL脚本全攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 3:31:40 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →