之前 GitLab 推出了 DAG 的功能,透過 needs 這個標籤,可以多線同時進行工作,在某些場合算是相當方便的~
不過後來因為 Heresy 試著把工作拆分到很細,所以就採到他的一個問題,那就是 needs 的數量上限了。
在官方文件(連結)中也有提到,目前有針對 needs 中指定的工作數量做限制。下面是原文:
We are temporarily limiting the maximum number of jobs that a single job can need in the needs: array:
- For GitLab.com, the limit is five. For more information, see our infrastructure issue.
- For self-managed instances, the limit is:
- Five by default (ci_dag_limit_needs feature flag is enabled).
- 50 if the ci_dag_limit_needs feature flag is disabled.
基本上,由於 DAG 的功能似乎會有一些效能上的風險,所以官方是暫時把數量上限設定為 5。
而對於像 Heresy 這種自行架設的人來說,則可以透過 ci_dag_limit_needs 這個 feature flag 來做控制;在開啟的狀況下(預設是開啟)就是 5 個,關閉的話則會變成 50 個。
但是,Heresy 看了老半天,完全找不到要如何設定 feature flag 啊!
在官方「Feature Flags」文件(連結)中所描述的介面基本上似乎並不存在(至少 Heresy 這邊沒有…);而在「Feature flag controls」(連結)中的 chatops 也不知道怎麼用…
這個問題印象中之前要使用其他功能的時候也有碰過,不過後來是放棄了。
而這次,稍微認真研究一下後,終於找到設定方法了。
根據官方的《`needs` documentation is wrong》的這個 issue(連結),理論上 feature flag 應該是可以透過「gitlab-rails console」來控制的。
而怎麼進入 gitlab-rails console 呢?以 Heresy 是以 Docker 來架設 GitLab 來說,則是可以透過
docker exec -it gitlab gitlab-rails console
這個指令來進入。其中,黃字的部分是 GitLab 的容器名稱。
他的初始化感覺有點慢,要等好一段時間才會有反應。完成後,介面會如下:
然後,再輸入
Feature.disable(:ci_dag_limit_needs)
就可以了~
為了保險起見,Heresy 還是有重啟一次 GitLab 的 Docker 容器,看起來應該是沒問題的。
而理論上,其他的 feature flag 應該也是透過同樣的方法來調整。
由於這個問題之前就找過了,所以這邊還是紀錄一下、預防萬一吧~