百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

GitLab 14.6发布,优化Geo高可用,安全更新等

liuian 2025-01-01 21:35 62 浏览

昨天,GitLab官方按照管理发布了有一个月度版本GitLab 14.6的发布,这也是本年度收官版本。14.6中在安全合规性方面,在Geo方面以及MD代码块一键复制等方便做了优化,另外还在UI图标方面发布了一套全新的图标。详细情况请和虫虫一起学习。

GitLab 14.6主要改进

使用 Geo 实现无缝的全球性能(PREMIUM)

在 GitLab 14.6之前,可以为所有Git操作使用一个统一的UR设置Geo。但是,每个Geo副本都有自己的Web UI和API访问 URL,因此用户必须知道其使用的特定Geo副本的URL。Geo副本的Web UI也是只读的,限制用户查看页面并要求去主站点上执行更改。

在 GitLab 14.6 中,GEO辅助站点透明地将写入请求代理到主站点,同时加速大多数读取请求。系统管理员可以为整个组织的所有GitLab用户提供一个URL,该URL会自动使用离他们最近的 Geo 站点。用户无需使用不同的配置适配Geo,也不用担心哪些操作在Geo二级站点上不起作用。全球分布的团队现在受益于加速git clone或git pull命令,以及无缝的全球体验。

默认情况下为新的Geo安装启用辅助代理和统一URL支持。还可以在现有Geo 安装上设置统一URL并启用辅助代理。

GitLab Agent 的活动信息

能够监控集群的活动有助于检测和排除故障事件,并在它们成功时放心。GitLab 现在随附记录实时事件的GitLab代理的活动列表。第一个实现记录连接和令牌状态,并将在未来版本中跟踪更多事件。

无缝切换维基编辑器

使用新的丰富的Markdown编辑器编辑wiki页面,让每个人都可以更轻松地做出贡献,无论他们对Markdown语法的了解程度如何。在某些情况下,可能还喜欢编写原始Markdown,但使用WYSIWYG界面进行更复杂或乏味的格式化任务,例如创建表格。

以前版本的GitLab要求在丰富的Markdown编辑器和Markdown源之间切换之前保存更改,这给编辑增加了更多的步骤和摩擦。在GitLab 14.6中,现在可以在两种编辑体验之间无缝切换,而无需提交更改,随时选择适合需求的编辑器。

在贡献日历图表中可见的私人贡献

在新本中,更改了用户配置文件中的贡献日历图表显示贡献的方式。私人贡献显示在贡献列表中,但未显示在贡献日历图表中,用户配置文件并未完全代表用户贡献。

使用API将组转移到父组

在新本中,添加了使用Groups API将组转移到新父组的功能。之前,该操作只能通过过UI实现。

使用Groups API将子组移动到不同的父组并将子组变成顶级组。

管理员和用户可以使用此新功能:

要转移组的所有者角色。

如果转移组,则允许在新的父组中创建子组。

如果将子组转换为顶级组,则允许创建顶级组。

一键复制Markdown中的代码块

现在可以通过单击在Markdown 复制代码块,而不是选择块中的所有代码并使用键盘将其复制到剪贴板。

全新清新图标系

GitLab中的产品图标已更新为:

与其他UI元素更加平衡。

更好地与品牌保持一致。

通过允许更容易地迭代和新图标的引入,被构建为更加面向未来。

在浅色和深色UI中都能很好地工作。

更好地传达抽象概念和隐喻。

查看内联使合并请求线程过时的更改

在处理合并请求中的审阅反馈时,经常更改审阅者评论行。在这些评论线程中,GitLab表示进行了新的更改。但是,要了解这些新更改是否针对反馈,审阅者必须离开讨论的上下文。

新版本中在查看与旧更改相关的线程时,可以直接在线程中查看新更改。这种改进的上下文可帮助您更快、更准确地复习。

GitLab Runner Pod 清理

如果有剩余的Kubernetes Runner Pod,现在可以使用GitLab Runner Pod Cleanup来清理它们。该开源实用程序与GitLab Runner Manager一起安装在 Kubernetes集群中,并在配置后删除集群中孤立的runner pod。当使用GitLab Runner的Kubernetes执行器大规模执行 CI/CD 作业时,新实用程序可减少维护开销。

