TFS 2015 のリリースで bash スクリプトを実行しようとしています。そのために、「シェル スクリプト」ジョブを使用しています。
コンテンツ:
#!/bin/bash
echo "Start SSH"
ssh user@ip << EOF
echo "Unzip"
unzip -o -d A B.zip
rm B.zip
cp -r A/. B
rm -rf A
echo "Finished"
EOF
私は bash でスクリプトを試しましたが、正常に動作しました。しかし、リリースを実行すると次のようになります:
2018-08-29T09:04:08.7988672Z タスクを開始: シェル スクリプト $(System.DefaultWorkingDirectory)/Build Magento/magento/scripts/build.sh 2018-08-29T09:04:08.7988672Z 作業フォルダーをデフォルトに設定: D:\AgentA\tasks\ShellScript\1.0.17
2018-08-29T09:04:08.9863750Z ##[デバッグ]パスを確認: D:\AgentA\tasks\ShellScript\1.0.17\task.json
2018-08-29T09:04:08.9863750Z ##[デバッグ]リソース ファイルを次のように設定: D:\AgentA\tasks\ShellScript\1.0.17\task.json
2018-08-29T09:04:08.9863750Z ##[debug]system.culture=en-US
2018-08-29T09:04:08.9863750Z ##[debug]次の場所から文字列を読み込みます: D:\AgentA\tasks\ShellScript\1.0.17\task.json
2018-08-29T09:04:08.9863750Z ##[debug]次の場所から loc 文字列を読み込みます: D:\AgentA\tasks\ShellScript\1.0.17\Strings\resources.resjson\en-US\resources.resjson 2018-08-29T09:04:08.9863750Z ##[デバッグ]パスの確認: null
2018-08-29T09:04:08.9863750Z ##[デバッグ]文字列の読み込み元: D:\AgentA\tasks\ShellScript\1.0.17\node_modules\vsts-task-lib\lib.json 2018-08-29T09:04:08.9863750Z ##[デバッグ]loc 文字列の読み込み元: D:\AgentA\tasks\ShellScript\1.0.17\node_modules\vsts-task-lib\Strings\resources.resjson\en-US\resources.resjson 2018-08-29T09:04:08.9863750Z ##[デバッグ]タスク結果: 失敗
2018-08-29T09:04:08.9863750Z 見つかりません bash: null
2018-08-29T09:04:09.0019981Z タスクの終了: ShellScript
2018-08-29T09:04:09.0176245Z ##[error]タスク ShellScript が失敗しました。これによりジョブが失敗しました。詳細については、タスクのログを参照してください。
結局、Bash は TFS 2015 には搭載されないのでしょうか?
答え1
そこで、回避策があります。CommandLine-Job で Plink を使用しています。ジョブは Plink を呼び出し、Plink はターゲットに接続して指定されたコマンドを実行します。Plink.exe は TFS 上にある必要があります。