質問: 聞きたいこと ------- Jenkinsでジョブを作成し、該当ジョブのワークスペース内に下記スクリプト`sample.sh` 実行すると期待した結果になりません。どなたか教えていただけたら嬉しいです。 スクリプト内容 -------- ``` DIR=$(cd "$(dirname "$0")" && pwd ) echo ${DIR} ``` 期待される結果:/var/lib/jenkins/workspace/job/ 実際に表示される結果:/tmp ジョブが実行されるときに、そのジョブのWorkspace内のスクリプトを実行しているので、 dirnameで出力される結果は、/var/lib/jenkins/workspace/jobのはずなのに、 なぜか/tmpが出力されます。
回答: もしかして記述されているスクリプトをjobプロジェクトの設定の**シェルの実行**の**シェルスクリプト**に記述されていませんでしょうか。**シェルスクリプト**に記述した内容は/tmp配下に一時的なシェルファイルとして作成され、記述した内容が実行されます。 そのため、記述いただいた内容を実行した場合、シェルのディレクトリは/tmpとなります。 それを回避する方法としては、/var/lib/jenkins/workspace/job/にsample.shを配置し、プロジェクト設定の**シェルスクリプト**には./sample.shと記述します。そうすると、期待した結果が得られると思います。 また、DIR変数にワークスペースのパスをセットしたいのであれば、下記を設定の**シェルスクリプト**項目に記述する方法もあります。 ``` DIR=`pwd` echo ${DIR} ```