Windows环境下GitHub Actions上传Artifactory服务器报错求助
问题解决方法
问题根源
Windows环境下GitHub Actions默认使用PowerShell,此时curl是Invoke-WebRequest的别名,并非Linux系统中的curl工具,因此-u参数不兼容导致报错;切换到cmd环境后,变量语法、命令工具(如wc)和PowerShell完全不同,原有的$count变量无法识别。
方案1:保留PowerShell环境,使用真正的curl工具
修改Job配置,用curl.exe调用系统原生curl,同时调整行数统计的PowerShell语法:
... - name: Upload with: XXX_USER: ${{ secrets.XXX_USER }} XXX_TOKEN: ${{ secrets.XXX_TOKEN }} run: | # PowerShell中统计git log行数的正确写法 $count = (git log --oneline | Measure-Object -Line).Lines # 调用真正的curl工具,参数和Linux下一致 curl.exe -u${{ secrets.XXX_USER }}:${{ secrets.XXX_TOKEN }} -T xxx "你的Artifactory上传URL" ...
说明:GitHub Actions的Windows runner默认预装curl.exe,直接调用即可匹配预期参数;用Measure-Object -Line替代wc -l,更适配PowerShell的管道输出逻辑。
方案2:切换到cmd环境,适配cmd语法
如果必须使用cmd,调整变量定义和行数统计命令:
... - name: Upload with: XXX_USER: ${{ secrets.XXX_USER }} XXX_TOKEN: ${{ secrets.XXX_TOKEN }} shell: cmd run: | REM cmd中统计git log行数,用findstr替代wc for /f %%i in ('git log --oneline ^| findstr /c:"." /n ^| findstr /r "^[0-9]*:$"') do set count=%%i REM cmd中调用curl,参数逻辑不变 curl -u${{ secrets.XXX_USER }}:${{ secrets.XXX_TOKEN }} -T xxx "你的Artifactory上传URL" ...
说明:cmd环境没有wc工具,用findstr实现行数统计;变量定义使用set count=...,后续引用时需用%count%格式。
内容的提问来源于stack exchange,提问作者RobinM
相关产品推荐
相关产品推荐

