介绍适用于 SAP BTP ABAP Environment 的 DevOps

学习目标

  • 说明 SAP BTP ABAP Environment 中的更改与传输管理,同时受益于选定的 Git 功能和传输管理。

  • 说明如何将功能开发与更正(corrections)开发分离。

  • 说明如何使用 SAP Cloud Transport Management 和 Change Request Management 编排 ABAP 开发。

说明 SAP BTP ABAP Environment 中的更改与传输管理

注意

本课主要面向管理员,但涉及的任何角色都能从中受益。

本课将帮助您探索 SAP BTP ABAP Environment 中 DevOps 的概念和工具,并理解与其他平台上 SAP BTP 的 DevOps 之间的异同。

本课面向希望在 SAP BTP ABAP Environment 中创建并行扩展(side-by-side extensions)的客户。对于合作伙伴,SAP 还提供其他选项;但这些超出了本课程的范围。有关更多信息,请参见以下内容:

SAP BTP ABAP Environment 的许多 DevOps 原则与 SAP BTP 总体上的 DevOps 原则相似。

  • 团队成员频繁地将代码集成到单一主线中

  • 在每次集成之前,可使用工具通过自动化测试验证更改(与“介绍持续集成与交付 (CI/CD)”一课进行比较)。

  • 自动传输管理的推荐解决方案是 SAP Cloud Transport Management 服务(与“使用传输处理交付”一课进行比较)。SAP Cloud ALM 是 SAP BTP 的中央运维平台,也可用于 SAP BTP ABAP Environment 中的运维。(与“观察在 SAP BTP 上运行的应用程序”一课进行比较。)

然而:

  • 在 ABAP 中,您需要一种将 Git 的灵活性与成熟的 ABAP 更改与传输系统(CTS)相结合的方法。

  • 您目前还不能将 SAP BTP 服务 SAP Continuous Integration and Delivery 与 SAP BTP ABAP Environment 一起使用(参见“介绍 SAP Continuous Integration and Delivery”一课)。您需要使用第三方持续集成流水线。

  • 对于 SAP BTP ABAP Environment,我们强烈建议采用五系统版图而不是三系统版图。我们将在本课后面比较这两种选项。

本节其余部分将探讨典型开发版图中的每个主要组件。

开发版图:主要组件

上图显示:

  1. 一个全局 SAP BTP 账户:

  • 包含多个系统

  • 包含基于 Git 的更改与传输系统

  1. abapGit,用于与其他系统(例如 SAP S/4HANA Cloud 系统)之间传输代码

  2. 基于 Jenkins 的持续集成流水线

  3. SAP Cloud Transport Management (cTMS)

  4. SAP 运维服务,例如 SAP Cloud ALM 或 SAP Solution Manager 7.2 中的 Change Request Management (ChaRM)

全局账户

每个 ABAP 系统都有自己的资源。

上图描绘了两个独立代码线(codelines)中的五个系统:

  • DEV = 在主分支上开发功能

  • TST = 在主分支上进行质量保证/验收测试

  • COR = 在发布分支上开发更正

  • QAS = 在发布分支上进行质量保证/验收测试

  • PRD = 生产性最终使用

基于 Git 的更改与传输系统 (gCTS)

gCTS 使您能够使用 Git 作为版本管理系统来管理 ABAP 更改与传输管理流程。有两种选项:

SAP 托管的 gCTS

内部 Git 客户端在操作系统层面管理 Git 仓库。这种安排在易用性方面具有优势:SAP 作为平台提供者负责仓库、导入队列等。但缺点是您无法直接访问 Git 仓库。

有关更多信息,请参见:

软件组件生命周期管理 | SAP 帮助门户

自带 Git

自带 Git(Bring Your Own Git,BYOG)让您可以连接自己的 Git 仓库。您可以选择自己的 Git 提供者——包括 GitLab、GitHub 或 Bitbucket——并更轻松地将 ABAP 语言 Git 仓库集成到现有的自定义工作流和持续集成流水线中。SAP 确保导入的提交的一致性。

