私はジェンキンスの仕事を見て、それを理解しようとしています。
ビルドシェルセクションにシェルの実行コマンドボックスがあります。
_> mkdir mydir
> cd mydir
>
> svn export --force https://example.com/repo/mydir .
_
Jenkinsがそのコマンドの実行を完了し、次のビルドステップに進むとき、その作業ディレクトリは何ですか? _workspece-root/
_または_workspace-root/mydir
_?
次のステップとして、私はトップレベルのMavenターゲットを呼び出すを持っています(まだBuildセクションにあります)。
私が本当に知りたいのは、なぜそれが正常に実行されるのですか?
シェルコマンドボックスの実行後にJenkinsが自動的に_workspace-root/
_フォルダーに戻るためか、次のジョブが「トップレベル」のジョブであるため、Jenkinsが_workspace-root/
_?
各build step
は、Jenkinsが生成する個別のプロセスです。現在のディレクトリも、build step
内で設定/変更された環境変数も共有しません。新しいbuild step
はそれぞれ、親プロセス(Jenkinsを実行しているプロセス)から新しいプロセスを生成することから始まります。
Jenkinsが$WORKSPACE
に「戻る」わけではありません。 Jenkins discards前のセッションです。
CWDを印刷すると、Project_NAMEが表示されることを最近知りました。例:D:\ jenkins\workspace\My_Project
実行している可能性のあるスクリプトは見つかりません。したがって、スクリプトを開始する前に「CDパス」を実行できます。
Slav
の説明は非常によく、複数のWindowsバッチコマンドが同じディレクトリで機能している場合でも、実際の例を示すことで補足することを考えました。
REM #ensures that all npm packages are downloaded
cd "%WORKSPACE%"
npm install
REM #performs a prod-mode build of the project
cd "%WORKSPACE%"
ng build --prod --aot=true -environment=pp
したがって、それぞれが現在の作業ディレクトリが現在のプロジェクトディレクトリを指すようにします。