在CI/CD 配置中支持job:when

以前,不可能将GitLab CI/CD作业配置为在作业级别同时定义rules和when关键字。必须when在每个rules部分都添加内部,这可能会导致CI?/CD配置过长或重复。

在新版本中,取消了该限制,现在可以when在作业级别使用rules. 这使得when更灵活,并有助于创建更简单的作业配置。

从UI启用依赖代理清理策略

可以使用GitLab依赖代理代理和缓存来自Docker Hub的容器镜像,以实现更快、更可靠的构建。随着时间的推移,团队可能会向缓存中添加许多项目,从而导致更高的存储成本。

已经能够通过使用API清除整个缓存来解决此问题。但这是低效的,因为只想删除不再使用的陈旧过时的项目。这就是我们为依赖代理添加清理策略的原因。您可以以编程方式从团队最近未使用的缓存图像标签中删除。但是,此功能需要您使用GraphQL,如果不经常使用它,则效率很低。

新版本中,可以从用户界面为依赖代理启用自动生存时间 (TTL) 策略。通过设置 > 包和注册表 > 依赖代理,并启用设置以在90天后自动从缓存中清除项目。

使用部署令牌下载 Composer依赖项

现在可以使用部署令牌来验证与 Composer 存储库交互的用户。此前,个人访问令牌和作业令牌可用于对从 GitLab Composer 存储库发布和下载 Composer 依赖项的用户进行身份验证。这些令牌与特定用户相关联。部署令牌提供了一种与特定用户无关的身份验证方法,确保生产工作流程更加高效和安全。

支持 RetireJS 的HTTPS 代理设置(ULTIMATE)

依赖扫描现在通过尊重HTTPS_PROXY环境变量来支持Retire.js中的代理设置。如果HTTPS_PROXY设置,它将retire作为 CLI 选项传递到命令行。

自动删除旧的部署git引用

随着项目的不断部署,部署的数量可能会大幅增加。为了保持Git命令的高性能,我们添加了自动删除旧部署的Git引用。GitLab将保留每个项目最近的50000 个部署,并自动删除其他项目的Git引用。

Geo验证四种附加数据类型(PREMIUM)

GitLab将上传、LFS对象、页面部署和外部合并请求差异等数据存储在文件系统或对象存储中。Geo将这些数据复制到一个或多个辅助站点,以提高分布式团队的生产力或作为灾难恢复策略的一部分。当存储在文件系统中时,Geo现在还自动验证复制的上传、LFS对象、页面部署和外部MR差异的数据完整性。这确保它们在传输或静止时不会损坏。如果使用Geo作为灾难恢复策略的一部分,这将提供额外的数据丢失保护。

Markdown中呈现引用问题的标题

在Markdown字段中引用问题、Epic或合并请求时,以前无法显示和显示除ID之外的其他上下文。现在可以附加到问题、Epic或合并请求引用以呈现标题。

Squash提交消息模板

Squash提交是通过在合并时组合所有提交来清理合并请求的提交历史的好方法。分支历史变得更容易阅读和遵循,而变化后台信息保持不变。GitLab之前使用合并请求标题作为默认的提交消息。如果您在合并前未编辑消息,则有关更改的重要详细信息可能会丢失。

项目维护人员现在可以根据项目需要自定义默认的提交消息。包括有关每个合并请求的详细信息,例如源分支和目标分支,以及有用的变量。有了更完整的提交消息,每个人现在都可以更好地了解更改的上下文。

API 响应中返回的作业失败原因

使用API收集有关作业失败原因的数据可能很困难。例如,可能需要准确的失败原因以更好地使用retry:when关键字。

现在,在对Jobs API的响应中添加了failure_reason,这样收集作业失败数据要容易得多。

为待处理作业触发的 Webhook

以前,使用作业事件Webhook进行CI/CD监控具有挑战性,因为很难跟踪项目中可能存在的作业数量。

现在,当作业状态更改为pending时,Webhook会触发事件,因此不再需要实施变通方法或自定义集成来跟踪所有作业状态。

仅使用name和发布Conan包version

