ハドソンビルドサーバーがあります。ソースコードはgitリポジトリによって管理されます。ビルドごとに最新バージョンがチェックアウトされ、コンパイルされます。ここで、ハドソンに最新バージョンではなく、古いバージョンのコード(私が指定)を使用するように伝えたいと思います。
ハドソンでは、設定可能な2つのパラメーターがあります。最初の「リポジトリの名前」、デフォルト値は「Origin」、2番目のrefspec
は値+refs/heads/*:refs/remotes/Origin/*
。私はOrigin/[commitid]
または+refs/heads/*:refs/remotes/Origin/[commitid]
。しかし、期待どおりに機能するものはありませんでした。
私は、パラメーター化されたジョブを使用しなければならなかったと思うので、ジョブのパラメーターとしてコミットを与えることができます。
最新のコミットではなく特定のコミットを使用するようにハドソンに伝えるにはどうすればよいですか?
this より明確に答えたいだけです。特定のコミットをチェックアウトするジョブをステップバイステップで作成する方法:
COMMIT
とします。${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 run
EnvInjectプラグイン からのステップ(これにはGroovyを使用することもできます)。
また、私が話しているオプションが表示されない、または機能しない場合は、Gitプラグインの新しいバージョンがあることを確認してください。私の場合は2.2.0です。
jenkins-git-plugin のbranchパラメーターを使用して、特定のコミットIDを定義できます。
ジェンキンスは、そのコミットのみをチェックアウトし、ブランチのヘッドはチェックアウトしません。
ドキュメントが言うように:
コミットIDを「構築するブランチ」設定に入力します。
1つの回避策は次のとおりです。
build_br
" ブランチ。build_br
期待されるコミットにbuild_br
JenkinsまたはHudsonによるリモートリポジトリモニター(これはPush --force
、「 git reset --hard
およびリモートリポジトリ ")そのようにして、そのブランチを構築するbuild_br
は特定のコミットをビルドすることを意味し、GIT_COMMITは正しく設定されます。
この特別なブランチは、ビルドする必要があるコミットに定期的にリセットされるため、開発は行わないでください。
「Pre Steps」で「Execute Shell」を追加して、以下を追加してください:
git pull
git checkout <commit version>
Hudsonジョブを設定して、特定のブランチを構築できます。次に、Hudsonがそのブランチに構築したい変更をプッシュできます。
ハドソンについてはわかりませんが、JenkinsのGitプラグインには[リポジトリブラウザ]フィールドのすぐ上に[詳細...]ボタンがあります。そこをクリックすると、多くの追加オプションが表示されます。そのうちの1つは「チェックアウト/ローカルブランチへのマージ(オプション)」です。ヘルプテキストには、「指定されている場合、このブランチでHEADとしてビルドするリビジョンをチェックアウトしてください。これはサブモジュールでテストされていないことに注意してください。 。