web-dev-qa-db-ja.com

シェルコマンドボックスを実行した後のJenkinsの作業ディレクトリは何ですか?

私はジェンキンスの仕事を見て、それを理解しようとしています。

ビルドシェルセクションにシェルの実行コマンドボックスがあります。

_> 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/_?

13
Christian

build stepは、Jenkinsが生成する個別のプロセスです。現在のディレクトリも、build step内で設定/変更された環境変数も共有しません。新しいbuild stepはそれぞれ、親プロセス(Jenkinsを実行しているプロセス)から新しいプロセスを生成することから始まります。

Jenkinsが$WORKSPACEに「戻る」わけではありません。 Jenkins discards前のセッションです。

18
Slav

CWDを印刷すると、Project_NAMEが表示されることを最近知りました。例:D:\ jenkins\workspace\My_Project

実行している可能性のあるスクリプトは見つかりません。したがって、スクリプトを開始する前に「CDパス」を実行できます。

Slavの説明は非常によく、複数のWindowsバッチコマンドが同じディレクトリで機能している場合でも、実際の例を示すことで補足することを考えました。

コマンド1

REM #ensures that all npm packages are downloaded
cd "%WORKSPACE%"
npm install

コマンド2

REM #performs a prod-mode build of the project
cd "%WORKSPACE%"
ng build --prod --aot=true -environment=pp

したがって、それぞれが現在の作業ディレクトリが現在のプロジェクトディレクトリを指すようにします。

0
Alexei