利用通义灵码实现我的第一次开源贡献

news2024/9/20 18:40:15

作者:重庆邮电大学计算机学院李逸雄

结缘开源

最早了解开源是从学校的兴趣组织开始的。2023 年 10 月 21 日,openSUSE 亚洲峰会在我们学校召开,这次会议汇聚了许多来自 openSUSE 社区贡献者以及对开源感兴趣的爱好者们。我第一次知道有这么多志同道合的爱好者在进行开源贡献,他们以个人兴趣为驱动力共同维护着一个社区。这次峰会激发了我对开源社区的兴趣,一颗种子也开始从我心中发芽——我也想要做一次开源贡献!

2024 年 6 月 24 日,我上完课准备回宿舍,刚好在必经之路上看到“2024 天池云原生编程挑战赛”的宣传海报。我一看居然是阿里云举办的,回到宿舍后就立马仔细查看了详细的比赛信息。“赛道3:用通义灵码,人人都是开源贡献者”很符合我的兴趣,我也特别想能有一个被 Merged 的 PR。赛道 3 有很多个选题,结合我自己学习过云原生的一些知识,我最终选择了 Higress 开源项目,这是阿里云自己开发的 API 网关,它和 Nginx、Traefik 很类似,但是它增加了许多新的功能,并且更聚焦于云原生环境中的服务网格。尤其是它有丰富的插件,特别是与 AI 有关的插件,使得用户可以很轻易的拥有一个属于自己的 AI。

参加比赛

因为 Higress 这个开源项目是开放式赛题,浏览了当时的 issues,因为接触过 CI/CD,并且懂得 Kubernetes 和 Docker 的一些操作,所以我最终选择了这个 issue:支持通过 GitHub Actions 来构建和发布 Wasm 插件镜像 · Issue #1052 · alibaba/higress。

通义灵码体验

虽然接触过 CI/CD,但是我从来没有在 Github 上实现过它,也不会 Github Action 的语法格式。通义灵码给了我很大的帮助。我按照通义灵码安装文档将它安装到了我的 VS Code 中,接下来就是愉快的使用环节了。

在使用通义灵码的过程中,我先复制了一份写好的 Github Action Workflow,利用通义灵码的解释代码和直接对话功能, 我很快地了解了 Github Action 的基本语法以及格式。

然后我就开始编写 issue 所需要的 Github Action Workflow 了。

其中代码优化建议功能帮了我很大的忙,我只需要把有疑问的代码勾选,然后再执行 /generate optimization,通义灵码就能很方便的为我指出错误,并且提出建议。 在以往的话我还需要先把代码复制下来,然后再抛给 AI,有时还得附带上下文。

提交 PR

写好 Github Action Workflow,我提交了 PR。但是这个 PR 不是一次性就被 Merge 的。这其中我和项目负责人进行了很多有趣的讨论。提交 PR 的那段时间刚好是我的考试周,每天复习之余,最上心的事情就是查看邮箱,看看负责人有没有给我留言,每次收到邮件我都会十分激动,因为他真的在看我的贡献,真的在为我的贡献提出建议!

为了这份脚本能够成功执行,我进行了很多次的测试。而且在测试的过程中,我甚至也找出了官方文档存在的一些问题。我还提了一个自己发现的 issue!按照 Wasm 插件镜像规范构建出的镜像不可用 · Issue #1100 · alibaba/higress (github.com)

2024 年 7 月 8 日,我进行了最后一次测试。我写了十分详细的测试文档,然后提交。直到我看到负责人给我评论了"LGTM(Looks Good To Me)",我高兴极了。很快他 Merge 了我的 PR。就这样我得到了第一个属于自己的 Merged PR。

feat:add build-and-push-wasm-plugin-image.yaml by Beatrueman · Pull Request #1069 · alibaba/higress (github.com)

参赛心得

技术提升