但是,用户无法在其远程 Git 仓库中进行代码更改并将其导入本地 SAP BTP ABAP 环境系统实例,因为这可能违反 ABAP cloud 开发的任何准则。

有关更多信息,请参见:

自带 Git | SAP 帮助

软件组件

在 SAP 托管或 BYOG 模式下,您都使用 Manage Software Components 应用与仓库交互,以创建或克隆仓库、管理分支和标签等。使用软件组件,您可以将 ABAP 开发对象从一个系统传输到另一个系统。每个软件组件与一个 Git 仓库以及与一个传输层具有 1:1 关系。

这使您能够同时利用选定的 Git 功能和 ABAP 基于 Git 的更改与传输系统 (gCTS)。

  1. 您首先要创建一个 软件组件 ,该操作在 Manage Software Components 应用中进行。一旦您创建并 克隆 该软件组件,ABAP 系统就会自动 创建一个结构包 。

  2. 您在 Eclipse 中的 ABAP Development Tools (ADT) 里进行开发。

  3. 开发完成后,您像往常一样释放 传输请求 。一旦传输被释放,对象就会被推送到关联的 Git 仓库中。使用基于 Eclipse 的 ABAP 开发工具中的 Transport Organizer,您可以创建、管理和释放传输请求。

创建每个软件组件时,请仔细规划其结构:

  • 您无法将开发对象从一个软件组件移动到另一个软件组件。

  • 一个软件组件的对象通过已发布的 API 暴露其功能。因此,要使其他软件组件能够使用您的软件组件,请将 API 状态设置为 "Released"。

  • 软件组件不能有循环依赖。相反,应将基本复用功能归入一个专用的 SW 组件。

有关 Manage Software Components 应用的更多信息,请参见:

管理软件组件 | SAP 帮助门户

有关详细的分步指南,请参见教程:

在两个系统之间传输软件组件

abapGit

gCTS 仅用于一个 SAP BTP 全局账户内系统之间的传输。

abapGit 用于:

  • 本地到云的代码迁移:请参见教程 使用 abapGit 将 ABAP 源代码转换到云端 以及博客文章 如何将您的 ABAP 自定义代码带到 SAP BTP ABAP Environment

  • 云到本地的传输

  • 系统退役时导出代码

  • 云到云的传输——例如,作为开源与他人共享代码

  • 在专用开发/测试 ABAP 系统中实施分布式开发和测试机制,例如概念验证,或依赖于解决方案常规开发、但独立于其生命周期运行的功能。

持续集成流水线

您不能将 SAP BTP 服务 SAP Continuous Integration and Delivery 与 SAP BTP ABAP Environment 结合使用。因此,如果您想为 ABAP 仓库运行持续流水线,需要自行设置流水线。例如,您可能希望运行自动化的 ABAP Unit 和 ABAP Test Cockpit (ATC) 检查。

为帮助您完成设置,SAP 提供了 Project Piper——预定义的流水线、阶段和步骤,您可以将其与 Jenkins 服务器等一起使用。它们是开源的,并基于 SAP BTP ABAP Environment API。

此设置过程的详细描述超出了本课程的范围。不过,详细信息可在此处获取:

  • 项目 "Piper":面向 SAP 生态系统的持续交付

  • 面向 SAP BTP ABAP Environment 的 CI/CD 工具 - SAP Community

SAP Cloud Transport Management 服务

与 SAP BTP 中的其他开发工件一样,开发子账户中的 ABAP 工件必须得到可靠管控,并送到测试和生产子账户。SAP 为此提供的工具是 SAP Cloud Transport Management。有关更多信息,请参见“在传输管理中反映您的交付版图”一课。

SAP 运维与编排服务,例如 SAP Cloud ALM 和 SAP Solution Manager 7.2

