openeuler-riscv / oerv-team

OERV 实习生工作中心
12 stars 44 forks source link

CI: Bamboo riscv64架构验证 #950

Open wangliu-iscas opened 4 months ago

wangliu-iscas commented 4 months ago

说明

问题背景: Bamboo ci节点是否支持在riscv64架构下运行

所需技能: 1、java 2、Bamboo 相关知识

其它: 验证Bamboo ci节点部署在qemu riscv64环境下,并可以执行任务 相关链接: https://confluence.atlassian.com/bamboo/supported-platforms-289276764.html

IZUMI-Zu commented 3 months ago

老师 我已经完成验证过程 验证过程如下 麻烦老师审核

验证过程

环境配置

QEMU虚拟机配置

设置两种类型的虚拟机:Data Center 虚拟机和 Agent 虚拟机。两者均使用 openEuler 24.03 (LTS) RISC-V 版本。

依赖安装

Bamboo 运行需要的依赖如下:

接下来,我们将分别在两台虚拟机上安装 Data Center Node 和 Agent Node。

Data Cneter Node

  1. 依赖安装

    Data Center 节点需要安装 Java 和数据库。目前,Bamboo 已停止支持 JDK 11 版本,因此本次验证使用 JDK 17 版本。Bamboo 支持多种常见数据库,如 MySQL、PostgreSQL、Microsoft SQL Server 和 Oracle 等。在本次验证中,我们选用 MySQL 数据库。

    sudo dnf install java-17-openjdk java-17-openjdk-devel mysql-server
    
    export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
    sudo systemctl start mysqld
    
    mysql -u root -p
    mysql> CREATE DATABASE bamboo;
  2. 节点安装

    接下来安装 Bamboo CI 的 Data Center 节点,创建节点的 home 目录,并修改相关配置指向该目录。对于 MySQL 数据库,Bamboo 没有提供 JDBC 驱动 JAR 包,需要从 MySQL 官网下载并放置到<BAMBOO_INSTALLATION_DIRECTORY>/lib目录下

    wget https://product-downloads.atlassian.com/software/bamboo/downloads/atlassian-bamboo-9.6.5.tar.gz
    tar xvf atlassian-bamboo-9.6.5.tar.gz
    
    mkdir /var/bamboo
    vim <BAMBOO_INSTALLATION_DIRECTORY>/atlassian-bamboo/WEB-INF/classes/bamboo-init.properties
    
    wget https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-j-8.3.0.zip
    unzip mysql-connector-j-8.3.0.zip
    mv mysql-connector-j-8.3.0/mysql-connector-j-8.3.0.jar <BAMBOO_INSTALLATION_DIRECTORY>/lib/

    image

    修改bamboo.home目录

    启动 Bamboo Data Center 节点。节点成功启动后,我们可以在 http://127.0.0.1:8085/ 对其进行进一步配置。

    在启动时,由于 QEMU 模拟性能问题,可能会遇到 Spring DM Context Creation Timer Timeout occurred before finding service dependencies for 的问题。此时,可以在 <BAMBOO_INSTALLATION_DIRECTORY>/bin/setenv.sh 中增加以下参数:-Datlassian.plugins.enable.wait=300 -Datlassian.plugins.startup.options='-Datlassian.plugins.executor.maxThreads=4'。这些参数用于限制插件加载使用的线程数和插件加载超时时间。

    cd <BAMBOO_INSTALLATION_DIRECTORY>
    ./bin/start-bamboo.sh -fg # fg flag to run Bamboo in the foreground

    启动成功日志

    启动成功日志

  3. 网页配置

    首先需要填入license,bamboo提供了30天的评估版,可以到MyAtlassian网页获取激活码。

    image 2

    接下来分别配置 Bamboo instance details, Shared system directories, Local build directory, Remote agent communication 等内容并连接数据库,并创建管理员账号。

    image 3 image 4 image 5

    安装完成之后进入如下页面,接下来进行remote agent的安装。

    image 6

Agent Node

  1. 依赖安装

    Agent 节点只需要安装 Java 即可。

    sudo dnf install java-17-openjdk java-17-openjdk-devel
    export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
  2. 节点安装

    在Bamboo Dashboard 的 remote agent 页面提供了节点 jar 包的安装地址,运行成功之后可以看到控制台的如下输出,需要对 Agent 进行手动审核通过即可使用。

    wget http://192.168.122.227:8085/agentServer/agentInstaller/atlassian-bamboo-agent-installer-9.6.5.jar
    java -jar atlassian-bamboo-agent-installer-9.6.5.jar http://192.168.122.227:8085/agentServer/

    image 7

    image 8

    节点授权成功后可见如下输出,也可以在 Agent 页面查看具体的系统信息。

    image 9

    image 10

Ci 测试

Bamboo 的持续集成系统以 Job 为基本执行单位。其组织结构如下:

  1. Project:代表一个项目的整体构建计划集合,用于管理该项目的所有 Plan。
  2. Plan:由 Stage、Task 和 Job 组成,构成一个完整的构建计划。创建 Plan 时,系统会分配唯一标识符,指定代码源,并设置触发机制(如定期构建)。此外,还可配置全局默认值和计划级别的管理选项,包括访问权限、通知设置、日志管理、构建清理策略、构建提升标准和环境变量。
  3. Stage:按预定顺序执行,可并行处理多个 Job(利用多个 Agent)。只有当前 Stage 的所有 Job 均成功完成后,才会进入下一个 Stage。Stage 用于管理工作流程,例如可将构建过程划分为编译、测试和部署等阶段。可通过定义 Stage 间的依赖关系来控制执行顺序。Stage 可能会生成 Artifact(构建产物),供后续 Stage 使用。
  4. Job:由多个 Task 组成,在同一 Agent 上按序执行这些 Task。
  5. Task:作为自动化构建的最小单元,可执行源代码检查、脚本运行、调用构建工具(如 Ant、Maven)等操作。Task 在 Job 中按既定顺序执行。

创建 Project 和 Plan

创建 Build Plan 需要基于 Project,因此我们首先要创建一个 Project。

image 11

Bamboo Plan 定义了源代码仓库、构建过程中要执行的任务,以及触发构建的条件。

image 12

链接到源码仓库

Bamboo 需要知道源代码仓库的位置,并且需要访问仓库的权限,以便在运行构建时可以检出代码。本次验证以 Github 仓库为例。

image 13

配置任务

为 Plan 制定执行任务的 task 时,我们需要遵循以下步骤:首先选择"添加任务",然后选择"构建器",最后选择与项目构建工具相匹配的任务。

image 14

image 15

运行任务

在加载 Plan 页面时,可能会遇到 An Unexpected error has occurred 的错误提示。解决方法是启用 Atlassian Bamboo REST plugin 系统插件。可以在 Bamboo Administration > Manage Apps 进行开启。

配置完成后,我们手动运行任务,结果如下图所示。综上所述,Bamboo CI 的 Data Center 节点和 Agent 节点均能在 RISC-V 64 位架构下成功运行。

image 16

image 17

image 18

Agent 具体运行日志如下

TEST-RISCV-JOB1-3.log

参考链接