本月23号,按照发版惯例GitLab官方发布了有一个新的月度版本,也是2022年第一个新版本。最近由于年底事务耽搁,直到现在虫虫才来带大家一起学习14.7带来的新功能和亮点。另外快过年了,祝各位小伙伴们新年快乐,万事如意,虎年虎虎!
概述
部分 gitlab 客户,合规监管要求其必须使用符合FIPS规范。新版本的Gitlab Runner完全符合FIPS 140-2,适用于AMD64计算架构和Red Hat Enterprise Linux (RHEL) 发行版。
新版本可以将审核事件流式传输到指定的位置。可以用于集成GitLab审计事件与其他数据流相关联、维护审计事件备份或构建自己的自动化以在特定审计事件发生时采取行动的好方法。
Gitlab 14.7中,可以使UI和AP创建组访问令牌。可以定义令牌名称、到期日期和范围。还可以撤销现有的组访问令牌。
GitLab 14.7主要改进
直接从“编辑标签”页面删除标签
在新版本中,添加了在“编辑标签”页面中删除标签的功能。这是一个可用性增强,最终允许用户删除标签。这包括管理员、项目和组标签。
LDAP故障转移支持
现在可以hosts在 GitLab LDAP 配置中指定多个主机使用。GitLab 将使用第一个可达的主机。如果LDAP主机之一无响应,这可确保对GitLab的访问连续性。
设置以在组创建期间启用个性化问题
在之前的版本中,在组创建过程中添加了个性化问题。这些信息可能对在SaaS 用户有帮助,但对自建实例帮助不大。这些额外的功能会使用户感到困惑并使组创建过程复杂化。在此版本中,在管理区域增加了禁用这些问题的功能。
Container Registry浏览器中对Docker标记进行排序
新版本中可以按名称对Container Registry标记详细信息页面中的标记列表进行排序。默认情况下,标签列表现在按名称升序排序。也可以将排序顺序更改为降序。
GitLab CI/CD 实现OpenID Connect支持
使用环境变量将GitLab CI/CD连接到云供应商适用于许多用例。但是,如果需要高级权限管理,或者希望与云供应商建立一个签名的、短期的、上下文化的连接,它就不能很好地扩展。GitLab 12.10 提供了对基于JWT令牌的连接(CI_JOB_JWT)的初始支持,使HashiCorp Vault用户能够安全地检索机密。该实现仅限于Vault,而构建JWT的逻辑也打开了连接到其他提供程序的可能性。
在 GitLab 14.7 中,新引入了一个CI_JOB_JWT_V2环境变量,可用于连接 AWS、GCP、Vault 以及可能的许多其他云服务。(注意,该版本为alpha功能,尚未准备好用于生产用途。
特别是对于AWS,使用新CI_JOB_JWT_V2变量,可以连接到AWS以检索密钥,或在账户中进行部署。还可以使用AWS IAM角色管理对集群的访问权限。
新变量会自动注入到管道中,但不向后兼容当前CI_JOB_JW。在 GitLab 15.0之前,CI_JOB_JWT它将继续正常工作,但这会在未来的版本会改变。
备份和恢复支持包注册表文件
使用GitLab 包注册表,可以将GitLab用作各种受支持的包管理器的私有或公共注册表。在GitLab 14.7之前, 备份和恢复 Rake 任务不支持包注册表文件。GitLab现在在使用命令创建的备份中包含包注册表文件gitlab-backup create。管理员不再需要为这些文件制定单独的备份策略来防止数据丢失。请注意,这仅适用于存储在文件系统中的项目。如果使用对象存储存储包注册表文件,请使用对象存储提供程序启用备份。
GitLab UI管理员面板显示锁定用户
在以前版本的GitLab中,管理员无法在UI中看到被锁的用户。新版本汇总,GitLab UI 管理员面板中可以看到系统锁定的用户。
添加到价值流阶段表的记录的项目名称(PREMIUM)
组的价值流分析阶段表现在包括每个问题的项目名称和合并请求,以帮助更好地理解阶段表中的数据。
使用API批量删除工件
虽然管理存储消耗的一个好策略是为工件设置定期过期策略,但有时需要立即减少存储中的项目。之前,可能已经使用脚本自动执行通过API调用逐个删除工件的繁琐任务,但现在可以使用新的API接口快速轻松地批量删除作业工件。
示例如下:
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" " IP/api/v4/projects/1/artifacts"
管理员面板新增Runner状态徽章
现在可以轻松地可视化实例上所有运行器的状态。运行器的管理区域现在包括状态徽章和粗体大数字,可以一目了然地查看关键数据,从而改善运行器管理体验。
Gitleaks 的主要性能改进
基于GitLab 14.5 中包含的大型规则扩展,GitLab秘密检测分析器Gitleaks更新到下一个主要版本8。这个新的主要版本包括大量性能更新和对其核心检测引擎的完全重写。秘密检测历史扫描现在应该运行得更快,内存使用量大大减少。这意味着更快的检测和更短(更高效)的管道。新更改后能够进行更多的性能改进,以改进未来所有非历史秘密检测作业的运行。
根据实际项目的性能测试,新版本速度和内存减少根本为:
大型仓库Rails (~8w2的提交):
内存占用:800MB->120 MB(减少6.67 倍)
扫描时间:28分钟 ->1分24秒(加速21倍)
中型仓库hgitleaks(〜600次提交)
内存占用:300MB ->30MB(减少 10 倍)
扫描时间:27秒->8.9 秒(3 倍加速)
小仓库(〜36次提交)
内存占用:26MB -> 8.4MB(减少 3 倍)
扫描时间:315毫秒 ->277 毫秒
UI中删除 K8S GitLab 代理
Kubernetes的GitLab代理每月被数百名GitLab客户测试和采用。一些用户注意到从GitLab中删除注册代理并不简单。到目前为止,只能通过GraphQL API删除代理。在 GitLab 14.7中引入,也可以直接从GitLab UI中删除代理。
当删除代理时,GitLab 会撤销其令牌,并且给定的连接会立即停止工作。
备份和恢复支持Terraform 状态文件
GitLab 管理的Terraform状态后端可以安全地存储Terraform 状态,让用户无需设置额外的远程资源。在GitLab 14.7之前的备份和恢复rake任务不支持 Terraform 状态文件。GitLab 现在使用gitlab-backup create命令创建的备份中包含Terraform状态文件。管理员不再需要为这些文件制定单独的备份策略来防止数据丢失。
注意,这仅适用于存储在文件系统中的项目。如果使用对象存储存储Terraform 状态文件,请使用对象存储提供程序启用备份。
从代码搜索结果转到 Git blame(PREMIUM)
用户通常希望了解更多关于代码搜索结果的信息,例如文件何时更改或由谁更改。使用 GitLab 14.7,用户可以通过使用全局搜索结果中的查看git blame链接以实现更少点击得到答案。当将鼠标悬停在代码搜索的结果上时,此更改会在代码行旁边添加一个附加链接。
Omnibus套件更新
GitLab 14.7引入Mattermost 6.2,支持私人频道自动完成功能、单击以回复线程、跟踪 Playbook 运行的能力、Boards日历视图和@mention自动完成功能等等。另外还有安全更新,建议从早期版本升级。
使用 GitLab 14.7,可以配置redis支持SSL加密传输:
redis['tls_port'] redis['tls_cert_file'] redis['tls_key_file'] gitlab_rails['redis_ssl'] = true
安全和合规性
符合 FIPS 140-2 的 GitLab Runner
对于有些 GitLab 客户,合规监管要求其必须使用符合FIPS规范。FIPS 140-2和 FIPS 140-3 定义了用于计算机和电信系统以及保护敏感信息的网络系统中的加密模块的安全要求。新版本的GitLab Runner完全符合FIPS 140-2,适用于AMD64计算架构和Red Hat Enterprise Linux (RHEL) 发行版。
流式事件审核(ULTIMATE)
新版本可以将审核事件流式传输到制定的位置。这是将GitLab审计事件与其他数据流相关联、维护审计事件备份或构建自己的自动化以在特定审计事件发生时采取行动的好方法。
可以使用新的GraphQL API指定 TTPS接口,并将事件以webhook发送。这些消息包含与审计事件UI相同的信息,包括发生的更改类型、发生时间、涉及的人员以及一些额外的元数据。
收到这些消息后,可以根据人员、类型进行过滤,或将该数据注入另一个第三方工具。
组访问令牌
使用组访问令牌,可以使用单个令牌对组执行操作、管理组内的项目。在GitLab 14.2及更高版本中可通过HTTPS进行Git身份验证。
以前,组访问令牌仅限于自建实例,并且只能通过Rails控制台生成。现在,可以使用UI和API创建组访问令牌。可以定义令牌名称、到期日期和范围。还可以撤销现有的组访问令牌。
静态分析分析器更新
GitLab静态分析由一组许多安全分析器组成,GitLab 静态分析团队积极管理、维护和更新这些分析器。GitLab 14.7 发布中的更新和改进包括:
Spotbugs 更新到v2.28.12:修补Log4j漏洞库(v4.5.3)。
Code Climate更新到v0.85.26。
如果使用GitLab托管的供应商SAST模板(SAST.gitlab-ci.yml),则无需执行任何操作即可接收这些更新。但是,如果使用覆盖或自定义您自己的CI/CD模板,则需要更新CI/CD 配置。
Gitlab Runner 14.7
同期还发布了GitLab Runner 14.7。新增加功能包括:
GitLab Runner Helm Chart添加交互式Web终端支持。
修复了Bug:
stdout仅在确uid何时启用FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR时解析的问题。
Bug修复
GitLab 14.7也修复了一些重要Bug:
对一些 bt Yarn 目执行依赖扫描失败。
NuGet 数据不加载长/短版本号。
无法从 ontainer Registry 删除格式错误的标签。
组SAML-计划的管道找不到有效的SSO会话。
检索错误令牌信息的API调用返回错误“400”而不是“401”。
Azure DevOps-LFS 同步问题。
修复了异步触发的流审计事件。
CI需求重复导致500响应。
修复文件名在导入时溢出模式。
导入的组成员身份未反映在子项目成员API中。
sidekiq-cluster为某些 gitlab.yml 配置抛出错误。
修复问题板中的事件侧边栏。
在问题板上按Epic分组未显示正确数量的问题。
当用户离开时,Epic应该存储其中填充的任何内容,类似于问题。
在 Runner Queue 中跟踪正在运行的作业时查询超时。
“从头开始”图像的容器扫描失败。
GraphQL API 上的未授权用户可以使用漏洞相关字段。
性能改进
在每个版本中,我们都会继续在提高GitLab的性能方面取得长足进步。GitLab 14.7中,在问题、项目、里程碑等提供了性能改进:
将包列表和详细信息页面迁移到vue-router。
提高组问题板的Epic泳道加载性能。
Markdown渲染中的性能改进。
可用性改进
在每个版本中,我们都在提高产品的整体有效性和实用性方面取得了长足的进步。
GitLab 14.7自爱问题、项目、里程碑等提供了可用性改进:
允许用户在UI中删除格式错误的容器标记。
仅当用户可以删除容器图像时才显示操作菜单。
为合并列车更新项目设置副本以支持快进合并
功能变更和删除
低于14.0.0的容器扫描架构
变更日期:2022年05月22日
GitLab 15.0将不再支持14.0.0之前的容器扫描报告架构版本。GitLab 15.0也不再支持未通过报告中声明的架构版本验证的报告。
通过输出容器扫描安全报告 作为管道作业工件与GitLab集成的第三方工具会受到影响。必须确保所有输出报告都符合正确的架构,最低版本为14.0.0。版本较低或未能根据声明的架构版本验证的报告将不会被处理,漏洞发现不会显示在MR、管道或漏洞报告中。
为了帮助过渡,从GitLab 14.10开始,不合规的报告将在漏洞报告中显示警告。
14.0.0 以下的覆盖引导模糊模式
变更日期:2022年05月22日
GitLab 15.0将不再支持低于14.0.0 版本的覆盖率指导的模糊测试报告模式。GitLab 15.0也不再支持未通过报告中声明的架构版本验证的报告。
低于14.0.0的DAS架构
变更日期:2022年05月22日
GitLab 15.0将不再支持早于14.0.0 的DAST 报告架构版本。从 GitLab 15.0 开始,也将不再支持未通过报告中声明的架构版本验证的报告。
低于14.0.0 的依赖扫描模式
变更日期:2022年05月22日
GitLab 15.0将不再支持早于14.0.0的依赖扫描报告架构版本。从 GitLab 15.0 开始,也将不再支持未通过报告中声明的架构版本验证的报告。
强制验证安全报告模式
变更日期:2022年05月22日
GitLab 15.0将不再支持早于14.0.0 的安全报告模式版本。GitLab 15.0 也不再支持未通过报告中声明的架构版本验证的报告。
Godep对许可证合规性的支持
变更日期:2022年05月22日
Golang的Godep依赖管理器在2020年被弃用,并已被Go模块取代。为了降低维护成本,从14.7开始弃用Godep 项目的许可证合规性,并将在 GitLab 15.0 中删除它。
升级更新
Omnibus
通过Omnibus安装的自建实例可直接使用Linux包管理器可以升级。例如对CentOS:
yum updata/install gitlab-ce
就能自动完成升级:
升级成功后,在Gitlab Web界面的帮助中可以看到目前的版本显示:
Docker
先停止和删除旧的容器:
sudo docker stop gitlab sudo docker rm gitlab
然后Pull官方最新镜像:
sudo docker pull gitlab/gitlab-ce:latest
重新启动容器(启动参数和以前保持一致)即可,比如:
sudo docker run --detach --hostname gitlab.example.com --publish 443:443 --publish 80:80 --publish 22:22 --name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab --volume /srv/gitlab/logs:/var/log/gitlab --volume /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest
Docker compose
通过:
docker-compose pull docker-compose up -d
还没有评论,来说两句吧...