GitLab 中文发行版最新的 17.4 发布了哪些与代码托管、CI/CD、安全合规相关的功能?
沿袭我们的月度发布传统,极狐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 还发布了:
- 新的代码流视图,用以在跨文件和函数中对漏洞路径进行追踪。
- 自动化的迁移,以允许高级 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 |
当你在合并请求中分享一个特定文件的链接时,通常是因为你想让对方查看该文件中的某些内容。之前,合并请求需要加载所有文件后,才能滚动到你引用的特定位置。在合并请求中直接链接到文件是提高协作效率的重要方式:
- 找到你想要展示的文件。然后右键点击文件名称来拷贝链接。
- 当你访问那个链接时,你选择的文件会显示在列表顶部。文件浏览器在文件名旁边显示一个链接图标。
对 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 次请求。