自动化持续集成
持续自动化构建有助于提高团队的开发效率,形成快速反馈机制。开源的 Jenkins 持续集成工具可以自动化执行各种任务,实现流水线自动化构建、部署和交付。软件工厂在 Jenkins 中预置了容器化部署和参数化构建的流水线模板,用户无需手动编写维护 C/C++ 程序的构建脚本,只需通过 Web 界面填写相关参数即可完成流水线配置。
操作须知
软件工厂 Jenkins 中内置了“SylixOS App 构建模板”流水线,旨在帮助用户快速搭建 SylixOS App 模板工程的构建流程。本文将基于此流水线详细介绍如何在 Jenkins 上创建和配置流水线,并构建容器镜像包,以便后续制品发布和部署使用。
前提条件
操作步骤
步骤 1:新建流水线
在翼辉软件工厂门户页,单击 Jenkins,进入 Jenkins 主页面。
在 Jenkins 主页面,单击左侧导航栏中的新建任务,进入基础设置页面。
在基础设置页面,输入任务名称,选择流水线,并在复制区域输入软件工厂内置的流水线模板名称 SylixOS App 构建模板,然后单击确定,进入配置页面。
步骤 2:配置流水线
由于复制的“SylixOS App 构建模板”流水线已配置相关构建参数和 Pipeline 脚本,故对于依赖 SylixOS ECS Base 和云原生 SDK 的流水线,您只需根据实际构建需求修改任务描述或配置相关参数(详见表 1)的默认值,然后单击保存即可。如果您选择不配置各参数的默认值,也可以在构建时填写相关参数进行构建。若各构建参数对应的内容是确定的,则建议在流水线配置中设置各参数的默认值,以便直接构建或通过构建触发器触发构建。
下面以配置各构建参数的默认值为例介绍如何配置流水线。配置默认值时分如下几种情况:
- 针对“选项参数”,将要设置为默认值的选项放在第一行即可。模板流水线中已配置所有支持的可选项,请勿随意增删。
- 针对“字符参数”,直接在默认值文本框中填写对应参数的默认值进行配置。
- 针对“布尔值参数”,勾选或取消勾选“Set by Default”进行配置。
表 1 “SylixOS 构建模板”流水线内置的构建参数说明
参数 | 是否必选 | 说明 | 示例 |
---|---|---|---|
platform | 是 | 配置待构建应用的目标系统架构,此架构与 RealEvo IDE 的编译工具链对应,支持的架构类型包括 ARM、ARM64、MIPS32、MIPS64、x86、x86_64、PPC、SPARC、RISCV32、RISCV64、LOONGARCH64 和 CSKY | ARM64 |
sdk_name | 是 | 开发微服务应用时 创建的云原生 SDK 的名称,也可以在 SylixOS App 工程的xxx.mk 文件中查看,例如"$(WORKSPACE_cloudnative)",其中 cloudnative 为 SDK 名称 | cloudnative |
app_name | 是 | SylixOS App 工程名称,建议和 GitLab 仓库中的项目名称关联,后续发布软件包至 Armory 仓库 或 ECSM 平台时需要使用此名称 | thermal_server |
app_git_path | 是 | SylixOS App 工程代码在软件工厂 GitLab 仓库中的地址,此处需要配置为 SSH 地址 | ssh://git@10.XX.XX.202:2222/software_factory/thermal_server.git |
app_git_branch | 是 | 构建时需要选择的 SylixOS App 工程代码的 GitLab 仓库分支 | master |
pack_ecs_bundle | 否 | 设置是否将编译好的可执行文件打包成 ECS 容器镜像,默认勾选。若勾选则必须设置 bundle_name 和 pack_file_list 两个参数 | - |
bundle_name | 否 | 容器 Bundle 名称,即打包后的容器镜像名。如果勾选了 pack_ecs_branch,则此参数必须设置 | thermal_server |
entry_command | 否 | 容器入口命令,即容器启动时需执行的命令。通常 SylixOS App 打包成容器镜像时,会将编译出来的可执行文件放在“/apps”目录下,故容器入口命令配置为“/apps/app_name” 即可 | /apps/thermal_server |
pack_file_list | 否 | 设置需要打入容器镜像包“/apps”路径下的可执行文件列表,多个文件之间用英文逗号分隔。如果是编译出来的可执行文件,则直接配置文件名;如果是其他文件,则配置文件路径即可,系统会默认在 App 工程目录下查找可执行文件。如果勾选了 pack_ecs_branch,则此参数必须设置 | thermal_server,src/data.txt |
publish_to_armory | 否 | 设置是否将构建的容器镜像上传到 Armory 仓库进行管理。若勾选,则 Jenkins 流水线构建完成后,会自动将构建的容器镜像发布至软件工厂的 Armory 仓库,镜像包的命名空间默认为 devops | - |
publish_to_ecmp | 否 | 设置是否将构建的容器镜像上传到 ECMP 平台。若勾选,则 Jenkins 流水线构建完成后,会自动将构建的容器镜像发布至软件工厂 ECMP 镜像仓库 | - |
upload_to_ecsm | 否 | 设置是否将容器镜像上传到 ECSM 平台。若勾选,则 Jenkins 流水线构建完成后,会自动将构建的容器镜像发布至配置的 ECSM 镜像仓库 | - |
ecsm_url | 否 | 要上传容器镜像的 ECSM 服务的 URL 地址。如果不设置,则默认为软件工厂的 ECSM 服务地址 | http://10.XX.XX.202:30080 |
步骤 3:构建任务
在任务状态页面,单击左侧导航栏中的 Build with Parameters,进入构建参数设置界面。
在构建参数设置界面,您可以根据构建需求参考表 1 修改相关参数值,或直接单击开始构建,启动流水线构建。
在构建过程中,您可以实时查看任务的构建进度和结果。构建完成后,单击或鼠标悬停在具体的 Stage,可以查看详细的日志信息。
步骤 4:查看构建产物
由于流水线配置了将构建的容器镜像发布至 Armory 制品仓库和 ECSM 容器管理平台,故流水线构建成功后,可以在软件工厂对应的 Armory 和 ECSM 平台查看构建产物。
在 Armory 中查看: 在翼辉软件工厂门户页,单击 ARMORY,进入 Armory 主界面。在 Armory 主界面的“近期更新”区域,可以看到新发布的容器镜像包,也可以在顶部搜索框中输入镜像名称等关键字进行搜索。
在 ECMP 中查看:在翼辉软件工厂门户页,单击 ECMP,在 ECMP 左侧导航栏中单击镜像仓库,在镜像仓库页面,可以看到新上传的镜像资源,单击其操作列的详情,在镜像资源详情页面的 Tags 页签,可以查看镜像的详细信息。通过 Jenkins 构建上传的镜像,来源为“Jenkins”。
在 ECSM 中查看:在浏览器中输入 ECSM 服务的 URL 地址,然后在 ECSM 左侧导航栏中单击镜像管理 > 镜像仓库,在镜像仓库页面,可以看到上传的容器镜像。