使用 GitLab Conan存储库来发布和共享的C/C++ 包。当创建一个Conan包,有四个领域要考虑:name,version,user,和channel。这些字段唯一地标识一个包。该user和channel字段是可选的Conan 2.0,但GitLab需要继续使用它们。自定义命名约定以匹配 GitLab 中的要求而不是Conan设置的标准是低效且不切实际的。

新版本中更新了GitLab Conan存储库以与Conan保持一致。现在可以使用或不使用user和channel字段发布和下载Conan包。

Omnibus套件更新

Mattermost升级为了 6.1,新版本包括团队中最近提及和保存帖子的单一视图、快速访问最近使用的反应、定时请勿打扰、剧本和板预览、Playbooks和面板预览,改进的通知和板计算。还包括安全更新,建议从早期版本升级。

GitLab 14.6附带了适用于amd64和arm64架构的Debian 11 Bullseye软件包。

安全和合规性审计

设置最大SSH密钥生命周期(ULTIMATE)

管理员现在可以设置SSH密钥可以保持有效的最大天数。对于有合规性要求定时间间隔后强制执SSH密钥到期的组织尤其有用。GitLab已经能够设置个人访问令牌(PAT)可以保持有效的最大天数,并且此功能以类似的方式工作。

要设置此新限制,管理员可以导航到管理区域并选择设置>常规。通过展开帐户和限制以设置SSH 密钥的最大允许生命周期(以天为单位)来查找新设置。

依赖列表中的容器扫描结果(ULTIMATE)

安全团队、合规团队和开发人员必须全面了解项目使用的所有依赖项。默认情况下,容器扫描作业现在将任何已识别的系统依赖项添加到依赖项列表中。此系统依赖项列表与依赖项扫描作业标识的任何应用程序依赖项一起出现。用户现在可以在安全与合规性>依赖项列表页面上的一个集中位置查看项目依赖项的完整列表。

SAST扫描执行策略(ULTIMATE)

用户现在可以要求SAST扫描定期运行或作为项目CI管道的一部分运行,而与.gitlab-ci.yml文件的内容无关。这允许安全团队单独管理这些扫描要求,而无需开发人员更改配置。可以在安全与合规>策略页面上开始使用安全策略。要指定SAST扫描,请将字段设置为scansast

默认启用 WebAuthn

新版本中默认启用WebAuthn。用户现在可以在Apple设备上使用Touch ID作为第二个身份验证因素,只要他们的浏览器支持它。这也消除了在弃用U2F而支持 WebAuthn 的浏览器中看到的错误消息。

SAST 和秘密检测的自定义规则集可组合性(ULTIMATE)

正在改进我们在GitLab 13.5中引入的SAST和秘密检测的自定义规则集功能。自定义规则集让用户可以根据组织的偏好定制SAST和秘密检测分析器的行为。为了改进此功能,新引入了从多个源添加规则的功能,例如Git存储库、本地文件和原始源更改。此更改使合成和管理来自不同位置的多个自定义规则集变得更加容易,组织可以使用这些规则集跨存储库和源继承规则以获得更大的灵活性。最初,该更改适用于SAST Semgrep、Nodejs 和 Gosec 分析器以及秘密检测. 未来版本中将此功能扩展到其他分析器。

静态分析分析器更新

GitLab静态分析由一组许多安全分析器组成,GitLab 静态分析团队积极管理、维护和更新这些分析器。14.6 版本中带来了额外的覆盖范围、错误修复和改进。

Spotbugs更新到v2.28.11:

Log4j库更新为补丁版本 (v4.5.2);

修复自定义CA证书支持。

PMD更新到 v2.12.10:主动删除Log4j库。

Semgrep 更新到 v0.76.2 ;

Gosec 更新到 v2.9.5;

如果使用GitLab托管的供应商SAST模板(SAST.gitlab-ci.yml),则无需执行任何操作即可接收这些更新。但是,如果覆盖或自定义自己的CI 板,则需要更新CI配置。要保留任何分析器的特定版本,可以固定到分析器的次要版本。固定到以前的版本会阻止接收自动分析器更新,并要求在CI模板中手动增加分析器版本。

变量 DS_EXCLUDED_PATHS 行为更改为预过滤器(ULTIMATE)

