回到博客

一个接近功能完整版本的Jenkinsfile运行器动作作为GitHub必威国际有限公司动作

翳明龚
2022年9月07日

摘要

必威国际有限公司Jenkinsfile Runner Action for GitHub Actions旨在为用户提供定制环境和有用的GitHub Action。因此,用户可以在GitHub动作运行器中执行Jenkins管道。必威国际有限公司它支持在“功能即服务”上下文中运行Je必威国际有限公司nkins管道。用户可以通过设置基本映像、配置Jenkins Configuration-as-Code插件、扩展普通映像或为临时Jenkins控制器提供初始钩子来定制他们的环境必威国际有限公司。下面是几个关于如何设置秘密、Jenkins插件和与其他GitHub动作集成的例子。必威国际有限公司这个项目是基于必威国际有限公司Jenkinsfile跑步,它是Jenkins管道执行引擎的命令行工具。必威国际有限公司

实现

必威国际有限公司操作帮助用户获取必要的依赖项,并包装Jenkinsfile Runner的入口点在一个GitHub动作。用户可以在工作流定义中使用它们,就像其他GitHub动作一样。基于这个大想法,我开发了五个GitHub动作。

运行时类型的行为

这些动作在GitHub动作运行器的主机上直接运行管道。

  • jfr-setup-action-用于设置Jenkins环境,包括但不限于Jenki必威国际有限公司ns核心、插件安装管理器和Jenkinsfile Runner。

  • jfr-plugin-installation-action-用户可以使用它来安装额外的插件。jfr-setup-setup需要运行之前。

  • jfr-runtime-action-它在主机上运行Jenkin必威国际有限公司s管道。jfr-setup-setup需要运行之前。

容器类型的行为

这些操作在定制的容器中运行管道。

  • jfr-container-action-它在申报的集装箱中运行Je必威国际有限公司nkins管道。由于预构建容器是提前声明的,理论上它可以与其他GitHub动作集成。它是基于在容器中运行作业

  • jfr-static-image-action-它在运行时构建的容器中运行必威国际有限公司Jenkins管道。它不需要提前声明容器,所以用户不能使用其他GitHub动作除了using行动/结帐设置工作区。但是用户可以通过提供docker映像URL来覆盖基本映像。例如,如果用户想将Jenkins环境与nodejs环境结合起来,他们可以使用必威国际有限公司节点:18.3.0作为输入。它是基于GitHub Docker容器动作

第一阶段

当我开始根据我之前的建议编写代码时,我发现我的实现与维护人员和导师的期望不同。我想做的是使jenkins文件运行器能够为用户生成必要的必威国际有限公司配置。因此,它们可以使用这些配置文件来完成Jenkinsfile运行器操作。必威国际有限公司然而,这种方法将配置生成步骤与Jenkinsfile运行器耦合,后者是用于Jenkins管道执行引擎的命令行工具。必威国际有限公司维护者和导师建议制作一些有用的GitHub动作,而不是将这些不必要的逻辑耦合到jenkins文件运行器中。必威国际有限公司因此,根据他们的建议,我改变了我的项目计划,并致力于为Jenkinsfile runner开发GitHub Actions。必威国际有限公司

在这个阶段,我得到了发展jfr-container-actionjfr-static-image-action,它们运行在定制的容器中。它的主要优点是,大多数依赖关系都在容器中提前准备好了。我还在jenkins文件运行器中为我们的GitHub动作提供了一些有用的选项必威国际有限公司,比如初始钩子选项。为了让用户快速开始我们的操作,我多次重构文档,并创建了几个有用的示例。值得注意的是,我的示例旨在在GitHub Actions运行器中应用Jenkins管道,这是一个FaaS必威国际有限公司上下文。

第二阶段

在第二阶段,我发现目前的操作只能由GitHub actions Linux运行器支持。然后我决定开发运行时类型的动作,这样它们就可以在各种各样的GitHub动作运行器中运行。它的优点是显而易见的。运行时类型操作为jfr-setup-actionjfr-plugin-installation-actionjfr-runtime-action.与容器类型操作的行为相比,这些操作将在运行时下载所有依赖项。它的主要缺点是可能遭受下载中心中断。

