Azure Pipelines ではスクリプトを実行するためのツールとして、 Windows の CMD.exe や PowerShell など、いくつかのコマンドラインツールを利用することができます。 Windows だけではなく、 Linux 、 MacOS など、様々な OS 上で実行できるようなパイプラインを構築する場合、コマンドラインツールとして Bash を選択するケースがあるかと思います*1。 MS-Hosted のビルドマシンを使う分には、何も気にせず Bash を使えるのですが、 Windows OS のビルドマシンを自前で準備して使用する場合、ちょっとした注意が必要です。
よく見るエラーとその原因
自前のビルドマシンを構築して、以下のようなビルドパイプラインを実行してみましょう。
trigger: none pool: name: '<Agent Pool の名前>' steps: - task: Bash@3 inputs: targetType: 'inline' script: | echo 'Hello world'
このようなシンプルな Bash のタスクを実行すると、以下のようなエラーが出ることがあります。
##[error]Unable to locate executable file: 'bash'. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`
これ、単純に Bash へのパスが通っていないことが原因です。
最も簡単な解消方法
Bash が使えるようにパスを通せばよいのです。 WSL2*2 をインストールするのでもよいのですが、もっと簡単にやるなら、きっとインストールしているであろう Git for Windows にくっついてくる Bash のエミュレーターを使う方法がお手軽です。
Git for Windows をインストールすると、何も変更しなければ以下の場所に Bash のエミュレーターがインストールされます。
C:\Program Files\Git\bin\bash.exe
このパスを PATH 環境変数に追加してあげましょう。
環境変数への追加後、ビルドエージェントを再起動して、追加した PATH を再読み込みすることで、先ほどのエラーが解消するはずです。