Tracのワークフローをチケットタイプで分岐する
かぬさんのtwitterでの呟きで知りました。
そうかAdvanceWorkflowのtriage使えばTicketのtypeで分岐できるのか
http://twitter.com/kanu_/status/1516016169
ほほーそんな機能があったのか!!さっそく試してみました。
AdvancedTicketWorkflowPluginをインストールして、trac.iniを以下のように変更。
- [ticket]セクションにTicketWorkflowOpTriageコンポーネントを追加。
[ticket] workflow = ConfigurableTicketWorkflow,TicketWorkflowOpTriage
- [ticket-workflow]セクションを下記のように変更。
- 今回は、チケットをacceptした際に、チケットタイプがdefectの場合はdefect_work->testing->closedというフローになるように分岐させてみた。
- その他のタイプ(task,enhancement)はデフォルト通りにacceptedに遷移するようにした。
[ticket-workflow] accept = new,assigned,accepted,reopened -> * accept.operations = set_owner_to_self,triage accept.triage_field = type accept.triage_split = defect->defect_work,task->accepted,enhancement->accepted accept.permissions = TICKET_MODIFY test_start = defect_work -> testing test_start.operations = set_owner_to_self test_start.permissions = TICKET_MODIFY pass = testing -> closed pass.operations = set_resolution pass.set_resolution = fixed pass.permissions = TICKET_MODIFY
設定のポイントは以下
- 遷移先を*とする(type別に設定するためここでは設定しない)
- operationsにtriageを加える
- accept.triage_field = type と設定(type以外に任意のフィールドを指定可能っぽい)
- accept.triage_splitで、typeごとの遷移先ステータスを設定する。今回の場合は、defectだけ特別扱いして、defect->defect_workとしている。
これで動かしてみると・・・確かに分岐しました。
早速業務のTracにも入れて活用してみるつもり。機能追加のチケットにだけ、テスト完了したのかどうか分かるようにワークフローをカスタマイズしたかったところなので。
なお、AdvancedTicketWorkflowPluginには他にも色々機能がある。Advanced Ticket Workflow Plugin: 気の向くままに・・・で紹介されている、xrefも便利そうだよ。