来自 DevOps 的 Cross-post:Azure 发布管道使用 Expand-Archive 命令失败
Cross-post from DevOps: Azure Release Pipeline Fails Using Expand-Archive Command
从 https://devops.stackexchange.com/questions/13583/azure-release-pipeline-fails-using-expand-archive-command 交叉发布,因为那里 activity 为零 :(.
上周的某个时候,我们的管道开始使用 Expand-Archive
在“IIS Web 应用程序部署”步骤中打开 .zip
文件,而不是 7-Zip。这似乎不是我们团队完成的,所以我推测这可能已在 DevOps 中更改。
我们正在部署到 Server 2012R2。
我们的几个应用程序对此没有问题,但是一个无法扩展。 似乎 这可能与路径长度有关(此应用程序使用一些非常深的文件夹嵌套 Angular),因为我可以手动 运行如果我缩短目标路径,命令成功。
在服务器上运行失败的命令是:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -NoProfile -NonInteractive -Command "Expand-Archive -Path "C:\azagent\A3\_work\r1\a\thisistheazurejobname\drop\thisisourappsnamex.zip" -DestinationPath "C:\azagent\A3\_work\_temp\temp_web_package_8157628602055582" -Force"
如果我将它减少到:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -NoProfile -NonInteractive -Command "Expand-Archive -Path "C:\azagent\A3\_work\r1\a\thisistheazurejobname\drop\thisisourappsnamex.zip" -DestinationPath "C:\azagent\A3\_work\_temp\short" -Force"
...它似乎工作正常。
显然,我推测这是一个路径长度问题,但证据似乎确实支持它。此外,我重构了 原本 的 7-Zip 命令,它按预期工作:
C:\azagent\A3\_work\_tasks\IISWebAppDeploymentOnMachineGroup_1b467810-6725-4b6d-accd-886174c09bba[=13=].184.0\node_modules\webdeployment-common-v2zipz.exe x -oC:\azagent\A3\_work\_temp\temp_web_package_8157628602055582 C:\azagent\A3\_work\r1\a\thisistheazurejobname\drop\thisisourappsnamex.zip
我查看了此处的建议,发现我们已经在使用以下设置:
https://igorpuhalo.wordpress.com/2019/08/29/overcoming-long-path-problem-in-powershell/
我希望有人知道可能发生了什么变化,可以建议一种直接的方法来回到使用 7-Zip,或者一种方法来制作 Expand-Archive
上班。
IIS Web 应用程序部署任务中的 Expand-Archive 命令默认为 运行。我们无法更改命令以在此任务中使用 7-Zip。
这里是Task source code。它将使用 Powershell。
can suggest a straightforward way to go back to using 7-Zip, or a way to make Expand-Archive to work.
您可以尝试以下两种方法更改为使用 7-zip 或使命令生效:
1.To使用7-zip,需要将IIS web deploy的步骤转换为命令行任务。
步骤如下:
在 Release Log 中,您可以看到 Expand-Archive 命令和 msdeploy 命令。
您可以将这两个命令复制到命令行任务,并将 -source
参数更改为部署命令中的 zip 包路径。
例如:
"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:package='C:\azagent\A4\_work\r32\a\_TEST PROJECT-ASP.NET Core (.NET Framework)-CI (82)\drop\WebApp.zip' -dest:auto -setParam:name='IIS Web Application Name',value='kevin0322' -enableRule:AppOffline -enableRule:DoNotDeleteRule
那你就可以用7-Zip命令来代替第一个Powershell命令了
2.You 可以使用 Powershell 7 而不是 Powershell\v1.0.
这里是the doc关于安装powershell 7
Powershell 7 拥有更强大的功能。参考.
安装Powershell 7并设置系统环境后,任务将使用Powershell 7。
要设置系统环境,您可以导航到 system -> Environment variables
。
从 https://devops.stackexchange.com/questions/13583/azure-release-pipeline-fails-using-expand-archive-command 交叉发布,因为那里 activity 为零 :(.
上周的某个时候,我们的管道开始使用 Expand-Archive
在“IIS Web 应用程序部署”步骤中打开 .zip
文件,而不是 7-Zip。这似乎不是我们团队完成的,所以我推测这可能已在 DevOps 中更改。
我们正在部署到 Server 2012R2。
我们的几个应用程序对此没有问题,但是一个无法扩展。 似乎 这可能与路径长度有关(此应用程序使用一些非常深的文件夹嵌套 Angular),因为我可以手动 运行如果我缩短目标路径,命令成功。
在服务器上运行失败的命令是:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -NoProfile -NonInteractive -Command "Expand-Archive -Path "C:\azagent\A3\_work\r1\a\thisistheazurejobname\drop\thisisourappsnamex.zip" -DestinationPath "C:\azagent\A3\_work\_temp\temp_web_package_8157628602055582" -Force"
如果我将它减少到:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -NoProfile -NonInteractive -Command "Expand-Archive -Path "C:\azagent\A3\_work\r1\a\thisistheazurejobname\drop\thisisourappsnamex.zip" -DestinationPath "C:\azagent\A3\_work\_temp\short" -Force"
...它似乎工作正常。
显然,我推测这是一个路径长度问题,但证据似乎确实支持它。此外,我重构了 原本 的 7-Zip 命令,它按预期工作:
C:\azagent\A3\_work\_tasks\IISWebAppDeploymentOnMachineGroup_1b467810-6725-4b6d-accd-886174c09bba[=13=].184.0\node_modules\webdeployment-common-v2zipz.exe x -oC:\azagent\A3\_work\_temp\temp_web_package_8157628602055582 C:\azagent\A3\_work\r1\a\thisistheazurejobname\drop\thisisourappsnamex.zip
我查看了此处的建议,发现我们已经在使用以下设置: https://igorpuhalo.wordpress.com/2019/08/29/overcoming-long-path-problem-in-powershell/
我希望有人知道可能发生了什么变化,可以建议一种直接的方法来回到使用 7-Zip,或者一种方法来制作 Expand-Archive
上班。
IIS Web 应用程序部署任务中的 Expand-Archive 命令默认为 运行。我们无法更改命令以在此任务中使用 7-Zip。
这里是Task source code。它将使用 Powershell。
can suggest a straightforward way to go back to using 7-Zip, or a way to make Expand-Archive to work.
您可以尝试以下两种方法更改为使用 7-zip 或使命令生效:
1.To使用7-zip,需要将IIS web deploy的步骤转换为命令行任务。
步骤如下:
在 Release Log 中,您可以看到 Expand-Archive 命令和 msdeploy 命令。
您可以将这两个命令复制到命令行任务,并将 -source
参数更改为部署命令中的 zip 包路径。
例如:
"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:package='C:\azagent\A4\_work\r32\a\_TEST PROJECT-ASP.NET Core (.NET Framework)-CI (82)\drop\WebApp.zip' -dest:auto -setParam:name='IIS Web Application Name',value='kevin0322' -enableRule:AppOffline -enableRule:DoNotDeleteRule
那你就可以用7-Zip命令来代替第一个Powershell命令了
2.You 可以使用 Powershell 7 而不是 Powershell\v1.0.
这里是the doc关于安装powershell 7
Powershell 7 拥有更强大的功能。参考
安装Powershell 7并设置系统环境后,任务将使用Powershell 7。
要设置系统环境,您可以导航到 system -> Environment variables
。