GitLab 中文發行版最新的 17.4 釋出了哪些與程式碼託管、CI/CD、安全合規相關的功能?

极狐GitLab發表於2024-09-27

沿襲我們的月度釋出傳統,極狐GitLab 釋出了 17.4 版本,該版本帶來了當所有檢查透過就會自動合併、Web IDE 中的擴充套件市場現已可用以及獲取 Kubernetes 資源事件等幾十個重點功能的改進。下面是部分重點功能的詳細解讀。

極狐GitLab 為 GitLab 的中文發行版,中文版本對國內使用者更友好、更便捷。可以一鍵私有化部署,也可以直接使用 SaaS。私有化部署安裝可以檢視官網安裝指南 https://dl.gitlab.cn/cwdrx25k ,對於專業版功能可以申請 60 天免費試用 https://dl.gitlab.cn/naar51wc ,匯入 license 即可用。

  • 17.4 容器映象
registry.gitlab.cn/omnibus/gitlab-jh:17.4.0-jh.0
  • 17.4 Helm Chart
helm search repo gitlab-jh
NAME                   	CHART VERSION	APP VERSION	
gitlab-jh/gitlab       	8.4.0        	v17.4.0    	
gitlab-jh/gitlab-runner	0.69.0       	17.4.0     	

極狐GitLab 17.4 重要改進

在建立流水線的 API 中指定流水線配置檔案(JH-only)

基礎版 專業版 旗艦版
SaaS Y Y Y
私有化部署 Y Y Y

當呼叫 API 去建立 CI/CD 流水線時,可以透過新增的引數 ci_config_path來動態指定流水線配置檔案的地址。這樣當同一個專案的多個使用者透過 API 建立 CI/CD 流水線時,他們可以分別指定各自流水線的配置檔案,互不干擾。

當所有檢查透過就會自動合併

基礎版 專業版 旗艦版
SaaS Y Y Y
私有化部署 Y Y Y

合併請求有許多必須透過的必要檢查,才能進行合併。這些檢查可能包括審批、未解決的主題、流水線以及其他一些必須要滿足的條件。當你負責對程式碼進行合併時,讓你對所有的事件(指合併所需的必要條件)進行追蹤是非常困難的,而且也很難知道什麼時候應該回來檢查一下合併請求是否可以被合併。

現在,極狐GitLab 支援在合併請求中對所有檢查進行自動合併。自動合併能夠讓有許可權合併程式碼的使用者將合併請求設定為自動合併,甚至在所有必要檢查透過之前。隨著合併請求的進行,當最後一個失敗檢查透過後,合併請求會自動完成合並。

我們真心希望這項改進能夠幫你加速你的合併請求流程。

Web IDE 中的擴充套件市場現已可用

基礎版 專業版 旗艦版
SaaS Y Y Y
私有化部署

我們很高興地宣佈在極狐GitLab SaaS(JihuLab.com)Web IDE 上正式上線了擴充套件市場。有了擴充套件市場,你就可以發現、安裝以及管理第三方擴充套件,並以此來增強你的研發體驗。但是有一些擴充套件和 web 專屬的版本不相相容,因為它們需要本地執行時環境。然而,你依舊可以從數千款擴充套件中找到你想要的,並且用它們來提高你的生產力或者對工作流進行自定義。

擴充套件市場預設情況下是禁用的。如果想用的話,你可以在你使用者偏好設定中的整合部分中來開啟擴充套件市場功能。對於企業使用者來講,只有頂級使用者群組中擁有所有者角色的使用者才能夠開啟這一功能。

獲取 Kubernetes 資源事件

基礎版 專業版 旗艦版
SaaS Y Y Y
私有化部署 Y Y Y

極狐GitLab 為你的 Kubernetes pod 和流日誌提供一個實時的視角。然而直到現在,我們都無法從 UI 上為你展示與資源相關的事件資訊,因此,你不得不使用第三方工具來對 Kubernetes deployment 進行除錯。此版本在 Kubernetes 儀表盤的資源詳情檢視中新增了事件功能。

