Bash@3 - Bash v3 任务
使用此任务在 macOS、Linux 或 Windows 上运行 Bash 脚本。
语法
# Bash v3
# Run a Bash script on macOS, Linux, or Windows.
- task: Bash@3
inputs:
#targetType: 'filePath' # 'filePath' | 'inline'. Type. Default: filePath.
filePath: # string. Required when targetType = filePath. Script Path.
#arguments: # string. Optional. Use when targetType = filePath. Arguments.
#script: # string. Required when targetType = inline. Script.
# Advanced
#workingDirectory: # string. Working Directory.
#failOnStderr: false # boolean. Fail on Standard Error. Default: false.
#bashEnvValue: # string. Set value for BASH_ENV environment variable.
# Bash v3
# Run a Bash script on macOS, Linux, or Windows.
- task: Bash@3
inputs:
#targetType: 'filePath' # 'filePath' | 'inline'. Type. Default: filePath.
filePath: # string. Required when targetType = filePath. Script Path.
#arguments: # string. Optional. Use when targetType = filePath. Arguments.
#script: # string. Required when targetType = inline. Script.
# Advanced
#workingDirectory: # string. Working Directory.
#failOnStderr: false # boolean. Fail on Standard Error. Default: false.
#noProfile: true # boolean. Don't load the profile startup/initialization files. Default: true.
#noRc: true # boolean. Don't read the `~/.bashrc' initialization file. Default: true.
# Bash v3
# Run a Bash script on macOS, Linux, or Windows.
- task: Bash@3
inputs:
#targetType: 'filePath' # 'filePath' | 'inline'. Type. Default: filePath.
filePath: # string. Required when targetType = filePath. Script Path.
#arguments: # string. Optional. Use when targetType = filePath. Arguments.
#script: # string. Required when targetType = inline. Script.
# Advanced
#workingDirectory: # string. Working Directory.
#failOnStderr: false # boolean. Fail on Standard Error. Default: false.
输入
targetType
- 类型
string
. 允许的值: filePath
(文件路径) , inline
。 默认值:filePath
。
目标脚本类型:文件路径或内联。
filePath
- 脚本路径
string
. 当 targetType = filePath
时,需要此选项。
要执行的脚本的路径。 这必须是完全限定的路径或相对于 $(System.DefaultWorkingDirectory)
。
arguments
- 参数
string
. 可选。 在 时 targetType = filePath
使用 。
传递给 shell 脚本的参数。 序号参数或命名参数。
script
- 脚本
string
. 当 targetType = inline
时,需要此选项。 默认值:# Write your commands here\n\necho 'Hello world'
。
脚本的内容。
script
- 脚本
string
. 当 targetType = inline
时,需要此选项。 默认值:# Write your commands here\n\n# Use the environment variables input below to pass secret variables to this script
。
脚本的内容。
failOnStderr
- 标准错误失败
boolean
. 默认值:false
。
如果为 true,则如果向流中写入 StandardError
任何错误,则此任务将失败。
bashEnvValue
- 设置BASH_ENV环境变量的值
string
.
如果指定了输入,则其值将展开,并用作运行脚本之前要执行的启动文件的路径。 如果已定义环境变量 BASH_ENV
,则任务将仅针对当前任务重写此变量。 详细了解 Bash 启动文件。
noProfile
- 不加载配置文件启动/初始化文件
boolean
. 默认值:true
。
不要加载系统范围的启动文件 /etc/profile
或任何个人初始化文件。
noRc
- **不要读取 ~/.bashrc' initialization file**<br>
boolean. Default value:
true'。
任务控制选项
除了任务输入,所有任务都有控制选项。 有关详细信息,请参阅 控制选项和常见任务属性。
输出变量
无。
备注
bash 任务在 YAML 中具有快捷方式: steps.bash。
steps:
- bash: string # Required as first property. An inline script.
## Other task inputs
Bash 任务将在系统上找到第一个 Bash 实现。
which bash
在 Linux/macOS 或 where bash
Windows 上运行可让你了解它将选择哪一个。
有关 Bash 启动文件的信息
Bash 任务将 Bash 调用为非交互式、非登录 shell。 以非交互方式启动 Bash 时,为了运行 shell 脚本,Bash 会在环境中查找变量 BASH_ENV
,如果它出现在该处,则会展开其值,并使用 值作为文件的名称进行读取和执行。
有多个选项可用于在管道中定义 BASH_ENV
环境变量。 首先,可以将环境变量设置为 BASH_ENV
管道变量。 在这种情况下,Bash 任务的每个实例将尝试展开变量的值 BASH_ENV
并使用其值。
variables:
BASH_ENV: "~/.profile"
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: env
另一个选项是为 Bash 任务的一个特定实例设置 BASH_ENV
,有两种方法可以做到这一点:
第一种方法是使用 bashEnvValue
任务输入,请参阅参考示例:
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: env
bashEnvValue: '~/.profile'
另一种方法是通过关键字 (keyword) 将变量设置为BASH_ENV
管道任务的env
环境变量,例如:
- task: Bash@3
inputs:
targetType: 'inline'
script: env
env:
BASH_ENV: '~/.profile'
注意
请注意,如果在 bashEnvValue
Bash 任务中定义了输入,则当环境变量已在环境中定义的情况下BASH_ENV
,管道任务将使用输入的值替代BASH_ENV
变量的值bashEnvValue
。
签入存储库的 Bash 脚本应设置为可执行文件 (chmod +x
) 。
否则,任务将显示警告和 source
文件。
示例
可以使用 参数在变量 env
中映射,该参数 在所有任务中通用,并且是要映射到进程环境的其他项的列表。
例如,机密变量不会自动进行映射。 如果你有一个名为 Foo
的机密变量,可以像下面这样将它映射到其中:
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: echo $MYSECRET
env:
MYSECRET: $(Foo)
在 macOS 或 Linux 上,上述示例等效于:
steps:
- script: echo $MYSECRET
env:
MYSECRET: $(Foo)