对于依赖扫描变量的用户DS_EXCLUDED_PATHS,它现在将进行预过滤。依赖扫描现在会DS_EXCLUDED_PATHS在搜索支持的项目时考虑,并将预先过滤掉那些匹配的项目。预过滤可防止分析器在处理已使用DS_EXCLUDED_PATHS.这使用户可以根据需要跳过依赖文件并构建文件,并且在某些情况下可以提高性能。

此更改于2021年12月2日针对gemnasium、2021年12月6日针对 gemnasium-python 和 2021年12月 日针对 gemnasium-maven 进行。此更改适用于所有版本,因为更改已向后移植。

将问题提升为事件的快速行动

在为某个问题投入时间和精力后,有时参与者会意识到该问题实际上是一个事件。利用快速操作/promote_to_incident,用户现在可以将问题升级为事件。当问题被提升时,所有现有的上下文(标题、描述、标签、受让人、评论等)仍然是事件的一部分。

自定义容器扫描漏洞的重复数据删除(ULTIMATE)

扫描镜像时,容器扫描默认假设镜像命名约定在镜像标签中存储任何特定于分支的标识符而不是镜像名称。对于遵循分支名称是映像名称一部分的命名约定的客户,此默认设置使扫描程序无法正确删除相同漏洞的重复数据。现在可以通过CS_DEFAULT_BRANCH_IMAGE在容器扫描作业中指定新变量来自定义默认设置。默认情况下,为使用Auto DevOps的项目设置此变量。这允许合并请求中的安全检查通过删除默认分支中已经存在的任何漏洞来正确识别新漏洞和预先存在的漏洞。

SAST对.NET 6的支持

Microsoft发布的.NET 6.0是.NET Core的下一个主要版本,它包含巨大的性能提升和新的计算选项,并且应该支持简化的.NET代码。GitLab .NET SAST分析器Security Code Scan以支持这个新版本, SAST 语言检测也支持它,允许 GitLab SAST 自动检测.NET 6项目。由于向后兼容性问题,如果想利用这个新的.NET 6 SAST扫描,将需要更新的.gitlab-ci.yml文件以固定到安全代码扫描的新主要版本。可以将此代码段添加到的.gitlab-ci.yml文件中以尝试这些新的扫描功能。在未来的版本中,即将在 GitLab 15.0中废除和删除3.0之前的任何.NET 版本的SAST扫描。在 GitLab 15.0 中,将推动这个新版本的安全代码扫描默认运行,将启用.NET 5和6 SAST 扫描,而无需实验标志。

取消关联安全策略项目(ULTIMATE)

项目所有者现在可以取消安全策略项目与开发项目的链接。为此,首先导航到安全与合规性>策略,然后选择编辑策略项目按钮。然后选择垃圾桶图标以取消链接先前关联的安全策略项目。

GitLab Runner 14.6

同期还还发布了GitLab Runner 14.6,主要更新有:

始终在gitlab_runner_jobsPrometheus 指标中包含idle值

Bug修复:

PWSH Executor 无法在作业失败时终止

永远不会删除旧的 Runner pod。

GitLab Helm chart改进

GitLab 4.6 中,捆绑的NGINX Ingress Controller 已升级到v1.0.4。对于使用图表内NGINX Ingress Controller 的用户,Kubernetes 的新最低版本为 1.19。

Bug修复

14.6 中还进行了大量的bug修复:

运行手动作业时的原始变量不会在作业重试时重用。

当被阻止的 SAML 用户尝试登录时,user_failed_login webhook 会导致无限循环。

Elasticsearch password 中不支持特殊字符。

修复 GITLAB_USER_LOGIN 偶尔不正确的值。

修复 CI 分钟使用图表反向显示时间。

服务台自定义邮箱应检查其他标题。

为组禁用依赖代理页面时隐藏它。

如果 Container Registry 以只读模式启动,请禁用上传清除程序。

修复由于验证错误导致的 Container Registry 推送失败。

如果 Container Registry 数据库凭据错误,则修复恐慌。

对 CI 分钟图表应用程序的月份进行排序。

修复 CI/CD 关闭时可用的 CI/CD 设置。

修复管道页面中损坏的分段控件。

