如何在多行“脚本”步骤中中断单个命令

Ad *_*d N 6 yaml azure-pipelines

我们有一个使用 Azure Pipeline 的项目,依赖于azure-pipelines.yml存储库根目录中的文件。

实现一个script步骤时,可以在同一步骤中执行连续的命令,只需将它们写在不同的行上即可:

- script: |
  ls -la
  pwd
  echo $VALUE
Run Code Online (Sandbox Code Playgroud)

然而,如果我们有一个很长的命令,我们希望能够在 YAML 文件中将其分成几行,但却找不到相应的语法?

Lam*_* Le 10

您没有指定您的代理操作系统,因此我在 和 上进行了windows-latest测试ubuntu-latest。请注意,脚本任务在这两种环境中的运行方式略有不同。在 Windows 上,它使用 cmd.exe。在 Ubuntu 上,它使用 bash。因此,您必须使用正确的语法。

在 Windows 上:

pool:
  vmImage: 'windows-latest'

steps:
- script: |
    mkdir ^
    test ^
    -p ^
    -v
Run Code Online (Sandbox Code Playgroud)

在Ubuntu上:

pool:
  vmImage: 'ubuntu-latest'

steps:
- script: |
    mkdir \
    test \
    -p \
    -v
Run Code Online (Sandbox Code Playgroud)

上面这两个文件适用于我的 Azure DevOps。


Ad *_*d N 4

目前,我们发现在多行上中断单个命令的唯一方法是使用YAML 折叠样式

- script: >
    echo
    'hello world'
Run Code Online (Sandbox Code Playgroud)

这都是关于替换|>.

笔记:

  • 不可能在以下行中引入额外的缩进例如,尝试对齐给定命令的所有参数会破坏该行为。
  • 此样式将用简单的空格替换提供的值中的换行符。这意味着脚本现在只能包含单个命令(也许\n在行尾添加文字实际上会在字符串中引入换行符,但与自动换行符的常用方法相比,除非添加显式延续,否则感觉落后)。