Mar*_*arc 3 azure-devops yarnpkg
我们看到一个奇怪的问题,块yarn
中的任何命令script
都会在yarn命令之后终止该脚本块。
steps:
- script: |
echo "*********1*********"
cd D:\my\src
echo "*********2*********"
yarn add --dev jest-junit
echo "*********3*********"
yarn test:unit --silent --ci --reporters=jest-junit
echo "*********4*********"
Run Code Online (Sandbox Code Playgroud)
将产生以下输出:
"*********1*********"
"*********2*********"
yarn add v1.16.0
[1/4] Resolving packages...
...
Done in 107.91s.
Finishing: CmdLine
Run Code Online (Sandbox Code Playgroud)
所以我们永远无法到达echo "*********3*********"
即使是像这样简单的事情:
- script: |
echo "Start"
yarn -v
echo "We never get here"
Run Code Online (Sandbox Code Playgroud)
看起来 Cmdline 任务在第一个纱线任务之后就停止了。
这是在本地 Windows Server 2016 上运行的。如果我们在 ubuntu 虚拟机上运行相同的脚本,它可以正常工作。
问题是这yarn
不是可执行文件,而是批处理文件。
根据文档call
,调用批处理文件时应该使用:
Azure Pipelines 将内联脚本内容放入临时批处理文件 (.cmd) 中以便运行它。当您想在 Windows CMD 中从另一个批处理文件运行一个批处理文件时,必须使用 call 命令,否则第一个批处理文件将终止。这将导致 Azure Pipelines 运行预期的脚本,直到第一个批处理文件,然后运行该批处理文件,然后结束该步骤。第一个脚本中的其他行将不会运行。在 Azure Pipelines 脚本步骤中执行批处理文件之前,应始终预先添加调用。
所以在你的情况下,yarn ...
应该改为call yarn ...
归档时间: |
|
查看次数: |
1960 次 |
最近记录: |