通过这次比赛,我学会了 Github Action Workflow 的基本语法和编写格式,并且对 CI/CD 在企业中的应用有了更进一步的了解。

并且我还上手了阿里云开发的新一代 API 网关 Higress,体验了它丰富的功能,感受到了它在云原生环境下的强大实力。

开源氛围

Higress 是一个活跃的开源社区,在这个社区中大家都积极的分享自己的知识和 idea,乐于寻找 bug。这种互帮互助,乐于分享的活跃氛围大大激发了我的开源兴趣。

个人体会

这次比赛不仅提升了我的技术,还让我学会了如何沟通、如何解决问题等等。我收获很多,相信在以后我会对开源社区做更多高质量的贡献,争取在多几个 PR~

致谢

十分感谢阿里云以及天池为我们广大开源爱好者搭建了一个广阔无垠的舞台,让我们有机会将梦想转化为现实,将创意付诸实践。

同时也要感谢项目的相关工作人员,无论是对于技术上的指导和建议,还是比赛资料的统计以及奖品的组织发放,大家都辛苦了!

未来的路还很长,但我相信,在阿里云与天池的陪伴下,我们将携手共进,共创辉煌。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2086834.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

postman使用记录

输入密码,地址 然后输入格式为json 在 body里写入传参 然后点击发送即可

裸机:SD卡启动详解

