[解決済み] Jenkinsパイプラインで複数のgitレポを同一ジョブでチェックアウトする方法
2023-06-20 20:39:05
質問
私はJenkins Multiple SCMプラグインを使用して、Jenkinsジョブで3つのgitリポジトリを3つのサブディレクトリにチェックアウトしています。それから、3 つのリポジトリすべてから引き出された情報とコードで 1 つの成果物のセットを構築するために、1 つのコマンド セットを実行します。
複数の SCM は現在では非推奨となっており、テキストではパイプラインへの移行が推奨されています。試してみましたが、それを動作させる方法がわかりません。
Jenkinsのジョブディレクトリの最上位から見た気になるディレクトリ構造はこんな感じです。
$ ls
Combination
CombinationBuilder
CombinationResults
これら3つのサブディレクトリには、それぞれ1つのgitレポがチェックアウトされています。複数の SCM で、私は git を使用し、そして "checkout to a subdirectory" という動作を追加しました。以下は、パイプラインスクリプトを使った私の試みです。
node('ATLAS && Linux') {
sh('[ -e CalibrationResults ] || mkdir CalibrationResults')
sh('cd CalibrationResults')
git url: 'https://github.com/AtlasBID/CalibrationResults.git'
sh('cd ..')
sh('[ -e Combination ] || mkdir Combination')
sh('cd Combination')
git url: 'https://github.com/AtlasBID/Combination.git'
sh('cd ..')
sh('[ -e CombinationBuilder ] || mkdir CombinationBuilder')
sh('cd CombinationBuilder')
git url: 'https://github.com/AtlasBID/CombinationBuilder.git'
sh 'cd ..'
sh('ls')
sh('. CombinationBuilder/build.sh')
}
しかし、gitコマンドはワークスペースのトップレベルのディレクトリで実行されるようで(これはある程度意味があります)、構文にもよるとcheckout-to-sub-directoryの動作はないようです。
どのように解決するのですか?
を使用することができます。
dir
コマンドを使用して、サブディレクトリ内のパイプラインステップを実行することができます。
node('ATLAS && Linux') {
dir('CalibrationResults') {
git url: 'https://github.com/AtlasBID/CalibrationResults.git'
}
dir('Combination') {
git url: 'https://github.com/AtlasBID/Combination.git'
}
dir('CombinationBuilder') {
git url: 'https://github.com/AtlasBID/CombinationBuilder.git'
}
sh('ls')
sh('. CombinationBuilder/build.sh')
}
関連
-
undefinedGitのプッシュコードには、! [rejected] master -> master (fetch first) 問題があります。
-
[Gitラーニングノート】Gitのコンフリクト:マージする前に変更をコミットするかstashする。
-
[解決済み] .gitignoreをGitレポにコミットすべき?
-
git push please tell me who you are or git fatal: empty ident name (for <>) not llowed.
-
[解決済み] 複数のgitレポを同じJenkinsワークスペースにチェックアウトする
-
[解決済み] JenkinsのGitプラグイン。特定のタグをビルドするには?
-
[解決済み] フォルダからサブモジュールのリポジトリを作成し、そのgitコミット履歴を保持する
-
[解決済み] Git git reset」後にコミットメッセージを再利用/保持するには?
-
[解決済み] ローカルレポとリモートレポを接続する
-
[解決済み] 以前のコミットにファイルを追加するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
undefinedGitのプッシュコードには、! [rejected] master -> master (fetch first) 問題があります。
-
エラーが発生しました。マージされていないファイルがあるため、プリングはできません
-
Git がエラーを報告しました。現在のブランチの先端が遅れているため、更新が拒否されました。
-
Git エラー: ヒント: リモートにあなたが持っていない作業が含まれているため、更新が拒否されました ヒント: あなたが持っていない作業です。
-
コミットには何も追加されないが、未追跡のファイルが存在する解決策
-
なぜこのマージが必要なのかを説明するコミットメッセージを git に入力してください。
-
[解決済み] シングルブランチクローンを「元に戻す」方法は?
-
[解決済み] なぜGitでコミットする前にステージが必要なのですか?
-
[解決済み] 新サーバーへのGitプッシュ/クローン
-
[解決済み] 以前のコミットにファイルを追加するには?