更重要的是,我不断为这些动作开发示例并更新文档。随着项目和文档的无限增长,我决定将我的项目分成几个子项目,并在GitHub Pages上托管文档,包括用户指南和开发人员指南。

可交付成果

我写一个中央文档页面上面的接口,基本用法,高级用法,演示和开发指南这些jenkinsfile runner GitHub动作。必威国际有限公司如果对定义或示例感到困惑,可以查看上面提到的文档页面。

如何使用jfr-container-action

用户需要声明映像的使用情况ghcr.io 必威国际有限公司/ jenkinsci / jenkinsfile-runner:主人在工作开始的时候。然后,用户可以使用调用此操作必威国际有限公司jenkinsci / jfr-container-action@master.因为运行器在开始时声明容器环境,其他GitHub动作也可以运行jfr-container-action从理论上讲。

的名字CI(推)工作jfr-container-action-pipeline运行在ubuntu-latest容器图像ghcr.io 必威国际有限公司/ jenkinsci / jenkinsfile-runner:主人步骤: -用途:行动/ checkout@v2-容器中的Je必威国际有限公司nkins管道使用必威国际有限公司jenkinsci / jfr-container-action@master命令运行必威国际有限公司jenkinsfile必威国际有限公司Jenkinsfilepluginstxtplugins.txtjcascjcasc.yml

如何使用jfr-static-image-action

jfr-static-image-action还可以在容器中运行管道。但是用户不需要自己声明容器,比如jfr-container-action.相反,jfr-static-image-action包装自定义容器的准备和调用。因此,用户不能使用其他GitHub动作除了使用行动/结帐设置工作区。用户可以通过使用调用此操作必威国际有限公司jenkinsci / jfr-static-image-action@master

的名字CI(推)工作jfr-static-image-action-pipeline运行在ubuntu-latest步骤: -用途:行动/ checkout@v2-容器中的Je必威国际有限公司nkins管道使用必威国际有限公司jenkinsci / jfr-static-image-action@master命令运行必威国际有限公司jenkinsfile必威国际有限公司Jenkinsfilepluginstxtplugins.txtjcascjcasc.yml

如何使用jfr-runtime-action与其他支持运行时类型的操作

jfr-runtime-action将在主机中直接运行管道。用户需要使用jfr-setup-action提前。如果用户想安装额外的插件,他们可以使用jfr-plugin-installation-action.的优势jfr-runtime-action它可以在GitHub Actions提供的各种运行程序中运行。

的名字CI(推)工作jfr-runtime-action-pipeline策略矩阵操作系统[ubuntu-latest, macOS-latest, windows-latest]运行在$ {{matrix.os}}的名字jfr-runtime-action-pipeline步骤: -用途:行动/ checkout@v2-姓名:Setup Jenk必威国际有限公司ins使用必威国际有限公司jenkinsci / jfr-runtime-action@master-Jenkin必威国际有限公司s插件下载使用必威国际有限公司jenkinsci / jfr-plugin-installation-action@masterpluginstxtplugins.txt-名称:运行Jenki必威国际有限公司ns管道使用必威国际有限公司jenkinsci / jfr-runtime-action@master命令运行必威国际有限公司jenkinsfile必威国际有限公司Jenkinsfile

反射

我在GSoC学到的最有价值的一课不是如何写代码。这是关于詹金斯社区中与他人沟通的方法。必威国际有限公司当我刚加入Jenkins社区时,当我与我的导必威国际有限公司师和项目维护者交流时,我一直在做假设。因此,他们很容易误解我的想法。Jenkins开源社区最好的沟通方式就是过度解释。必威国际有限公司有时,缺乏背景知识的人无法理解你对某个特定话题的看法。因此,提供一些额外的解释或描述是必要的。

我学到的第二课仍然是关于沟通。当你对特定语境下的单词感到困惑时,最好是直接问贡献者或你的导师,而不是自己花大量的时间。Jenkins开源社区的人总必威国际有限公司是愿意给你答案。此外,如果在开发工具或插件时遇到障碍或里程碑,仍然有必要首先询问社区开发人员,而不是随意做出决定。

关于作者

翳明龚

一鸣是卡内基梅隆大学电子与计算机工程专业的学生。他发明了一个几乎功能完整的Jenkinsfile运行器动作版本作为GitHub必威国际有限公司动作在GSoC 2022。

Baidu