当任一管道没有覆盖报告时,修复覆盖批准规则同步中的错误。

在问题板上设置标签会产生乱码结果。.

在MR搜索中按迭代过滤不起作用。

在范围迭代的问题板上创建问题不会将其分配给当前活动的迭代。

问题导出到 CSV 忽略负标签过滤器。

YAML 错误导致安全策略执行失败。

将漏洞检查字段添加到 API 文档。

使用 $CI_JOB_TOKEN 按标签名称获取发布返回 404 Project Not Found的错误。

可用性改进


在 GitLab 14.6 中,在问题、项目、里程碑等提供了可用性改进:

将“上次活动”列添加到 /admin/users 中的 CSV 导出。

在 UI 中过滤和显示陈旧的跑步者。

重新定位工具栏中的在线跑步者文本数量。

运行程序管理页面的版本字段溢出 IP 地址。

在 runner table 中的列之间添加空格。

pages:deploy 作业已切换作业表中的列。

在项目中提供来自 Analytics?CI/CD 的失败管道的链接。

更新依赖代理副本和标签。

在迷你管道图中垂直对齐上游和下游管道。

包列表:更新管道元数据。

改进了批量删除容器镜像标签的用户体验。

依赖代理 TTL 的新设置。

修复在合并请求中调整文件浏览器的大小。

合并请求中超过 13 个文本改进。

用户需要更多有关代码搜索结果上次修改时间的信息。

突出显示时代码行号的地址颜色对比。

VSA:创建和删除选项应在 VS 下拉菜单中保持可见。

允许用户设置要在 MR 小部件中显示的规则名称。

漏洞报告:替换管理员图标。

作业运行时间总是标题为“已用时间”。

不支持 Epics API 中的过滤器。

将 parent_iid 和 parent 链接添加到 Epics API。

功能变更和删除

免费层中将触发管道的数量限制为 5K

变更日期:2021年12月22日

单个项目中的大量触发管道会影响 GitLab的性能。在GitLab 14.6 中,将 GitLab SaaS上单个项目中的触发管道数量限制为 25000。该更改仅适用于免费套餐中的项目,Premium和 Ultimate不受此更改的影响。

发布CLI作为通用包分发

变更日期:2021年12月22日

新版本中CLI将被释放作为一个普通的包在GitLab 14.2起。将继续将其作为二进制文件部署到S3,直到GitLab 14.5 并停止在 GitLab 14.6 的S3中分发。

升级更新

Omnibus

通过Omnibus安装的自建实例可直接使用Linux包管理器可以升级。例如对CentOS:

yum updata/install gitlab-ce

就能自动完成升级:

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

升级到 GitLab 14.6 的重要说明

GitLab 14.6版本中引用了Mattermost 6.0到6.1升级和迁移过程,并且比大多数Mattermost升级的典型迁移时间更长。升级不需要任何手动步骤,但升级说明中有一些关于如何减少升级期间Mattermost服务器停机时间的建议,请参考官方的说明。

相关推荐

驱动网卡(怎么从新驱动网卡)
驱动网卡(怎么从新驱动网卡)

网卡一般是指为电脑主机提供有线无线网络功能的适配器。而网卡驱动指的就是电脑连接识别这些网卡型号的桥梁。网卡只有打上了网卡驱动才能正常使用。并不是说所有的网卡一插到电脑上面就能进行数据传输了,他都需要里面芯片组的驱动文件才能支持他进行数据传输...

2026-01-30 00:37 liuian

win10更新助手装系统(微软win10更新助手)

1、点击首页“系统升级”的按钮,给出弹框,告诉用户需要上传IMEI码才能使用升级服务。同时给出同意和取消按钮。华为手机助手2、点击同意,则进入到“系统升级”功能华为手机助手华为手机助手3、在检测界面,...

windows11专业版密钥最新(windows11专业版激活码永久)

 Windows11专业版的正版密钥,我们是对windows的激活所必备的工具。该密钥我们可以通过微软商城或者通过计算机的硬件供应商去购买获得。获得了windows11专业版的正版密钥后,我...

手机删过的软件恢复(手机删除过的软件怎么恢复)
手机删过的软件恢复(手机删除过的软件怎么恢复)

