iT邦幫忙

2024 iThome 鐵人賽

DAY 23
0
Software Development

每天罵爆一隻 Kafka Pull Request系列 第 23

KAFKA-17542 Use actions/labeler for automatic PR labeling

  • 分享至 

  • xImage
  •  

https://github.com/apache/kafka/pull/17260

背景故事

今天來聊一點沒那麼技術的東西,各位熟悉GitHub的工程師喜不喜歡標籤呢?一般來說標籤可以幫助快速分類議題和PR,幫助開發者和維護者快速過濾出想要看的項目,那麼是誰要來貼標籤呢?聰明的工程師一定會說透過自動化,例如自動去掃描這隻PR的變更,然後根據變更來貼上對應的標籤,但其實呢Kafka社群一直沒有使用GitHub的標籤,所以之前的PR都如下圖一樣,看起來很單調沒有花花綠綠五顏六色,維護者也只能透過標題名字來體感這個PR可能會涉及哪些模組。

https://ithelp.ithome.com.tw/upload/images/20241007/20109516X1zzIFN7Fx.png

但是呢,那個黯淡無光的日子已經過去了,現在我們的PR已經不一樣了,可以看下圖,現在已經是五顏六色精彩繽紛,每個PR都會根據修改的內容來標記有哪些模組被修改,例如KAFKA-17707有下面四個標籤:

  1. core:這代表core模組下的程式碼有被動到
  2. tools:同上
  3. tests:這代表這隻PR有改到測試相關的程式碼
  4. small:顧名思義,這隻PR的改動很小,可以提醒維護者優先看一下畢竟不用花太多時間

https://ithelp.ithome.com.tw/upload/images/20241007/20109516qF7XSFAhT9.png

本來呢標籤運作得都不錯,但是其中一個標籤的邏輯最近出了問題,也是上述有提到的smallsmall這個標籤為了能算出PR修改的範圍,所以使用了diff的方式來查看PR做的修改,然後再透過grep來算出行數,但是在列印內容的時候會遇到PR本身的修改帶有特殊字符,這樣就會導致列印時出現處理特殊字符失效導致行數計算跟著失效,以KAFKA-17624爲例,這隻PR有以下的修改:

cmd = "%(cmd_prefix)s --add --topic=%(topic)s %(operation_flag)s --allow-principal=%(principal)s" % {

這樣在計算行數的時候就會噴出以下錯誤:

./.github/scripts/label_small.sh: line 22: printf: warning: s': invalid time format specification

解決辦法

其實呢我們不用自己去計算行數,貼心的GitHub早就準備好指令讓我們可以輕鬆獲得計算結果,我們可以使用view這隻函式來直接取得修改的行數:

gh pr view $PR_NUM -R $GITHUB_REPOSITORY --json additions,deletions

上述指令會回傳一個json格式的結果,裡面帶有additionsdeletions兩個欄位分別計算了增加的行數和刪減的行數,如此就可以直接避免使用grep爬取變更內容的需求,進而解決這次遇到的問題。

廣告

歡迎訂閱全臺最鬆散的開源社群源來適你,上面不定期會有各種開源的廢文。也歡迎參加全臺最鬆散的開源討論頻道,上面有一群網友一起在刷開源技術


上一篇
KAFKA-15859 Fixed the Unsupported version error when new admin connects to old broker

下一篇
KAFKA-17663: Add metadata caching in PartitionLeaderStrategy
系列文
每天罵爆一隻 Kafka Pull Request30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言