内存和外存的区别 内存和外存在计算机系统中扮演着不同的角色,它们之间存在显著的差异。以下是内存和外存之间几个主要方面的区别: 存储特性与易失性 内存(Memory):通常指的是随机存取存储器(RAM&#x…

Java面试题·区别题·JavaSE部分

系列文章目录 总章 Java区别题 文章目录 系列文章目录前言private/默认/protected/public权限修饰符的区别&和&&区别和联系,I和II区别和联系if和switch的不同之处和equals的区别和联系数组做形参和可变参数做形参联系和区别接口和抽象类的异同之处面向…

Android设备如何异地访问本地部署的code-server随时随地远程开发

文章目录 前言1.Ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 前言 本文主要介绍如何在Linux Ubuntu系统安装code-server,并结合cpolar内网穿透工具配置公网地址,轻松实现使用安…

企业级开发——Git使用

一 Git介绍 1 什么是版本控制 版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。 2 为什么使用版本控制 采用手动复制的方式管理版本,会造成版本管理混乱,而通过版本控制管…

测试使用开源异构迁移工具dbswitch

dbswitch: 异构数据库迁移同步(搬家)工具 (base) rootnode13:~# cat /etc/issue Ubuntu 20.04.5 LTS \n \l (base) rootnode13:~# curl -k -sSL https://gitee.com/dromara/dbswitch/attach_files/1878800/download > /tmp/dbswitch_install.sh && bash /tmp/dbsw…

地级市地理相邻矩阵(地级市名称版、行政区划代码版)

地级市地理相邻矩阵(地级市名称版、行政区划代码版) 范围:294个地级市 格式:地级市名称版、行政区划代码版 说明:数据为同省下城市之间的相邻矩阵,表示同一省份内各个城市相互之间邻近关系。如果同一省份…

VTK+Qt+Cmake+VS的环境搭建

VTKQtCmakeVS的环境搭建 一、准备工作二、VTK源码安装过程三、错误排查四、Cmake中引用VTK五、代码示例 本文的主要内容:简单介绍如何使用Cmake编译安装VTK源代码;如何配置VTK在Qt中的使用环境;如何以VS作为IDE在C下使用QtVTK。 哪些人适合阅…

android studio .android和.gradle迁移到其他盘

操作 可以看到gradle和android占用不小 .android 将C盘的.android迁移到D盘 切换到.android下面的avd目录,修改ini文件 .gradle 将.gradle复制到D盘 在Android studio的文件夹下面新建一个文件夹,我这里命名androidcache。接着在Android studio的…

「bug」nvitop ERROR: Failed to initialize curses

nvitop 作为一个优秀个 Nvidia显卡查询库,简单易用且显示信息十分丰富,相比 Nvidia-smi 更方便,简直是每个 开发人员必备的库,安装也十分方便,直接采用 pip install nvitop 即可,调用的时候也是直接在 Term…

51单片机波特率的计算方法

通过51单片机的波特率,来计算定时器的初始值。 定时器的溢出率公式 : 1 / ov 1/f * 12 *(256 - init) (ov为溢出率,溢出频率; init 为初始值; f为时钟频率, 比如12M或者11.0592M等&#xff09…

自己开发完整项目一、登录注册功能-01

一、创建spingboot项目框架 1.首先创建一个空的项目作为父项目,之后的所有都在此基础上创建模块进行开发。 2.创建负责登录注册功能模块 二、启动项目 1.出现如下错误,代表着端口号被占用,这个时候,我们可以进行端口号的修改。 …

如何从笔记本电脑或台式电脑恢复丢失的照片和视频

意外删除或丢失笔记本电脑或 PC 上的照片和视频是一个常见问题。不用担心,在此博客中,我们解释了从笔记本电脑或 PC 恢复丢失的照片和视频的各种方法。专业的数据恢复软件,例如奇客 数据恢复工具,可以帮助用户找回丢失的文件。 提…

微信小程序uni :class不支持xxx语法

问题代码&#xff1a; <view class"cellTop"><view>{{list.payTime}}</view><view :class"payStatusClass${list.payStatus}">{{payStatusDe[list.payStatus]}}</view></view> .payStatusClass1{color: rgb(246, 122,…

传输层协议-UDP数据报

UDP协议的特点 面向数据报&#xff0c;无连接&#xff0c;不可靠&#xff0c;全双工 面向数据报&#xff1a;是指该协议在传输数据的时候使用的是数据报&#xff1b; 无连接&#xff1a;指的是发送数据不需要两个进程连接在一起&#xff0c;类似生活中我们发送短信&#xff0…

代码随想录跟练第九天——LeetCode 232.用栈实现队列、225. 用队列实现栈、20. 有效的括号、1047. 删除字符串中的所有相邻重复项

拔了智齿后&#xff0c;好久没有总结了&#xff0c;先补一点 232.用栈实现队列 力扣题目链接(opens new window) 使用栈实现队列的下列操作&#xff1a; push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- …

解锁App推广新姿势,Xinstall带你玩转投放查看

在移动互联网时代&#xff0c;App推广和运营成为了各大企业和开发者关注的焦点。然而&#xff0c;在这个过程中&#xff0c;推广者常常面临一些痛点&#xff0c;比如无法实时查看投放效果、数据不透明、难以精准定位目标用户等。这些问题不仅影响了推广效果&#xff0c;还可能导…

这些网络设备知名厂商你都不知道?白干这行了

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 你们好啊&#xff0c;我的网工朋友。 信息技术的快速发展&#xff0c;网络行业已经成为推动全球经济和社会进步的重要力量之一。无论是企业还是个…

CI/CD实践(五)Jenkins Docker 自动化构建部署Node服务

微服务CI/CD实践系列&#xff1a; 微服务CI/CD实践&#xff08;一&#xff09;环境准备及虚拟机创建 微服务CI/CD实践&#xff08;二&#xff09;服务器先决准备 微服务CI/CD实践&#xff08;三&#xff09;gitlab部署及nexus3部署 微服务CI/CD实践&#xff08;四&#xff09…

Linux驱动学习之input子系统

简介 input 子系统就是管理输入的子系统&#xff0c;和pinctrl、gpio 子系统一样&#xff0c;都是 Linux 内核针对某一类设备而创建的框架。按键、鼠标、键盘、触摸屏等都属于输入设备&#xff0c;linux内核为此专门做了一个叫做input子系统的框架来处理输入事件。输入设备本…