這是我們首次將事件新增到 UI 上。當前,每當你開啟資源詳情檢視的時候都會對事件進行重新整理。

無需通配 DNS 即可使用極狐GitLab Pages

基礎版 專業版 旗艦版
SaaS
私有化部署 Y Y Y

之前,為了建立一個極狐GitLab Pages 專案,你需要一個域名,格式如 name.example.io或者 name.pages.example.io。此項需求意味著你不得不設定通配 DNS 記錄和 TLS 證書。在此版本中,無需對 DNS 通配就能夠建立極狐GitLab Pages 專案這一功能已經從 beta 變為正式可用。

移除對萬用字元證書的要求減少了與極狐GitLab Pages 相關的管理開銷。有些客戶無法使用極狐GitLab Pages 的原因就是組織內部嚴格限制對通配 DNS 記錄或證書的使用。

極狐GitLab Pages 並行部署處於 Beta

基礎版 專業版 旗艦版
SaaS Y Y
私有化部署 Y Y

此版本引入了 Pages 並行部署功能,且處於 beta。你現在可以輕鬆預覽更改並管理 GitLab Pages 站點的並行部署。此增強功能允許無縫地嘗試新想法,因此你可以放心地測試和最佳化你的站點。透過及早發現問題,就能夠確保你站點的穩定性。

此外,並行部署在本地化時也非常實用,當你部署的應用程式或網站有不同語言版本時。

高階 SAST 已經正式可用

基礎版 專業版 旗艦版
SaaS Y
私有化部署 Y

我們現在很高興地宣佈:我們的高階靜態應用程式安全測試分析器已經對所有極狐GitLab 旗艦版使用者正式可用。

高階 SAST 是一種新掃描器,由我們今年早些時候從 Oxeye 收購的技術驅動。它使用一個專有的檢測引擎,結合內部安全研究提供的規則,來識別第一方程式碼中的可利用漏洞。它的結果更精確,因此開發者和安全團隊無需在假陽性結果的噪音中對資訊進行篩選。

伴隨著新的掃描引擎,極狐GitLab 17.4 還發布了:

  1. 新的程式碼流檢視,用以在跨檔案和函式中對漏洞路徑進行追蹤。
  2. 自動化的遷移,以允許高階 SAST 能夠“接管”之前的極狐GitLab SAST 掃描器掃描出的結果。

在 UI 上對 CI/CD 變數的值進行隱藏

基礎版 專業版 旗艦版
SaaS Y Y Y
私有化部署 Y Y Y

當變數被儲存到專案設定以後,你可能不想讓任何人看到它們的值。現在,當你建立 CI/CD 變數時,可以選擇新的被掩蓋和隱藏視覺化選項。選擇此選項後,變數的值會在 CI/CD 設定介面上永遠被隱藏,限制了變數的值在將來某一天被展示給任何人,而且降低了資料的可見性。

極狐GitLab 17.4 中的其他改進

webhook 請求的冪等性鍵

基礎版 專業版 旗艦版
SaaS Y Y Y
私有化部署 Y Y Y

在此版本中,我們支援在 webhook 請求的頭部中使用冪等性鍵。

冪等性鍵是一個唯一的 ID,它在 webhook 重試中保持一致,這使得 webhook 客戶端能夠檢測到重試。使用 Idempotency-Key標頭能夠確保在整合中 webhook 的冪等性。

大小可調整的 wiki 側邊欄

基礎版 專業版 旗艦版
SaaS Y Y Y
私有化部署 Y Y Y

現在,你可以透過調整 wiki 的側邊欄來檢視更長的頁面標題,這提高了內容的整體可發現性。隨著 wiki 內容的增多,大小可調整的側邊欄可以更有效地管理和瀏覽複雜的層級結構或大量的頁面列表。

