基于 abapGit 和 abaplint 的 ABAP 持续集成的一个例子-阿里云开发者社区

开发者社区> 开发者小助手-bz6> 正文

基于 abapGit 和 abaplint 的 ABAP 持续集成的一个例子

简介: 基于 abapGit 和 abaplint 的 ABAP 持续集成的一个例子
+关注继续查看

这是 Jerry 2021 年的第 61 篇文章,也是汪子熙公众号总共第 338 篇原创文章。


短歌行

曹操


对酒当歌,人生几何!


譬如朝露,去日苦多。


慨当以慷,忧思难忘。


何以解忧?唯有杜康。


青青子衿,悠悠我心。


但为君故,沉吟至今。


呦呦鹿鸣,食野之苹。


我有嘉宾,鼓瑟吹笙。


明明如月,何时可掇?


忧从中来,不可断绝。


越陌度阡,枉用相存。


契阔谈讌,心念旧恩。


月明星稀,乌鹊南飞。


绕树三匝,何枝可依?


山不厌高,海不厌深。


周公吐哺,天下归心。

image.png

Jerry 之前写过一篇文章,使用 abapGit 在 ABAP On-Premises 系统和 SAP 云平台 ABAP 环境之间进行代码传输,介绍了 abapGit 这个开源工具的基本用法。


本文 Jerry 介绍基于 abapGit 和另一个开源工具,abaplint,实现 ABAP 持续集成的一个具体场景:当有新的代码提交到 ABAP 代码仓库时,自动触发 ABAP 代码检测。


当然,持续集成指的是,只要有新的代码提交,就自动运行构建和测试,反馈运行结果。仅当能确保新提交的代码符合预期,再将新代码集成到主干。因此本文介绍的例子,只是 ABAP 持续集成中的一个小步骤而已。


我们首先来简单了解一下 abaplint.使用 SAP UI5 开发的朋友们,想必都接触过 ESLint,一款 JavaScript 代码检测工具。


Jerry 每天用 Angular 开发 SAP Commerce Cloud UI,也借助了 Visual Studio Code 名为 TSLint 的扩展,来对 TypeScript 代码进行检测。

image.png

同样,abaplint 也是一款对 ABAP 代码根据指定的规则进行检测的开源工具,基于 TypeScript 编写。


下面是它的一个 demo 网站:


https://playground.abaplint.org/


其中 abaplint.json 是配置文件,定义了检测规则。违反规则的代码,会通过红色波浪线高亮出来:

image.pngimage.png注意,abaplint 对代码的检测和 ABAP 服务器上的代码语法检查(Syntax Check)完全是两回事。后者由位于 ABAP 内核的 Compiler 完成,而前者只是 TypeScript 实现的基于源代码文本级别的检测,abaplint 本身并不能从语法层面识别 ABAP 语言,只是机械地基于文本静态分析,完成 abaplint.json 里定义的检测任务而已。


下面介绍如何配置 abapGit 和 abaplint 实现最简单的 ABAP 持续集成。这个例子不需要任何开发,仅仅包含一些配置工作,不超过半小时即可完成。


(1) 创建一个 Github 仓库存放 ABAP 代码。我选择把所有的 ABAP 代码放置在 src 文件夹内。


注意:abaplint 只能扫描特殊格式的 ABAP 代码文件,即经过 abapGit 提交的 ABAP 代码。

image.pngimage.pngimage.png

这个 abaplint.yml 文件,负责指定当该代码仓库有新的代码提交时,通过 Github Workflow 执行的操作内容。其中第2行开始的 on 指令,告诉 Github,当 main 分支有 push 或者 pull request 到来时,执行名为 abaplint 的 job. 而后者的工作内容,其具体步骤从第14行的 steps 指令开始定义。


第15行的 uses 指令,意思是重用 Github 自带的名为 setup-node action,完成 Node.js 运行环境的准备。


setup-node 这个 action 实现于如下的 Github 仓库:


https://github.com/actions/setup-node

image.png

而 run 命令里维护的如下命令行,意思是 Node.js 运行环境准备好之后,安装 abaplint 命令行工具并执行。


npm -g install @abaplint/cli

abaplint


(2) 根目录下新建 abaplint.json,定义 ABAP 代码检测规则。为了演示起见,我只启用了如下图所示的几条简单规则。关于 abaplint.json 支持的所有检测规则,请查阅这个链接:


https://github.com/abapGit/abapGit/blob/main/abaplint.json


image.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.pngimage.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9950 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13699 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
11808 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
11867 0
搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)
一、环境准备: 1、JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2、Jmeter:http://jmeter.
924 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7312 0
1853
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载