web-dev-qa-db-ja.com

Hudsonを使用して特定のgitコミットをビルドする

ハドソンビルドサーバーがあります。ソースコードはgitリポジトリによって管理されます。ビルドごとに最新バージョンがチェックアウトされ、コンパイルされます。ここで、ハドソンに最新バージョンではなく、古いバージョンのコード(私が指定)を使用するように伝えたいと思います。

ハドソンでは、設定可能な2つのパラメーターがあります。最初の「リポジトリの名前」、デフォルト値は「Origin」、2番目のrefspecは値+refs/heads/*:refs/remotes/Origin/*。私はOrigin/[commitid]または+refs/heads/*:refs/remotes/Origin/[commitid]。しかし、期待どおりに機能するものはありませんでした。

私は、パラメーター化されたジョブを使用しなければならなかったと思うので、ジョブのパラメーターとしてコミットを与えることができます。

最新のコミットではなく特定のコミットを使用するようにハドソンに伝えるにはどうすればよいですか?

36
Bernd

this より明確に答えたいだけです。特定のコミットをチェックアウトするジョブをステップバイステップで作成する方法:

  1. 名前を使用してジョブに文字列パラメーターを追加します。私の例ではCOMMITとします。
  2. SCMとしてGitを選択します( Jenkins Gitプラグイン で提供)。
  3. Git SCMプロパティでレポジトリプロパティを設定します。
  4. Git SCMの段落に、構築するブランチと入力します${COMMIT}これは、ジョブパラメータへの参照であり、ビルド中に解決されます。

それだけです。ビルドを起動すると、ログに次のような内容が表示されます。

Cloning the remote Git repository
Cloning repository ssh://your-repo.git
Fetching upstream changes from ssh://your-repo.git
using GIT_SSH to set credentials 
Fetching upstream changes from ssh://your-repo.git
using GIT_SSH to set credentials 
Checking out Revision af63e2102b65953316e512c0bb659578bb143a33 (detached)

SCMチェックアウトの前に環境変数を設定する他の方法、つまりPrepare environment for the runEnvInjectプラグイン からのステップ(これにはGroovyを使用することもできます)。

また、私が話しているオプションが表示されない、または機能しない場合は、Gitプラグインの新しいバージョンがあることを確認してください。私の場合は2.2.0です。

57
izzekil

jenkins-git-plugin のbranchパラメーターを使用して、特定のコミットIDを定義できます。

ジェンキンスは、そのコミットのみをチェックアウトし、ブランチのヘッドはチェックアウトしません。

9
lkimmel

ドキュメントが言うように:

git plugin branch configure

コミットIDを「構築するブランチ」設定に入力します。

7
linkaipeng

1つの回避策は次のとおりです。

  • gitプラグインを設定して特別な「build_br" ブランチ。
  • ブランチをリセットbuild_br期待されるコミットに
  • そのブランチをプッシュbuild_br JenkinsまたはHudsonによるリモートリポジトリモニター(これはPush --force、「 git reset --hardおよびリモートリポジトリ ")

そのようにして、そのブランチを構築するbuild_brは特定のコミットをビルドすることを意味し、GIT_COMMITは正しく設定されます。
この特別なブランチは、ビルドする必要があるコミットに定期的にリセットされるため、開発は行わないでください。

4
VonC

「Pre Steps」で「Execute Shell」を追加して、以下を追加してください:

   git pull
   git checkout <commit version>
4
Andrzej Jozwik

Hudsonジョブを設定して、特定のブランチを構築できます。次に、Hudsonがそのブランチに構築したい変更をプッシュできます。

2
Dave Bacher

ハドソンについてはわかりませんが、JenkinsのGitプラグインには[リポジトリブラウザ]フィールドのすぐ上に[詳細...]ボタンがあります。そこをクリックすると、多くの追加オプションが表示されます。そのうちの1つは「チェックアウト/ローカルブランチへのマージ(オプション)」です。ヘルプテキストには、「指定されている場合、このブランチでHEADとしてビルドするリビジョンをチェックアウトしてください。これはサブモジュールでテストされていないことに注意してください。 。

1
sschuberth