Gsoc on Jenkins 中文社区 https://jenkins-zh.cn/tags/gsoc/ Recent content in Gsoc on Jenkins 中文社区 Hugo -- gohugo.io zh-CN Fri, 07 Aug 2020 00:00:00 +0000 GSoC: GitHub Checks API 项目第一阶段总结 https://jenkins-zh.cn/wechat/articles/2020/08/2020-08-07-github-checks-api-plugin-project-coding-phase-1/ Fri, 07 Aug 2020 00:00:00 +0000 https://jenkins-zh.cn/wechat/articles/2020/08/2020-08-07-github-checks-api-plugin-project-coding-phase-1/ 这篇博客将介绍 GSoC 项目 GitHub Checks API Plugin 在一阶段的相关进展。 简单来说,GitHub Checks API 就是一套可高度定制化接受 CI 报告的接口。 CI 工具可以通过该接口反馈信息给特定的 Pull Request,随后,用户便可以直接在 GitHub 的 UI 界面上直观的浏览 CI 报告。 更激动人心的是,它可以针对指定的代码行进行注释,这类似于开发者平时在代码审查时留下的评论。 同时,在 Jenkins 这边,Warnings Next Generation Plugin 能通过源代码视图实现类似的功能。 因此,通过使用 GitHub Checks API 将这些信息直接反馈给 GitHub 能使 Jenkins 对 GitHub 用户更加友好。 阶段一实现的相关特性 在过去的一个月里,我们团队的工作主要集中在 General Checks API 和 GitHub Checks API 的实现上。 General Checks API 尽管 General Checks API 是基于 GitHub Checks API 的语义实现的,我们仍然希望能提供这样的泛化接口为其他平台的相关概念做好准备,例如:GitLab 上的 Commit Status API。 在今后,我们欢迎所有人贡献针对这些平台的相关实现。 社区推送博客-机器学习插件项目 https://jenkins-zh.cn/wechat/articles/2020/07/2020-07-06-machine-learning-plugin-project-community-bonding-blog-post/ Mon, 06 Jul 2020 00:00:00 +0000 https://jenkins-zh.cn/wechat/articles/2020/07/2020-07-06-machine-learning-plugin-project-community-bonding-blog-post/ 大家好! 这是 GSoC 2020 中的 Jenkins 项目之一。我们正在为此 GSoC 2020 使用此新的机器学习插件。这是我在社区关于 GSoC 2020 的故事。我很高兴与您分享我的旅程。 自我介绍和神奇的 4 位导师 我是 Moratuwa 大学的 Loghi Perinpanayagam。我被选为 Jenkins 的 GSoC 2020 机器学习插件的负责人。我很高兴向我的导师介绍这个项目。我分配了四位导师,他们非常热心地帮助我在今年夏天开发代码。 学生 Loghi Perinpanayagam 导师 Bruno P. Kinoshita Ioannis Moutsatsos Marky Jackson Shivay Lamba 去年我的准备情况如何? 我在第二年就了解了 GSoC 开源项目。但是我至少在去年尝试了另一个组织的项目,该项目与《数据科学的数据可视化建议》有关。但是问题是我的贡献不如今年那么大,在申请过程中为时已晚。像往常一样,与其他项目相比,与机器学习相关的项目有很多竞争。我准备学习机器学习中的数据可视化以及推荐系统的现有模型。最后,我当时用 SeqToSeq 模型编写了一个提案,当时对神经网络知识不多。而且我没有通过专用的闲暇渠道进行太多交流。这可能是失败的原因之一。但是主要原因是我对 GSoC 2019 的了解不多。 我如何跨过 GSoC 2020? 自从我意识到开源的必要性和对社区的帮助以来,我一直热衷于为开源项目做出贡献。实际上,我于 2019 年在印度班加罗尔完成了实习,我立即专注于参与 GSoC。这是我作为计算机科学理学学士学位课程的学生的最后一年(2020年),我希望今年能被选为学生。 我们部门举办了一次指导研讨会,我知道 Jenkins 已经打开了他们的项目构想。这是我的 GSoC 2020 旅程的一个非常令人印象深刻的开始。我在 jenkins.io 页面上浏览了所有草案并接受了项目。因为我已经对机器学习感兴趣,并且对 Java 很熟悉,所以我选择了最令人印象深刻的想法,因为它没有初始回购协议。这意味着我想利用我的知识对该项目进行很多思考和研究。但是我必须做出贡献,并且想了解 Jenkins 代码库的基础结构。因为这样可以使选择面板易于接洽该项目的学生。然后,我反复搜索为 Jenkins 做贡献。我发现从 git 插件和 git 客户端插件可以轻松解决的问题。我开始在 git 插件和 git 客户端插件上贡献一些测试问题。在清楚了解插件在 Jenkins 中的工作原理后,我开始使用项目构想页面中提供的提示来进行 POC 的工作。实际上,编写代码很有趣。 2019 年 Google 编程之夏活动报告 https://jenkins-zh.cn/wechat/articles/2020/02/2020-02-18-google-summer-of-code-2019-report/ Tue, 18 Feb 2020 00:00:00 +0000 https://jenkins-zh.cn/wechat/articles/2020/02/2020-02-18-google-summer-of-code-2019-report/ Google 编程之夏活动不仅仅是一个夏日的实习项目,对于组织和一些社区的成员来说,这个活动是他们一整年努力的成果。现在,在里斯本举行的 Devops World | Jenkins World 会议以及最后的回顾会议之后,我们宣布 GSoC 2019 正式画上结束的句号。首先我们感谢所有的参与者:学生们、导师们、主题专家、以及其他一些提出课题构想,参与学生选择,社区联系以及一些后期的讨论与回顾的贡献者们。Google 编程之夏活动是一个大型的活动,如果没有 Jenkins 社区的积极参与此次活动也就无法成行。 在这篇博客里我们想要与各位分享这次活动的成果以及我们从这一年总结的一些经验。 成果 今年成功完成了 5 个 GSoC 课题:角色策略插件性能优化,插件安装管理 CLI 工具/库,working-hours 插件 - UI 优化,具有 Kubernetes 功能的 Apache Kafka 远程处理,GitLab SCM 多分支流水线支持。我们会在后面的内容中讨论一下上面提到的这几个课题。 项目细节 我们在 8 月底举行了最后一次 Jenkins 线上例会的演讲然后 Google 在 9 月 3 日发布了这些成果。最后的这些演讲内容可以从这里找到:第一部分,第二部分,第三部分。我们也在 DevOps World | Jenkins World 旧金山以及 DevOps World | Jenkins World 2019 里斯本会议中发布了2019 Jenkins GSoC 报告。 在下面的章节中,我们对每一个项目做一个简单的总结,第三阶段编码演示文稿的链接以及最后的成品。 角色策略插件性能优化 角色策略插件是 Jenkins 中最广泛被使用的认证插件之一,但因为其架构问题以及对项目角色的正则表达式检查使其没有因性能著称。Abhyudaya Sharma 与他的几位导师:Oleg Nenashev,Runze Xia,Supun Wanniarachchi 一起进行该项目。他为 Jenkins 插件创建了一个基于 JMH 的微基准测试框架,创建微基准测试然后在一些真实场景中得到了 3501% 的提升。然后他继续深入研究创建了一个基于目录的认证策略插件,当权限范围为目录时该插件为 Jenkins 实例提供了更佳的性能。在他的项目中 Abhyudaya 还修复了对 Jenkins 组策略的配置即代码的支持并为 JCasC 插件贡献了一些优化与修复的代码。 - 项目页面 - 发布的博客:Jenkins 微基准测试框架, 引入一个新的目录认证插件,角色策略插件性能优化 - 最终评估:幻灯片,视频 - 源码:角色策略插件,目录认证插件 Alpha 版本的插件管理库和 CLI 工具 https://jenkins-zh.cn/wechat/articles/2019/10/2019-10-25-plugin-management-tool-alpha-release/ Fri, 25 Oct 2019 00:00:00 +0000 https://jenkins-zh.cn/wechat/articles/2019/10/2019-10-25-plugin-management-tool-alpha-release/ “人人都在重复造轮子,部分像实现插件管理的”细节”(签名元数据,制品校验和,从核心独立出来的插件…)。 很明显, Jenkins 应该为实时 Jenkins 实例之外的插件安装提供充足的工具。” JENKINS-53767 我的 Google Summer of Code project 项目试图解决这个问题,方法是创建一个库,该库将在 Jenkins 的不同实现中统一插件管理逻辑,并提供一个可以使用户轻松下载插件并在 Jenkins 启动之前查看插件信息的 CLI 工具。 我很高兴分享我们刚刚发布的 Alpha 版本,您可以在此处查看! GSoC 阶段 1 更新 当我考虑将插件管理器从 Jenkins 核心中移出时,由于依赖项的复杂性和数量,这最终成为了最具挑战性的第一步。相反,我们决定首先将 Jenkins Docker 中的 install-plugins.sh bash 脚本转换为 Java。 install-plugins.sh 脚本存在多个问题,即它是 bash 脚本并且扩展性有限,此外,它不会检索所有最新的更新中心的元数据。 Alpha 版本详情 模仿官方 Jenkins Docker 镜像中 install-plugins.sh 脚本中的操作,新的插件管理库接收插件列表、它们的版本和(或) URL,从中可以下载插件,并下载所需的插件及其依赖。插件从更新中心下载到指定目录,然后可以加载到 Jenkins 中。当前,可以通过 plugins.txt 文件和(或) -plugins 的 cli 选项指定要下载的插件,我们计划进一步扩展可以接收的输入格式。 还支持用于不同更新中心的自定义版本说明符。 该库将首先检查当前是否在用户指定的下载位置或用户指定的 Jenkins war 文件中安装了任何请求的插件。如果要求更高版本或更高版本作为依赖项,则将忽略或升级已安装的插件。确定插件下载 URL 后,库将下载插件并解析和下载其依赖。 这仅仅是个开始:插件管理器库和 cli 工具仍在开发中。 有关 CLI 选项以及如何运行该工具的最新信息,请参见存储库 README. React Plugin Template,让你可以使用 React 来编写 Jenkins 插件 https://jenkins-zh.cn/wechat/articles/2019/09/2019-09-19-introduce-react-plugin-template/ Thu, 19 Sep 2019 00:00:00 +0000 https://jenkins-zh.cn/wechat/articles/2019/09/2019-09-19-introduce-react-plugin-template/ 模板地址 React Plugin Template https://github.com/jenkinsci/react-plugin-template 起因 这个模板是笔者在今年的 Google Summer of Code 中的项目 Working Hours - UI Improvement 中产出的。由于我们想使用 React 的一些组件来优化用户体验,例如在 Working Hours 里面我们想用 ReactDatepicker 来帮助用户选择日期,于是整个 Working Hours 插件的前端部分都试图用 React 来编写,而由于 Jenkins 的传统插件编写主要还是用的 Jelly ,一套类似 JSP 的后端渲染引擎,因此笔者在一开始也踩了不少坑。以至于想到,可以抽象出一套插件的脚手架来帮助有相似需求的同学。 链接: GSoC:Working Hours UI Improvement https://summerofcode.withgoogle.com/projects/#6112735123734528 Github:Working Hours 插件 https://github.com/jenkinsci/working-hours-plugin 概述 在以往,我们可以使用 Jelly 来开发 Jenkins 插件的前端部分,同时一些请求可以绑定到对应的类,但是当我们想要更高程度地去自定义插件界面的时候,Jelly 就显得捉襟见肘了。这就是这个模板的目的,帮助开发者使用 React 来开发一个插件。 同时,有了 React ,我们就可以使用很多基于 React 的库,webpack 也可以帮助我们更安全更高效地使用 js 库。 特点 | 集成 React | 开发者可以使用 React 充分控制 UI | 使用了 Iframe | Iframe 隔离了之前 Jenkins 添加的一些 js 库会造成的影响,例如 Prototype. 介绍新的 GitLab 分支源插件 https://jenkins-zh.cn/wechat/articles/2019/09/2019-09-11-introducing-gitlab-branch-source-plugin/ Wed, 11 Sep 2019 00:00:00 +0000 https://jenkins-zh.cn/wechat/articles/2019/09/2019-09-11-introducing-gitlab-branch-source-plugin/ GitLab 分支源插件已经走出 beta 阶段,并已发布到 Jenkins 更新中心。 它允许您基于 GitLab 用户 或 组 或 子组 项目创建任务。 您可以: 从 GitLab 用户/组/子组导入单个项目的分支作为任务(多分支流水线任务) 从 GitLab 用户/组/子组导入所有或部分项目的分支作为任务(GitLab 组任务或 GitLab 文件夹组织) GitLab 组项目对项目进行扫描, 根据设置的规则导入流水线任务。 导入项目之后, Jenkins 立即基于 Jenkinsfile 流水线脚本运行任务并且将状态通知到 GitLab 流水线状态。 这个插件与其他分支源插件不同,它提供了 GitLab 服务器配置,可以在系统配置中配置。 Jenkins 配置即代码 (JCasC) 也可以用于配置服务器。 要想了解更多关于服务器配置的信息,请参考我之前的博客。 要求 Jenkins - 2.176.2 (LTS) GitLab - v11.0+ 创建任务 要创建多分支流水线任务(使用 GitLab 分支源)或 GitLab 组任务,您必须将 GitLab 个人访问令牌添加到服务端配置。 凭据用于获取项目的元数据,并在 GitLab 服务器上设置 hook。 如果令牌具有管理访问权限,您还可以设置 系统 Hook,而 Web Hook 可以从任何用户令牌设置。 Jenkins 插件的微基准测试框架 https://jenkins-zh.cn/wechat/articles/2019/07/2019-07-04-performance-testing-jenkins/ Thu, 04 Jul 2019 00:00:00 +0000 https://jenkins-zh.cn/wechat/articles/2019/07/2019-07-04-performance-testing-jenkins/ Jenkins 插件的微基准测试框架 作为我 Google 编程夏令营的一部分,我一直致力于改进角色策略插件(Role Strategy Plugin)的性能。 由于没有现有的方法来度量性能以及在 Jenkins 插件上做基准测试, 我在项目第一阶段的工作是创建一个框架在一个 Jenkins 实例中运行 Jenkins 插件中的基准测试。 为了让我们的工作更容易些,我们选择了 Java微基准测试工具来运行这些基准。 这使我们能够可靠地度量对时间要求严格的功能的性能,将有助于让 Jenkins 为每个人更快的运转。 最近在 Jenkins 单元测试工具2.50中发布了微基准测试框架。 下面的博客文章展示了如何在插件中运行基准测试。 介绍 该框架通过为 JMH 基准的每个 fork 启动一个临时的 Jenkins 实例来运行, 就像 Jenkins 测试工具中的 JenkinsRule。 基准测试是直接从 JUnit 测试运行的,它允许在运行过程中失败构建,并且很容易从 IDE 中运行基准测试,就像单元测试一样。 你可以很容易地通过使用 Java 方法或使用 Jenkins plugin:configuration-as-code:[配置即代码插件]来配置基准并将路径传递到 YAML 文件。 要从您的插件运行基准测试,您需要做以下工作: 将所需的最低 Jenkins 版本升级到2.60.3或更高版本 将 Plugin-POM 升级到 ≥ 3.46 的版本或手动更新 Jenkins 测试工具到 ≥ 2.51 的版本 现在,要运行基准测试,您需要有一个包含 @Test 的基准测试运行程序,以便它可以像 JUnit 测试一样运行。 从测试方法内部,可以使用 JMH 提供的 OptionsBuilder 来配置基准。 例如: 多分支流水线任务对 GitLab SCM 的支持 https://jenkins-zh.cn/wechat/articles/2019/07/2019-07-10-phase-1-multibranch-pipeline-support-for-gitlab/ Thu, 04 Jul 2019 00:00:00 +0000 https://jenkins-zh.cn/wechat/articles/2019/07/2019-07-10-phase-1-multibranch-pipeline-support-for-gitlab/ 这是在 GSoC 2019中的一个 Jenkins 项目。 我们正致力于增加多分支流水线任务和文件夹组织对 GitLab 的支持。 这个计划是创建以下插件: * GitLab API 插件 - 包装 GitLab Java APIs。 * GitLab 分支源插件 - 包括两个包: * io.jenkins.plugins.gitlabserverconfig - 管理服务器配置和 Web hooks 管理。理想情况下应该在另一个名为 GitLab Plugin 的插件中。 未来,这个包应该移动到新的插件中。 * io.jenkins.plugins.gitlabbranchsource - 为多分支流水线任务(包括 Merge Requests )和文件夹组织添加 GitLab 分支源。 现状 完全支持自由风格的任务和流水线(单分支)任务。 部分支持多分支流水线任务(没有 MRS 检测)。 不支持 Gitlab 文件夹组织。 这个项目的目标 实现一个依赖于 Gitlab API 插件的轻量级 Gitlab 插件。 遵循3个独立插件的约定,即 GitLab 插件,GitLab API 插件,GitLab 分支源插件。 实现 Gitlab 分支源插件,支持多分支管道作业。 支持新的 Jenkins 特性,例如 Jenkins 代码即配置 (JCasC), 增量式工具。 清晰高效的设计。 支持新的 SCM 特性 APIs。 支持 Java 8 及更高版本。 构建插件 这个插件还没有二进制文件可用,因为这个插件还处于非常早期的 alpha 阶段,还没有为公众准备好。 如果您想尽早介入,可以尝试自己从源代码构建它。 Jenkins 已经被 Google Summer Of Code 2019 接受! https://jenkins-zh.cn/wechat/articles/2019/03/2019-03-13-gsoc2019-announcement/ Wed, 13 Mar 2019 00:00:00 +0000 https://jenkins-zh.cn/wechat/articles/2019/03/2019-03-13-gsoc2019-announcement/ 作为 Jenkins GSoC 管理员团队的代表,我很高兴地宣布 Jenkins 在2019年的 Google Summer of Code上 已经被接受。 今年,我们邀请了学生和导师加入 Jenkins 社区,并一起努力增强 Jenkins 生态圈。 这里提供一些数字,这是有史以来最大的一次 GSoC,今年共有206个组织参与。并且,希望对 Jenkins 而言也是最大的一年。 我们有25个项目想法,而且有超过30个准导师(不断增多!)。 这已经超过了2016年以及2018年的总和。 有很多的插件,特别兴趣小组以及子项目已经加入了今年的 GSoC.而且,我们已经收到了十几个学生的消息以及第一次贡献,耶! 下一步? GSoC 已经正式启动,请期待更多的学生在我们的Gitter 频道和邮件列表中联系项目。 在特别兴趣小组和子项目频道中已经有了很多沟通。 我们会努力帮助学生找到他们感兴趣的项目,在这个领域探索,并帮助他们在4月9日的截止日前准备好他们的项目提议。 然后,我们将会继续这个申请,选择项目并分配导师团队。 所有关于 Jenkins GSoC 的信息都可以在子项目页面上找到。 我是一个学生。如何申请? 在/projects/gsoc/students[学生的信息]页面中有完整的申请指导。 我们鼓励感兴趣的学生尽早联系 Jenkins 社区并开始探索项目。所有的项目在对应的页面上都有聊天室与邮件列表。 我们也会为学生组织工作日的会议,在这些会议上你可以见到管理员和导师,并向他们提问。 另外,加入我们的Gitter 频道和邮件列表,以便收到项目中即将到来的事情。 3月25日开放申请,但你现在就可以准备了!利用这段申请前的时间来讨论并改进你的项目提议。 我们也建议你着手熟悉 Jenkins 并开始探索你的提议的领域。项目的想法包括快速开始的指导,以及有助于初期研究时对新手友好的问题。 如果没有看到任何感兴趣的,你可以提出你自己的项目想法或者 查看由其他参与 GSoC 的组织提出的想法。 我想要成为一名导师。会不会太晚了? 不晚!我们正在寻找更多的项目想法,以及 Jenkins 的贡献者或用户中对 Jenkins 富有热情并想要指导学生的人。 无须底层经验,导师可以和学生一起研究项目并给出技术指导。 我们尤其对 Java 技术栈方向感兴趣,以及一些新的技术和领域(例如:Kubernetes, IoT, Python, Go 或者其他的)。 你可以提议一个新项目或者加入已有的。查看博客寻找导师以及导师的信息中的细节。 如果你想要提议一个新项目,那么请在3月11日之前完成,以便学生有时间探索并准备他们的提议。 今年,导师并不必须要有 Jenkins 开发上的很强的专业知识。目标是指导学生参与到 Jenkins 社区。 如果需要特殊的专业知识,GSoC 组织管理员会帮助寻找顾问。