程式碼智慧的 CI/CD 元件

基礎版 專業版 旗艦版
SaaS Y Y Y
私有化部署 Y Y Y

GitLab 中的程式碼智慧在瀏覽程式碼庫時提供程式碼導航功能。使用程式碼導航往往很複雜,因為你必須要配置 CI/CD 作業。此作業要求自定義指令碼能夠提供正確的輸出和製品。

現在,極狐GitLab 提供了一種更易設定的程式碼智慧 CI/CD 元件。遵循 CI/CD 元件使用指南將其新增到你的倉庫中即可。這大大簡化了在極狐GitLab 中對程式碼智慧的採用。

當前,元件支援如下語言:

  • Go (版本為 1.21 及以後)
  • TypeScript 或JavaScript

我們將繼續評估可用的 SCIP 索引器,以期擴大新元件的語言支援。如果你有興趣為某種語言新增支援,請在程式碼智慧元件專案中提交合並請求。

極狐GitLab Runner 17.4

基礎版 專業版 旗艦版
SaaS Y Y Y
私有化部署 Y Y Y

我們還發布了極狐GitLab Runner 17.4。極狐GitLab Runner 是一個輕量級、高擴充套件的代理,用來執行你的 CI/CD 作業並且將結果傳送回極狐GitLab 例項。極狐GitLab Runner 和極狐GitLab CI/CD 繫結在一起,而極狐GitLab CI/CD 是一個開源且內建在極狐GitLab 裡面的服務。

  • 新功能:

針對 azure 計算的極狐GitLab Runner fleeting 外掛已經正式可用

  • 修復的缺陷:

當在 Kubernetes 執行器作業完成以前取消時,在 Job 日誌的 after_script部分會有 step_script的完整內容

受保護環境的非部署作業不能夠轉變為手動作業

基礎版 專業版 旗艦版
SaaS Y Y
私有化部署 Y Y

由於實現原因,當在受保護環境中執行 action:prepare、action:verify以及 action:acces作業時,它們會變成手動作業。這些作業需要人工介入才能執行,儘管它們不需要任何額外的批准。

390025 議題的目的就是想解決這個問題,以便這些作業不再變為手動作業。在這次提議的更改之後,為了保持當前的行為,你需要明確將作業設定為手動。

現在,你可以透過開啟 prevent_blocking_non_deployment_jobs功能開關來體驗此功能。

任何提議的重要變更都是為了區分 environment.action: prepare | verify | access的值所代表的行為。關鍵字environment.action: access將保持最接近其當前的行為。

為了防止將來的相容性問題,當前你應該重新審視你所使用的這些關鍵字。

自動清理已移除的 SAST 分析器

基礎版 專業版 旗艦版
SaaS Y
私有化部署 Y

在極狐GitLab 17.0、16.0 以及 15.4 中,我們對極狐GitLab SAST 進行了最佳化,使其在掃描程式碼中的漏洞時使用的獨立分析器更少。

現在,當你升級到極狐GitLab 17.3.1 及以後版本後,一次性資料遷移將自動解決那些已達到支援終止的分析器所留下的漏洞問題。這將有助於對漏洞報告進行清理,以便你可以聚焦在那些依舊被最新分析器所發現的漏洞上。

遷移只能夠解決那些你還沒有確認或者被忽略的漏洞,並且不影響自動轉換為基於 Semgrep 掃描的漏洞。

支援匯入 CycloneDX 1.6 格式的 SBOM

基礎版 專業版 旗艦版
SaaS Y
私有化部署 Y

在極狐GitLab 15.3 中增加了對於 CycloneDX SBOM 的提取支援。

在極狐GitLab 17.4 中,我們增加了對於 CycloneDX 1.6 SBOM 的支援。

