4

私のチームは最近、過去数か月で3つのテクノロジーすべてに切り替え、それを稼働させるために一生懸命取り組んできました。次のステップは、変更ログを自動化することです。JIRAに、githubコミットメッセージでタグ(例:TAG-123)を探すように設定しました。Jenkinsは、5分のタイマーでGitHubのコミットを監視し、プル、ビルドなどを行います。

私が見たいのは、ビルドが「本番環境に昇格」としてマークされたときに自動的に生成される変更ログです。私はそれが次のようなことをするのを見たいです:

  • Jenkinsに本番リリースとしてマークされた以前のビルドを照会し、対応するgitcommitSHA1を取得します。
  • 現在のGitコミットと前のコミットの間に差分を実行します
  • 参照されているすべてのJIRAチケットを検索する
  • JIRAタイトルのリストをコンパイルする
  • リストをテキストファイルにエクスポートしてビルドドロップに配置します(Jenkinsから直接アクセスできる場合はボーナス)

このフローが記述どおりに実行されるかどうかは関係ありません。私は最終結果を求めており、車輪の再発明を検討していません。確かに、誰かが以前にこのようなことをしたのでしょうか。

再発明に関する限り、https://wiki.jenkins-ci.org/display/JENKINS/Promoted+Builds+Pluginを見つけることができました。これにより、誰かが本番環境へのプロモートアクションに便乗して別のスクリプトを実行できます。 。次に、上記を実行するための機能を収集する必要があります。(また、Jenkinsが現在のGitHubコミットにタグを付けることができることに気付きました。これは、私のチームが追加で行う可能性があります。)

これを達成することに近いものは何でも大歓迎です。

ありがとうございました!

4

2 に答える 2

2

私たちのチームの誰もこれに専念するための余分な時間がなかったので、私たちは迅速な解決策を一緒に投げることになりました。

プロセス

  1. Jenkins用のAllChangesプラグインをインストールしてセットアップします。
  2. リリース時には、前のビルドの横に星を付ける「ビルドプロモーション」システムを使用しているため、履歴を見てビルド番号を簡単に確認できます。
  3. すべての変更からの関連する出力をコピーして、notepad ++(human-diff'ing ftw!)のようなものに貼り付けます。
  4. 正規表現の検索/置換を実行します。正規表現文字列を検索し、空の文字列に置き換えます。(以下-ビッグバンオプションまたは理解しやすいように分割されたオプションがあります。)
  5. 現在合意されている標準である形式を問わず、手動で整理してリリースします。

一度にすべて

(\s*\(commit:\s[a-z0-9]{40}.\s..detail)|([\r][\n]#.*\B[\r][\n][\r][\n])|(^[ \t]*)

コミットハッシュを削除する\s*\(commit:\s[a-z0-9]{40}.\s..detail

時間と周囲の改行を削除します[\r][\n]#.*\B[\r][\n][\r][\n]

先頭の空白を削除する^[ \t]*

解析

長所

  • 全体的に効果的
  • 実装が比較的速い

短所

  • 完全に自動化されていません。
  • 複数のJenkinsジョブから解放する場合は、コミットIDに戻す必要があります。
  • すべての変更履歴は、Jenkinsの仕事までさかのぼるように見えます(これの詳細については誤解される可能性があります。ある時点で、このようなものに対する小さな不満を覚えています)。

全体として、短所はやや「獣の性質」です。他の解決策を読みたいと思います。(もちろん、時間と呼ばれるとらえどころのないものがあるときのために!)

于 2013-05-27T20:47:49.417 に答える
1

課題追跡システムに依存する代わりに、プルリクエスト自体を純粋に使用することもできます。私たちにとって、彼らはリリースノートを生成するのに十分なコンテキストを持っていて、分類にはラベルを使用しました。PullRequestReleaseNotesを作成しましたので、お試しください。GitHub、GitLab、BitBucket、TFSをサポートし、マージされたプルリクエストとそのラベルからマークダウンでリリースノートを生成し、オプションでAtlassian Confluenceページに投稿し、投稿としてSlackチャネルに投稿できます。継続的インテグレーションの一部として実行できます。サンプルは次のとおりです。

1.2.1(マスター)-XX XXX 2016

機能強化

カテゴリーA

  • 素晴らしい新機能#1854

修正

カテゴリーZ

  • ウィジェット#1792の問題を修正しました

カテゴリーY

  • ウィジェット#1792の問題を修正しました
  • ビューレイアウト#1848の例外を修正しました
于 2016-06-21T17:00:48.523 に答える