このタスクを使用して、macOS、Linux、または Windows で Bash スクリプトを実行します。
手記
Windows ホストでは、WSL の既定のディストリビューションから bash が実行されます。 WSL をインストールし、エージェントを実行するユーザーにディストリビューションのセットアップが必要です。 WSL は、Microsoft がホストする Windows エージェント イメージにインストールされます。 詳細については、「Microsoft でホストされるエージェントの - ソフトウェア」を参照してください。
構文
# 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.
入力
targetType
-
型の
string。 使用できる値: filePath (ファイル パス)、inline。 既定値: filePath.
ターゲット スクリプトの種類: ファイル パスまたはインライン。
filePath
-
スクリプト パスの
string。
targetType = filePathする場合に必要です。
実行するスクリプトのパス。 これは、完全修飾パスであるか、$(System.DefaultWorkingDirectory)に対する相対パスである必要があります。
arguments
-
引数
string。 随意。
targetType = filePathするときに使用します。
シェル スクリプトに渡される引数。 序数パラメーターまたは名前付きパラメーター。
script
-
スクリプト
string。
targetType = inlineする場合に必要です。 既定値: # Write your commands here\n\necho 'Hello world'.
スクリプトの内容。
workingDirectory
-
作業ディレクトリの
string。
コマンドを実行する作業ディレクトリを指定します。 空のままにすると、作業ディレクトリは $(Build.SourcesDirectory) 。
標準エラーで失敗する failOnStderr -
boolean。 既定値: false.
これが true の場合、エラーが StandardError ストリームに書き込まれた場合、このタスクは失敗します。
bashEnvValue
-
環境変数の値BASH_ENV設定
string。
入力が指定されている場合、その値は展開され、スクリプトを実行する前に実行するスタートアップ ファイルのパスとして使用されます。 環境変数 BASH_ENV が既に定義されている場合、タスクはこの変数を現在のタスクに対してのみオーバーライドします。 Bash スタートアップ ファイル の詳細を確認します。
noProfile
-
プロファイルのスタートアップ/初期化ファイルを読み込まない
boolean。 既定値: true.
システム全体のスタートアップ ファイル /etc/profile または個人の初期化ファイルを読み込まない。
noRc - **true~/.bashrc' initialization file**<br> . Default value: ブール値を読み取りません。
タスク コントロールのオプション
すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「コントロール オプションと一般的なタスク プロパティを参照してください。
出力変数
何一つ。
備考
bash タスクには、YAML のショートカットがあります。steps.bash。
steps:
- bash: string # Required as first property. An inline script.
## Other task inputs
Bash タスクは、システム上の最初の Bash 実装を見つけます。
Linux/macOS または Windows で which bashwhere bash を実行すると、どれを選択するかを把握できます。
Bash スタートアップ ファイルに関する情報
Bash タスクは、非対話型の非ログイン シェルとして Bash を呼び出します。 Bash が非対話形式で起動されると、シェル スクリプトを実行するために、Bash は環境内で BASH_ENV 変数を検索し、その変数が存在する場合はその値を展開し、その値を読み取りおよび実行するファイルの名前として使用します。
パイプラインで BASH_ENV 環境変数を定義するには、いくつかのオプションがあります。 まず、BASH_ENV 環境変数をパイプライン変数として設定できます。 この場合、Bash タスクの各インスタンスは、BASH_ENV 変数の値を展開し、その値を使用しようとします。
variables:
BASH_ENV: "~/.profile"
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: env
もう 1 つのオプションは、Bash タスクの特定のインスタンスに対して BASH_ENV を設定することです。これを行うには、次の 2 つの方法があります。
最初の方法は、bashEnvValue タスク入力を使用することです。参照用の例を参照してください。
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: env
bashEnvValue: '~/.profile'
もう 1 つの方法は、BASH_ENV キーワードを使用してパイプライン タスクの環境変数として env 変数を設定することです。次に例を示します。
- task: Bash@3
inputs:
targetType: 'inline'
script: env
env:
BASH_ENV: '~/.profile'
手記
bash タスクで bashEnvValue 入力が定義されている場合、BASH_ENV 環境変数が環境内で既に定義されている場合、パイプライン タスクは bashEnvValue 変数の値を BASH_ENV 入力の値でオーバーライドすることに注意してください。
リポジトリにチェックインされた 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)