與硬體(HBOM)、服務(SaaSBOM)以及 AI/ML 模型(AI/ML-BOM)相關的欄位當前還不支援。如果 SBOM 中包含與上述 BOM 相關的資料,流程也會繼續處理,但是卻不會對資料進行分析或者呈現給使用者。當然,對於其他型別 BOM 的支援也在緊鑼密鼓研發中。

可選的令牌過期時間

基礎版 專業版 旗艦版
SaaS
私有化部署 Y Y Y

現在,管理員可以決定是否要對個人、專案和群組訪問令牌的強制過期時間進行強制執行。如果管理員禁用了此設定,任何新生成的訪問令牌都將不會要求有必需的過期時間。預設情況下,該設定是禁用的,而且過期時間必須小於生命週期所允許的最大時間。該設定在極狐GitLab 16.11 及以後版本中可用。

在流水線執行策略中,支援為名稱衝突的作業新增字尾

基礎版 專業版 旗艦版
SaaS Y
私有化部署 Y

作為極狐GitLab 17.2 釋出的流水線執行策略的強化,策略建立器現在可以透過配置流水線執行策略來平滑處理作業名稱的衝突問題。在流水線執行策略檔案 policy.yml 中,你可以配置如下選項:

  • suffix: on_conflict配置策略以在發生衝突時透過重新命名策略作業來優雅地處理衝突。
  • suffix: never強制所有作業名稱都是唯一的,如果出現衝突,流水線將會失敗,這是自 GitLab 17.2 版本以來的預設行為。

有了這項改進,你可以確保在流水線執行策略中執行的安全和合規作業總是被執行,同時還避免了對下游開發者造成不必要的影響。

在後續的增強功能中,我們將在策略編輯器中引入配置選項。

Omnibus 改進

基礎版 專業版 旗艦版
SaaS
私有化部署 Y Y Y

極狐GitLab 17.4 預設保護你 PostgreSQL 16,而且適用於所有新安裝的極狐GitLab。

極狐GitLab 17.5 還將包含 OpenSSL V3。這將影響那些未滿足TLS 1.2或更高版本出站連線的最低要求,以及至少112位加密的TLS證書的外部整合設定的Omnibus例項。如果你確信你的例項將受到影響,那麼請仔細閱讀我們的 OpenSSL 升級文件。

透過群組 API 按域名對群組進行訪問限制

基礎版 專業版 旗艦版
SaaS Y Y
私有化部署 Y Y

之前,只能在 UI 介面上在頂級群組上新增域名限制。現在,你可以透過群組 API 中新增的 allowed_email_domains_list欄位來實現這一功能。

用 API 重新傳送失敗的 webhook 請求

基礎版 專業版 旗艦版
SaaS Y Y Y
私有化部署 Y Y Y

之前,極狐GitLab 僅提供在 UI 對 webhook 請求進行重新傳送的能力,如果有很多請求發生了失敗,那麼這種方式就顯得很低效。

因此你可以透過程式設計的方式來處理失敗的 webhook 請求,在此版本中,感謝社群成員的貢獻,我們增加了透過 API 端點來重新傳送:

  • 專案 webhook 請求
  • 群組 webhook 請求(僅限專業版 & 旗艦版)

現在,你可以:

  • 獲取專案 hook 或者群組 hook 事件列表
  • 過濾列表來發現失敗的請求
  • 適用任意事件的 id來重新傳送

優先展示合併請求中連結的檔案

基礎版 專業版 旗艦版
SaaS Y Y Y
私有化部署 Y Y Y

當你在合併請求中分享一個特定檔案的連結時,通常是因為你想讓對方檢視該檔案中的某些內容。之前,合併請求需要載入所有檔案後,才能滾動到你引用的特定位置。在合併請求中直接連結到檔案是提高協作效率的重要方式:

  1. 找到你想要展示的檔案。然後右鍵點選檔名稱來複製連結。
  2. 當你訪問那個連結時,你選擇的檔案會顯示在列表頂部。檔案瀏覽器在檔名旁邊顯示一個連結圖示。

