ワーキングディレクトリとは? シェルの現在のフォルダ
ワーキングディレクトリ(またはカレントディレクトリ)は、プロセスが自身の位置として扱うフォルダであり、相対パスが解決される基準となる基点です。
すべてのプロセスには現在のワーキングディレクトリ、つまりそのプロセスが「いる」フォルダがあります。./buildのような相対パスはそこから解釈されます。CIでは、ワーキングディレクトリは非常に重要です。ファイルがどこにあるかを決定し、step間でリセットされることがあり、そのままだと想定していたスクリプトを驚かせます。
ワーキングディレクトリとは何か
それはプロセスが現在とみなすディレクトリです。src/index.jsのような相対パスは、それをワーキングディレクトリに結合することで解決されます。各プロセスは親から継承した独自のものを持ちます。
確認と変更
pwdコマンドは現在のワーキングディレクトリを表示し、cdはそれを変更します。cdは現在のシェルにのみ影響するため、あるプロセスでの変更は別のプロセスを変えません。
なぜ重要か
- 相対パスは完全にそれに依存します。
- 誤ったワーキングディレクトリは「ファイルが見つかりません」エラーを引き起こします。
- サブシェル内での
cdは親には持続しません。
相対対絶対
絶対パスはワーキングディレクトリを無視し、相対パスはそれに依存します。堅牢である必要のあるスクリプトは、驚きを避けるためにあらかじめ絶対的なベースパスを計算することがよくあります。
CIにおけるワーキングディレクトリ
CIは各stepを定義されたワーキングディレクトリ、多くの場合リポジトリのルートで実行します。あるstepでのcdは次には引き継がれません。各stepが新しいシェルだからです。前のcdに頼るのではなく、stepのworking-directory設定または絶対パスを使いましょう。
マネージドrunnerでの予測可能なパス
Latchkeyのrunnerでは、各stepは既知のワーキングディレクトリで始まります。ディレクトリの変更はstep間で生き残らないため、stepごとにワーキングディレクトリを明示的に設定するか、信頼できるファイルアクセスのために絶対パスを使いましょう。
重要なポイント
- ワーキングディレクトリは、プロセスが現在として扱うフォルダです。
- 相対パスはそれに対して解決されます。誤ったcwdはファイルが見つからないエラーを引き起こします。
- CIではstep間でcwdがリセットされるため、stepごとに設定するか絶対パスを使いましょう。