--- title: GitHub Issue 維護與管理 date: 2020-02-06 is_modified: false disqus: cynthiahackmd categories: - "軟體開發 › 測試與維護" tags: - "Issue tracking" --- {%hackmd @CynthiaChuang/Github-Page-Theme %} <br> 其實這不只適用於 GitHub,所有的 Issue 維護也可以遵循這樣的標記系統,只是各 Label Groups 與 Label 的內容可能需要隨著專案進行變化,這邊依照過往的使用習慣列了一些常用的 Label Groups。 <!--more--> ## Styleguide <table style="width:100%"> <tr style="border-width: 0px;"> <td style="border-width: 0px;" width="20%" class="group-name">Gating Requirement</td> <td style="border-width: 0px;" width="80%"><span class="issue-label gating-requirement">🏷️ Gating</span> <span class="issue-label gating-requirement">🏷️ Gating Candidate</span> <span class="issue-label gating-requirement">🏷️ Non Issue</span> </td> </tr> <tr style="border-width: 0px;"> <td style="border-width: 0px;" width="20%" class="group-name">Platform</td> <td style="border-width: 0px;" width="80%"><span class="issue-label platform">🏷️ Phone</span> <span class="issue-label platform">🏷️ Tablet</span> <span class="issue-label platform">🏷️ Computer</span> </td> </tr> <tr style="border-width: 0px;"> <td style="border-width: 0px;" width="20%" class="group-name">Environment</td> <td style="border-width: 0px;" width="80%"><span class="issue-label environment">🏷️ Development</span> <span class="issue-label environment">🏷️ Testing</span> <span class="issue-label environment">🏷️ Staging</span> <span class="issue-label environment">🏷️ Production</span></td> </tr> <tr style="border-width: 0px;"> <td style="border-width: 0px;" width="20%" class="group-name">Problem</td> <td style="border-width: 0px;" width="80%"><span class="issue-label problem">🏷️ Bug</span> <span class="issue-label problem">🏷️ Erratum</span> <span class="issue-label problem">🏷️ Safety</span> <span class="issue-label problem">🏷️ Suggest</span></td> </tr> <tr style="border-width: 0px;"> <td style="border-width: 0px;" width="20%" class="group-name">Error type</td> <td style="border-width: 0px;" width="80%"><span class="issue-label error-type">🏷️ UI</span> <span class="issue-label error-type">🏷️ UX</span> <span class="issue-label error-type">🏷️ Function</span> <span class="issue-label error-type">🏷️ Typo</span> <br> <span class="issue-label error-type">🏷️ Incorrect</span> <span class="issue-label error-type">🏷️ dependencies</span></td> </tr> <tr style="border-width: 0px;"> <td style="border-width: 0px;" width="20%" class="group-name">Action</td> <td style="border-width: 0px;" width="80%"><span class="issue-label action">🏷️ To-do</span> <span class="issue-label action">🏷️ Pending</span> <span class="issue-label action">🏷️Processing</span> <span class="issue-label action">🏷️ Verifying</span> <span class="issue-label action">🏷️ Done</span></td> </tr> <tr style="border-width: 0px;"> <td style="border-width: 0px;" width="20%" class="group-name">Inactive</td> <td style="border-width: 0px;" width="80%"><span class="issue-label inactive">🏷️ Duplicate</span> <span class="issue-label inactive">🏷️ No-Action</span> <span class="issue-label inactive">🏷️ Clarify</span> </td> </tr> <tr style="border-width: 0px;"> <td style="border-width: 0px;" width="20%" class="group-name">Additions</td> <td style="border-width: 0px;" width="80%"><span class="issue-label additions">🏷️ Feature</span></td> </tr> </table> ## Label Groups ### <span class="issue-label groups gating-requirement"> Gating Requirement </span> 用來標記 issue 的緊急程度,依照嚴重性降冪排序,依序為 `Gating`、`Gating Candidate`、`Non Issue` ### <span class="issue-label groups platform"> Platform </span> 如果程式可在多個平台上執行,就必須告知是在哪個平台上發生問題,例如:`手機`、`平板`或是`電腦`,向下可以在細分出 device、 OS 或是 browser...等 Label Groups。 ### <span class="issue-label groups environment"> Environment </span> 在理想的情況下,發行與管理程式所使用的環境可大致分成:`Development`、 `Testing`、 `Staging` 與 `Production` 四個獨立環境。不過實務上受限於體、時間或其他資源條件,可能會結合一或多個環境,但最少應該將 Production 獨立出來。 ### <span class="issue-label groups problem"> Problem </span> 在歸類 issue 的時候第一步會區分是 `Bug`、 `Erratum`、 `Safety` 或是 `Suggest` ,如果運做結果不正確或不合預期就歸到 `Bug`;若是文件或註解甚至是 UI 上的文字有誤或者意思錯誤則歸到 `Erratum`;若是安全性相關的問題則標上 `Safety`;其他建議則使用 `Suggest`。 我常用的就這四個標籤,其他標籤會依照專案在進行擴充。 ### <span class="issue-label groups error-type"> Error type </span> 這個標籤會在細分 Problem 的部份,我又分成 `UI`、 `UX`、 `Function`、 `Typo`、 `Incorrect` 與 `dependencies`。其中 `dependencies` 是指第三方函式庫或相依函式庫的問題。 ### <span class="issue-label groups action"> Action </span> 我參考 trello 的 [template](https://trello.com/b/LGHXvZNL/kanban-template) 將執行進度分成:`To-do`、 `Pending`、 `Processing`、 `Verifying` 與 `Done`。 `To-do` 顧名思義就是放入代辦清單。`Pending` 則是先暫時擱置,可能在等待 Design 或 Spec,抑或者有可能是第三方問題等待修復中,不過最常見的原因是出現較緊急的 issue 需要 hot fix ,所以先暫時擱置目前的工作。`Processing` 就是處理中, `Verifying` 則是請 Q 驗證中。 ### <span class="issue-label groups inactive"> Inactive </span> 如果評估後不需要動作,則視情況澄清 issue `Clarify` 或是 `No-Action`。若是 isseu 重複,則為較後面出出現的 issue 貼上 `Duplicate` 標籤並關閉。 ### <span class="issue-label groups additions"> Additions </span> 這個標籤 `Feature` 是標註這條 issue 已經在規劃中了。 ## 參考資料 1. [kanban-template](https://trello.com/b/LGHXvZNL/kanban-template) 。檢自 trello (2020-02-06)。 2. Zach Dunn 。[How we organize GitHub issues: A simple styleguide for tagging](https://robinpowered.com/blog/best-practice-system-for-organizing-and-tagging-github-issues/) 。檢自 robinpowered (2020-02-06)。 ## 更新紀錄 :::spoiler 最後更新日期:2020-05-19 - 2020-05-19 發表 - 2020-02-06 完稿 ::: {%hackmd @CynthiaChuang/Github-Page-Footer %} <style> table { background-color:#ffffff; border:0; border-collpase:collpase; width:200px; } tbody{ background-color:#ffffff; } tr { background-color:#ffffff; } td { border-style:solid; background-color:#ffffff; line-height: 36px; } .group-name { color:gray; text-align:right; } .issue-label { padding:5px 5px; font-weight:bold; border-radius:5px; } .issue-label.groups { padding: 5px 15px; } .issue-label.additions { background-color:#91ca55; } .issue-label.inactive { background-color:#d2dae1; } .issue-label.action { background-color:#fbca04; } .issue-label.error-type { background-color:#fef2c0; } .issue-label.problem { background-color:#FFB5B5; } .issue-label.environment { background-color:#6abcfd; } .issue-label.platform { background-color:#c1d3f1; } .issue-label.gating-requirement{ background-color:#f45d43; } </style>