操作步骤:1、首先,我们需要先打开手机。然后在许多图标中找到带有[文件管理]文本的图标,然后单击“文件管理”进入页面。2、进入页面后,我们将在顶部看到一行文本:手机,最新信息,文档,视频,图片,音乐,收藏,最后是我们正在寻找的[更多],单击...

2026-01-29 23:55 liuian

一键ghost手动备份系统步骤(一键ghost 备份)

  步骤1、首先把装有一键GHOST装系统的U盘插在电脑上,然后打开电脑马上按F2或DEL键入BIOS界面,然后就选择BOOT打USDHDD模式选择好,然后按F10键保存,电脑就会马上重启。  步骤...

怎么创建局域网(怎么创建局域网打游戏)

  1、购买路由器一台。进入路由器把dhcp功能打开  2、购买一台交换机。从路由器lan端口拉出一条网线查到交换机的任意一个端口上。  3、两台以上电脑。从交换机任意端口拉出网线插到电脑上(电脑设置...

精灵驱动器官方下载(精灵驱动手机版下载)

是的。驱动精灵是一款集驱动管理和硬件检测于一体的、专业级的驱动管理和维护工具。驱动精灵为用户提供驱动备份、恢复、安装、删除、在线更新等实用功能。1、全新驱动精灵2012引擎,大幅提升硬件和驱动辨识能力...

一键还原系统步骤(一键还原系统有哪些)

1、首先需要下载安装一下Windows一键还原程序,在安装程序窗口中,点击“下一步”,弹出“用户许可协议”窗口,选择“我同意该许可协议的条款”,并点击“下一步”。  2、在弹出的“准备安装”窗口中,可...

电脑加速器哪个好(电脑加速器哪款好)

我认为pp加速器最好用,飞速土豆太懒,急速酷六根本不工作。pp加速器什么网页都加速,太任劳任怨了!以上是个人观点,具体性能请自己试。ps:我家电脑性能很好。迅游加速盒子是可以加速电脑的。因为有过之...

任何u盘都可以做启动盘吗(u盘必须做成启动盘才能装系统吗)

是的,需要注意,U盘的大小要在4G以上,最好是8G以上,因为启动盘里面需要装系统,内存小的话,不能用来安装系统。内存卡或者U盘或者移动硬盘都可以用来做启动盘安装系统。普通的U盘就可以,不过最好U盘...

u盘怎么恢复文件(u盘文件恢复的方法)

开360安全卫士,点击上面的“功能大全”。点击文件恢复然后点击“数据”下的“文件恢复”功能。选择驱动接着选择需要恢复的驱动,选择接入的U盘。点击开始扫描选好就点击中间的“开始扫描”,开始扫描U盘数据。...

系统虚拟内存太低怎么办(系统虚拟内存占用过高什么原因)

1.检查系统虚拟内存使用情况,如果发现有大量的空闲内存,可以尝试释放一些不必要的进程,以释放内存空间。2.如果系统虚拟内存使用率较高,可以尝试增加系统虚拟内存的大小,以便更多的应用程序可以使用更多...

剪贴板权限设置方法(剪贴板访问权限)
剪贴板权限设置方法(剪贴板访问权限)

1、首先打开iphone手机,触碰并按住单词或图像直到显示选择选项。2、其次,然后选取“拷贝”或“剪贴板”。3、勾选需要的“权限”,最后选择开启,即可完成苹果剪贴板权限设置。仅参考1.打开苹果手机设置按钮,点击【通用】。2.点击【键盘】,再...

2026-01-29 21:37 liuian

平板系统重装大师(平板重装win系统)

如果你的平板开不了机,但可以连接上电脑,那就能好办,楼主下载安装个平板刷机王到你的个人电脑上,然后连接你的平板,平板刷机王会自动识别你的平板,平板刷机王上有你平板的我刷机包,楼主点击下载一个,下载完成...

联想官网售后服务网点(联想官网售后服务热线)

联想3c服务中心是联想旗下的官方售后,是基于互联网O2O模式开发的全新服务平台。可以为终端用户提供多品牌手机、电脑以及其他3C类产品的维修、保养和保险服务。根据客户需求层次,联想服务针对个人及家庭客户...