同样,SAP Cloud ALM 和 SAP Solution Manager 7.2 中支持 ABAP 工件。有关这些服务的通用信息,请参见“观察在 SAP BTP 上运行的应用程序”一课。

我们将在本单元的最后一节“将 SAP Cloud Transport Management 与 Change Request Management 结合使用”中讨论 SAP Cloud Transport Management 与 Change Request Management 的结合使用。在此之前,我们需要讨论上述版图的另一个特性。默认情况下,开发版图通常被描述为包含三个系统:开发 (DEV)、质量保证 (QAS) 和生产 (PRD)。然而,在许多情况下,我们建议再增加两个:更正 (COR) 和测试 (TST)。在下一节中,我们将探讨这两种备选设置。

将功能开发与更正开发分离

开发版图:三系统与五系统

设置系统版图时,您有两种选择:

  • 三系统版图 :用于临时的开发活动,例如,用于测试需要与开发并行运行的大型应用程序

  • 五系统版图 :用于拥有众多开发人员的大型应用程序的永久性或无限期开发活动,此时开发无法暂停以实施紧急更正

观看视频以了解更多。

视频:本节含 SAP 官方视频(视频 ID 1_g1n6nqo2),需在 learning.sap.com 在线观看。

五系统版图的优势在于,您可以将功能开发路线与热修复路线分开。也就是说,您可以在无限代码线中尽情开发。如果您需要实施更正,可以直接在发布分支上的 COR 中进行,并传输该修复,而不必担心有新功能挡在路上、可能尚未就绪。

通过系统休眠降低成本

以前,运行这么多系统的成本是一个问题。不过,自 SAP BTP 2308 起,您可以临时休眠或暂停任何并非长期需要的系统——在此即 TST、COR 和 QAS。也就是说,您只需为磁盘空间付费,而不为内存或处理时间付费。您还需要预留几分钟的启动时间。

这使您能够降低运营成本,并使五系统版图的经济性大大提高。

更多信息:

使用 SAP Cloud Transport Management 和 Change Request Management 编排 ABAP 开发

将 SAP Cloud Transport Management 与 Change Request Management 结合使用

您可以使用 Change Request Management 记录更改,并通过 SAP Cloud Transport Management 将其集成。观看视频以了解更多。

视频:本节含 SAP 官方视频(视频 ID 1_6urf3yt3),需在 learning.sap.com 在线观看。

业务场景

作为 Rotating Banana 的 CTO,您决定在保持核心洁净(clean core)的同时,通过在 SAP BTP ABAP Environment 中创建新的并行 ABAP 应用程序来扩展现有事务(transaction)。

该应用程序将拥有 SAP Fiori 用户界面。

您决定设置包含两个代码线的开发版图:

  • “Infinity”(DEV-TST),开发团队在此开发新功能

  • “Correction”(COR-QAS-PRD),热修复在此提供。

此外:

  • 在 “infinity” 中,您可以快速进行更改,并使用通过 Project 'Piper' 创建的 CI 流水线自动化测试。

  • 在 “correction” 中,您使用 SAP Cloud Transport Management 自动化从 COR 到 QAS 的传输。

您已经熟悉 SAP Solution Manager 7.2 中的 Change Request Management (ChaRM),因此您使用这些 SAP 工具来编排对 ABAP 和 SAP Fiori 组件的更改。

总结

您现在应该能够:

  • 说明 SAP BTP ABAP Environment 中的更改与传输管理,同时受益于选定的 Git 功能和传输管理。

  • 说明如何将功能开发与更正开发分离。

  • 说明如何使用 SAP Cloud Transport Management 和 Change Request Management 编排 ABAP 开发。

本课其余配图

DOP100_03_U3L2_01

U3-L11-Landscape-ByoG

rotating banans logo_v3

本课其余配图

rotating banans logo_v3

本课其余配图

rotating banans logo_v3

本课其余配图

rotating banans logo_v3