前一陣子的 GitLab 18.3 更新(官方公告)除了對使用 Registry metadata database 的 Heresy 造成了一些問題(參考)外,當然還是有一些功能上的更新;不過感覺上,這次大部分的功能更新都是針對付費版才有?尤其現在主打的 AI 功能,基本上都是不付錢不能玩的了。
不過,這次有個免費版也能用的「Embedded views」(官方文件),可以在 wiki、issue、merge request 等使用 markdown 編輯的地方,透過 GLQL(GitLab Query Language)來像 GitLab 要資料、產生動態的內容。
個人是覺得還滿有趣的,感覺上在特定的狀況下應該也會有用,所以這邊就簡單來記錄一下吧。
首先,根據官方文件(連結),embed views 適用的範圍包括了:
- Group and project wikis
- Descriptions and comments of:
- Epics
- Issues
- Merge requests
- Work items (tasks, OKRs, or epics)
- Repository Markdown files
感覺上,應該已經很夠用了?Heresy 覺得在 GitLab 裡面能用 Markdown 寫內容的地方應該都涵蓋到了?
而他該怎麼用呢?基本上就是透過本來的 code block(```
)、然後指定成 qlgl
這個語法、然後在裡面寫要查詢的內容就可以了。
至於語法的部分呢,他最基本的就是要有「query」這個查詢的條件。例如:
```glql query: project = "gitlab-org/gitlab" AND assignee = currentUser() AND state = opened ```
這邊就是查詢「gitlab-org/gitlab」這個專案裡面、指派者是當下的使用者、狀態是開啟的項目。
而除了「query」以外,他也還有提供其他設定,可以來改善呈現;像下面就是官方的完整範例:
```glql display: table title: GLQL table description: This view lists my open issues fields: title, state, health, epic, milestone, weight, updated limit: 5 query: project = "gitlab-org/gitlab" AND assignee = currentUser() AND state = opened ```
這邊就是設定以表格的形式來呈現、並指定要顯示的欄位;然後加上標題、描述,並限制顯示 5 筆;下面就是呈現的樣子:
而如果狀態有改變的話,在重新整理頁面後也會更新為最新的狀態。
這樣的功能有什麼好處呢?個人覺得比較有用的情境、應該會是要監控、或是需要固定彙整當下的 issue 的狀態之類的情境。
比如說假設有固定要寫每個月的工作紀錄的話,就可以透過 GLQL 來整理過去一個月關閉的 issue、來做為完成的工作的參考;例如:
```glql display: table title: 工作完成紀錄 description: 顯示過去一個月內關閉的 issue fields: assignee, title, state, closed sort: closed desc query: group = "myGroup" AND type = Issue AND state = closed AND closed >= -1m ```
這邊就是會把所有一個月內關閉的 issue 都列出來了。
至於要查詢其他欄位、或是其他的類型,條件,也都可以參考官方的《GLQL fields》這份文件,基本上應該算是滿豐富的。
而由於它是寫在 Markdown 裡面,所以這邊就可以把要看的各種資料的語法都設計好之後,全部放在同一個 wiki 頁面裡面,之後要看的時候,只要看這個頁面就好、也不需要另外一種一種去查了~
不過,要這樣玩的前提,就是要有認真在用 GitLab 的 issue、milestone 這些東西了。 XD