對 JaCoCo 測試覆蓋視覺化的支援在 Beta 中可用

基礎版 專業版 旗艦版
SaaS Y Y Y
私有化部署 Y Y Y

現在可以使用 JaCoCo 覆蓋報告了,這是一個流行的測試覆蓋率計算標準,而且內嵌到了合併請求中。該功能在 Beta 中可用,對於任何想要使用 JaCoCo 測試報告的使用者來說都可馬上使用。

在 K8S 叢集 UI 上觸發 Flux 同步

基礎版 專業版 旗艦版
SaaS Y Y Y
私有化部署 Y Y Y

儘管可以透過配置 Flux 來實現以特定間隔進行變更同步,但是總會遇到一些你想要立即同步的場景。在過去的版本中,你只能透過 CI/CD 流水線或者命令列來觸發同步。在極狐GitLab 17.4 中,你可以從 Kubernetes 儀表盤上進行觸發,而無需任何配置。

如果要觸發同步,前往配置好的儀表盤然後選擇 Flux 狀態徽章即可。

對 Anthropic API key 的金鑰檢測支援

基礎版 專業版 旗艦版
SaaS Y Y Y
私有化部署 Y Y Y

不管是流水線還是客戶端的金鑰檢測功能,現在都支援對 Anthropic API key 進行檢測。

在與安全策略關聯的專案中授予對流水線執行 YAML 檔案的讀取許可權

基礎版 專業版 旗艦版
SaaS Y
私有化部署 Y

在極狐GitLab 17.4 中,我們在安全策略中新加了一個設定,你可以使用該設定為所有關聯的專案賦予 pipeline-execution.yml檔案的讀取許可權。此項設定給你提供了更多的靈活性,以便能在跨專案中啟用可以強制執行流水線的使用者、機器人或者令牌。比如,你可以確保群組或專案訪問令牌能夠讀取安全策略配置,以便在流水線執行期間觸發流水線。但是,你依舊無法直接檢視安全策略專案倉庫或者 YAML 檔案,且配置僅可在流水線建立時使用。

如果要配置此設定,前往你想分享的安全策略專案。選擇設定 --> 通用 --> 可見性、專案功能、許可權,下拉找到流水線執行策略,然後開啟授予對這個倉庫的訪問許可權,對於將其作為安全策略專案源與安全策略相關聯的專案開關。

按多個合規框架進行搜尋

基礎版 專業版 旗艦版
SaaS Y Y
私有化部署 Y Y

在極狐GitLab 17.3 中,我們給使用者提供了將多個合規框架新增到一個專案中的能力。

現在,可以按多個合規框架進行搜尋了,這對於本身含有多個合規框架的專案來說,搜尋變得更容易了。

改進了組和專案成員的來源顯示

基礎版 專業版 旗艦版
SaaS Y Y Y
私有化部署 Y Y Y

我們簡化了組和專案成員頁面上來源列的顯示。直接成員依舊顯示為 直接成員。繼承成員現在展示為 繼承自,而且後面跟著群組名稱。透過邀請群組成員到群組或者專案的方式新增的成員會展示為 被邀請群組,後面跟著群組名稱。對於那些繼承自被邀請群組(該群組被新增到父群組)的成員來說,我們現在顯示最後一步,以保持顯示對管理成員具有可操作性。

使用群組或專案 API 獲取被邀請到群組或專案的群組

基礎版 專業版 旗艦版
SaaS Y Y Y
私有化部署 Y Y Y

我們新增了一個群組 API 和專案 API 端點來獲取被邀請到群組或專案中的群組。此項功能僅在群組或專案成員頁面上可用。我們希望此項功能能夠讓群組和專案的成員關係自動管理變得更加容易。該端點的速率限制為每個使用者每分鐘 60 次請求。

相關文章