0

Jenkins の仕事で、ローカルとリモートの 2 つのリポジトリをセットアップしました。リモートを定期的にチェックし、変更を検出したらローカルにプッシュし、そこからカスタムの分散テスト システムがテストを制御し、結果を Jenkins に返す計画です。

1つの問題ですべてがうまく機能します。Jenkins を再起動するたびに、ジョブのワークスペースの.git/configファイルからリモート (または天気によってはローカル) リポジトリが削除され、手動で編集する必要があります。

ジョブの構成方法:

  • リポジトリの URL:/path/to/local
  • 名前:localrepo
  • リポジトリの URL:gitolite@someserver:therepo
  • 名前:origin

生成されたものには次の.git/configもののみが含まれます。

[remote "localrepo"]
    fetch = +refs/heads/*:refs/remotes/localrepo/*
    url = /path/to/local

ここで私が間違っていることについてのアイデアはありますか?

4

1 に答える 1

0

Jenkinsgitプラグインを使用していると想定しています。gitプラグインにローカルのgitリポジトリを制御させる必要があり、Jenkinsの背後で手動設定を行わないようにする必要があると思います。

リモートのgitリポジトリを使用してJenkinsジョブを構成する場合、Jenkinsに変更をポーリングさせるか、gitフックスクリプトなどからJenkinsに配信される通知を調整できます。

Jenkinsは、ビルドするように指示したブランチのいずれかで変更を検出すると、Jenkinsワークスペースのgitリポジトリを更新し、ジョブ構成のビルドステップを実行する準備が整います。

ワークスペースのgitリポジトリは、Jenkinsgitプラグインによってやや非標準的な方法で管理されます。gitのファイルがカスタム分散テストシステムに送信される方法を正確に指定しなかったため、Jenkinsワークスペースをそのまま使用できるかどうか、またはさらに何かを行う必要があるかどうかを推測することはできません。

「何が間違っているのか」という質問に実際に答えるには、Jenkinsワークスペースでローカルのgitリポジトリの構成を手動で変更するのをやめ、gitプラグインに管理させる必要があります。これが適切な解決策ではない場合は、gitプラグインの使用を停止する必要があります。

手作業で多くのリポジトリ管理を行っても構わないと思っているようですが、gitプラグインが必要なのは、リモートリポジトリをポーリングすること、つまり変更を検出することだけだと思います。

たとえば、 https ://wiki.jenkins-ci.org/display/JENKINS/script-scmを使用すると、ポーリングとチェックアウトを管理するカスタムスクリプトを作成できます。

もう1つの方法は、ポーリングを忘れて、リモートgitリポジトリのpost-commit-hookスクリプトからジョブの新しいビルドをトリガーすることです。これにより、ジョブ構成でSCMに「なし」を指定し、ローカルリポジトリ管理を完全に制御できるようになります。

私自身、おそらくJenkins gitプラグインと連携して、ローカルのgitリポジトリをそのまま使用できるかどうかを確認します。gitプラグインは、各ビルドでの変更のリストのようないくつかの素晴らしいものを提供します。これは、ジョブにSCMがない場合にはありません。

于 2012-07-03T20:50:10.303 に答える