diff --git a/README.md b/README.md index 87fc18934b54f0daaccae3fb6011725d11ac5f24..126fa6a4cb50354e5454618dc0f57a539580e963 100644 --- a/README.md +++ b/README.md @@ -7,36 +7,9 @@ Pipeline solution to support building, deploying and automating any software pro 支持x86/鲲鹏多样性算力下openEuler系操作系统 #### 使用说明 -##### Jenkins及Gitlab流水线安装部署指导 - -1. [安装部署Jenkins](./document/Jenkins安装部署/安装部署Jenkins.md) -2. [安装部署Gitlab](./document/gitlab安装部署/gitlab安装部署.md) -##### DevKit流水线原子能力安装部署指导 -###### 安装部署工具 - 通过一键下载、安装、部署工具,可将DevKit流水线上原子能力自动部署到指定的环境上 - -1. [一键下载、安装、部署工具使用文档](./document/批量部署工具/批量部署工具和一键下载工具说明文档.md) -###### 原子能力对接流水线实践指导 (Jenkins) - DevKit各原子能力对接Jenkins流水线的脚本范例及使用说明 - -1. [Jenkins流水线配置DevKit迁移、亲和门禁](https://gitee.com/openeuler/devkit-pipeline/blob/master/document/Jenkins安装部署/Jenkins流水线配置迁移、亲和门禁.md) -2. [DevKit测试平台安装部署与Jenkins集成部署指导手册](https://gitee.com/openeuler/devkit-pipeline/blob/master/document/测试平台安装部署/devkit测试平台安装部署与jenkins集成部署指导手册.md) -3. [Jenkins流水线无感切换bisheng编译器](https://gitee.com/openeuler/devkit-pipeline/blob/master/document/无感切换/无感切换与Jenkins集成部署指导手册.md) -4. [Jenkins流水线配置Java性能分析](document/Jenkins安装部署/Jenkins流水线配置Java性能分析.md) -5. [clamAV安装部署指导](document/clamAV安装更新指导/clamav安装部署指导资料.md) -6. [A-FOT安装部署指导](document/A-FOT安装部署指导/A-FOT安装使用以及集成到Jenkins指导说明.md) -7. [代码检查工具安装部署指导](document/代码检查工具/代码检查.md) - - -###### 原子能力对接流水线实践指导 (Gitlab) - DevKit各原子能力对接Gitlab流水线的脚本范例及使用说明 -1. [Gitlab流水线配置DevKit迁移、亲和门禁](https://gitee.com/openeuler/devkit-pipeline/blob/master/document/gitlab安装部署/Gitlab流水线配置迁移、亲和门禁.md) -2. [DevKit测试平台安装部署与Gitlab集成部署指导手册](https://gitee.com/openeuler/devkit-pipeline/blob/master/document/测试平台安装部署/devkit测试平台安装部署与gitlab集成部署指导手册.md) -3. [Gitlab流水线无感切换bisheng编译器](https://gitee.com/openeuler/devkit-pipeline/blob/master/document/无感切换/无感切换与gitlab集成部署指导手册.md) -4. [Gitlab流水线配置Java性能分析](document/gitlab安装部署/Gitlab流水线配置Java性能分析.md) - -###### Docker镜像生成 - +##### 用户指南链接 +https://www.hikunpeng.com/document/detail/zh/nativedevp/userguide/install/NativeDevelopment_0011.html +##### Docker镜像生成 1. [Docker镜像生成样例](./document/DockerFile配置/Docker镜像生成手册.md) #### 参与贡献 diff --git "a/document/A-FOT\345\256\211\350\243\205\351\203\250\347\275\262\346\214\207\345\257\274/A-FOT\345\256\211\350\243\205\344\275\277\347\224\250\344\273\245\345\217\212\351\233\206\346\210\220\345\210\260Jenkins\346\214\207\345\257\274\350\257\264\346\230\216.md" "b/document/A-FOT\345\256\211\350\243\205\351\203\250\347\275\262\346\214\207\345\257\274/A-FOT\345\256\211\350\243\205\344\275\277\347\224\250\344\273\245\345\217\212\351\233\206\346\210\220\345\210\260Jenkins\346\214\207\345\257\274\350\257\264\346\230\216.md" deleted file mode 100644 index 62fe2558249335317781b49da42e1023bd2c4d89..0000000000000000000000000000000000000000 --- "a/document/A-FOT\345\256\211\350\243\205\351\203\250\347\275\262\346\214\207\345\257\274/A-FOT\345\256\211\350\243\205\344\275\277\347\224\250\344\273\245\345\217\212\351\233\206\346\210\220\345\210\260Jenkins\346\214\207\345\257\274\350\257\264\346\230\216.md" +++ /dev/null @@ -1,215 +0,0 @@ -# A-FOT安装使用以及集成到Jenkins指导说明 - -## 1.介绍 - -A-FOT(automatic feedback-directed optimization tool)是一款用于提升编译器openEuler GCC自动反馈优化特性易用性的工具。 该工具的目标是让用户通过较少的配置即可自动完成反馈优化的相关步骤(包括采样、分析、优化等),降低自动反馈优化特性的使用难度,享受反馈优化带来的性能提升。 - -## 2.特别提醒 - -1.用户需要自行完成应用的构建脚本(build_script)和执行脚本(run_script)。本工具会使用构建脚本完成应用的构建,使用执行脚本启动被优化的应用 -2.本工具目前仅支持单实例应用优化,即应用在执行时只有一个进程 -3.用户需保证执行脚本启动的应用程序测试用例与实际生产环境行为相同,否则可能会导致负优化 - -## 3.环境依赖需要满足以下条件: - -1.编译器: GCC for openEuler2.3.2及以上 - -2.架构: 鲲鹏ARM - -3.操作系统PRETTY_NAME:openEuler 22.03 LTS、openEuler 22.03(LTS-SP1)、openEuler 22.03(LTS-SP2)、openEuler 22.03(LTS-SP3)、Ubuntu 18.04.4 LTS、Ubuntu 20.04.2 LTS、Kylin Linux Advanced Server V10(Tercel)、UOS 20 、UnionTech OS Server 20、CentOS Linux 7 (AltArch)。注:PRETTY_NAME为Centos Linux 7 (AltArch)操作系统的redhat-release值须是Centos Linux release 7.6.1810(Altarch) - -4.软件包:perf - -## 4.安装 - -1.git clone https://gitee.com/openeuler/A-FOT.git -2.yum install -y A-FOT (仅支持openEuler 22.03 LTS) - -## 5.使用说明 - -### 1.填写配置项:在A-FOT根目录下找到a-fot.ini文件 - -```ini -# 文件和目录请使用绝对路径 - -# 优化模式(AutoFDO、AutoPrefetch、AutoBOLT、Auto_kernel_PGO(针对内核优化)) -opt_mode=AutoPrefetch -# 脚本工作目录(用来编译应用程序/存放profile、日志) -work_path=/opt -# 应用运行脚本路径 -run_script=/root/run.sh -# GCC路径(bin、lib的父目录) -gcc_path=/usr - -# AutoFDO、AutoPrefetch、AutoBOLT -# 针对应用的三种优化模式,请填写此部分配置 - -# 应用进程名 -application_name=test -# 二进制安装后可执行文件 -bin_file=/tmp/test -# 应用构建脚本路径 -build_script=/root/build.sh -# 最大二进制启动时间(单位:秒) -max_waiting_time=600 -# Perf采样时长(单位:秒) -perf_time=100 -# 检测是否优化成功(1=启用,0=禁用) -check_success=0 -# 构建模式 (Bear、Wrapper) -build_mode=Wrapper - -# auto_kernel_PGO -# 针对内核的优化模式,请填写此部分配置 - -# 内核PGO模式(arc=只启用arc profile,all=启用完整的PGO优化) -pgo_mode=all -# 执行阶段(1=编译插桩内核阶段,2=编译优化内核阶段) -pgo_phase=1 -# 内核源码目录(不指定则自动下载) -kernel_src=/opt/kernel -# 内核构建的本地名(将根据阶段添加"-pgoing"或"-pgoed"后缀) -kernel_name=kernel -# 内核编译选项(请确保选项修改正确合法,不会造成内核编译失败) -#CONFIG_...=y -# 重启前的时间目录(用于将同一套流程的日志存放在一起) -last_time= -# 内核源码的Makefile地址(用于不自动编译内核的场景) -makefile= -# 内核配置文件路径(用于不自动编译内核的场景) -kernel_config= -# 内核生成的原始profile目录(用于不自动编译内核的场景) -data_dir= -``` - -***参数补充说明*:** - -1)优化模式: - -A-FOT是一款用于提升编译器GCC for openEuler自动反馈优化特性的工具,支持以下三种模式: - -- AutoFDO - -- AutoPrefetch - -- AutoBOLT - - **说明:** - - - AutoFDO是PGO的简化部署版,使用perf替代插桩获取程序运行profile,受益优化点包括矢量化、循环展开、循环剥离等优化。 - - AutoPrefetch是增强版预取优化,根据Dcache访问、存取指令cache miss率,获取数据访问优化代码块并进行预取优化,同时优化预取提前量,建议和AutoFDO共同使用。 - - AutoBOLT是链接后二进制优化,对控制流复杂的程序具有显著的优化效果,主要优化包括BB重排、函数重排、冷热分区等优化,与AutoFDO、AutoPrefetch部分冲突。 - -2)构建模式 - -构建模式支持两种模式: - -- Wrapper - -- Bear - - **说明:** - - - 选择“Wrapper”构建模式,会使用A-FOT中的包装器编译。 - - 选择“Bear”构建模式,会进行两次编译。 - -3)脚本工作目录 - -在配置文件中,脚本工作目录示例在/opt下,实际应用中请修改为家目录或者./目录下 - -### 6.启动优化: - -```shell -a-fot --config_file a-fot.ini -``` - -### 7.默认参数配置以a-fot.ini为基础,同时支持参数通过命令行灵活配置: - -```shell -# 命令格式为 a-fot [OPTION1 ARG1] [OPTION2 ARG2] -# 例如以优化模式为AutoFDO,GCC路径/usr,应用运行脚本路径/root/run.sh,应用构建脚本路径/root/build.sh构建模式为Bear, 脚本工作目录为当前目录,命令如下 -a-fot --opt_mode AutoFDO --gcc_path /usr --run_script /root/run.sh --build_script /root/build.sh --build_mode Wrapper --work_path ./ -``` - -详细命令行参数如下: - -```shell -Usage: a-fot [OPTION1 ARG1] [OPTION2 ARG2] [...] - -For perf mode:(针对应用) ---config_file Path of configuration file ---opt_mode Optimization modes (AutoFDO/AutoPrefetch/AutoBOLT) ---perf_time Perf sampling duration (unit: seconds) ---gcc_path Compiler gcc path ---app_name Application process name ---bin_file Executable binary file path ---build_script Application build script path ---work_path Script working directory (used to compile the application and store the profile) ---run_script Script path for running application ---max_waiting_time Maximum binary startup time (unit: seconds) ---check_success Check optimization result ---build_mode Execute build script mode (Wrapper/Bear) - -For kernel PGO mode:(针对内核) ---config_file Path of configuration file ---opt_mode Optimization mode (Auto_kernel_PGO) ---pgo_mode PGO mode (arc/all) ---pgo_phase Phase of kernel PGO (1/2) ---kernel_src Kernel source directory ---kernel_name Kernel local version name (will be appended with -pgoing or -pgoed) ---work_path Script working directory (used to store the profile and the log) ---run_script Script path for running application ---gcc_path Compiler gcc path ---CONFIG_... Kernel building configuration ---last_time Last time directory before rebooting (used to put log infos together) --s Silent mode (reboot automatically after kernel installation) --n Do not compile kernel automatically ---makefile Makefile path of kernel ---kernel_config Config file path of kernel ---data_dir Profile path generated by kernel -``` - -## 8.Jenkins流水线配置示例: - -以配置文件参数优化: - -```groovy -pipeline { - agent any - options { - timeout(time: 1, unit: 'HOURS') - } - stages{ - stage('A-FOT') { - agent { - label 'Linux_aarch64' - } - steps{ - sh 'a-fot --config_file a-fot.ini' - } - } - } -} -``` - -以命令参数优化: - -```groovy -pipeline { - agent any - options { - timeout(time: 1, unit: 'HOURS') - } - stages{ - stage('A-FOT') { - agent { - label 'Linux_aarch64' - } - steps{ - sh 'a-fot --opt_mode AutoFDO --gcc_path /usr --run_script /root/run.sh --build_script /root/build.sh --build_mode Wrapper --work_path ./' - } - } - } -} -``` - diff --git "a/document/DevKit Pipeline\344\273\213\347\273\215.pdf" "b/document/DevKit Pipeline\344\273\213\347\273\215.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..1898b00f1124c0c21a1f8cbd37c31e75bc3557ec Binary files /dev/null and "b/document/DevKit Pipeline\344\273\213\347\273\215.pdf" differ diff --git a/document/FAQ.pdf b/document/FAQ.pdf new file mode 100644 index 0000000000000000000000000000000000000000..50608cd4fe36bb29272b356ecf604faaef736a5c Binary files /dev/null and b/document/FAQ.pdf differ diff --git "a/document/Jenkins clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/clamav\345\256\211\350\243\205\351\203\250\347\275\262\346\214\207\345\257\274\350\265\204\346\226\231.md" "b/document/Jenkins clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/clamav\345\256\211\350\243\205\351\203\250\347\275\262\346\214\207\345\257\274\350\265\204\346\226\231.md" deleted file mode 100644 index 90d4da531c712b551d125c7b4e3b9de5dacb335f..0000000000000000000000000000000000000000 --- "a/document/Jenkins clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/clamav\345\256\211\350\243\205\351\203\250\347\275\262\346\214\207\345\257\274\350\265\204\346\226\231.md" +++ /dev/null @@ -1,114 +0,0 @@ -# 基于openEuler官方yum源安装部署使用clamav工具指导 - -[TOC] - - - -## 安装clamav病毒扫描工具 - -通过yum源安装clamav工具 - -```shell -yum install -y clamav -``` - -该命令会安装clamav, clamav-data, clamav-filesystem三个组件 - -## 手动更新方案 - -1. 通过能连接公网的环境使用下述连接下载daily.cvd文件 - -```shell -https://database.clamav.net/daily.cvd -https://database.clamav.net/main.cvd -https://database.clamav.net/bytecode.cvd -``` - - -2. 将daily.cvd文件复制到/var/lib/clamav目录下 - - -## 自动更新(需要能访问公网) -通过yum源安装clamav-update组件 - -```shell -yum install -y clamav-update -``` - -该组件设定好了定时任务,每隔8小时自动下载最新病毒库 -安装该组件后也可通过执行命令更新病毒库 - -```shell -freshclam -``` - -![](./image/更新病毒库.png) - -命令参数说明 - -| 是否常用 | 参数 | 释义 | -| -------- | ----------------------------- | ------------------------------------------------------------ | -| 是 | clamscan --helpe | 查看帮助 | -| 是 | -log=FILE | 将扫播报告保存到FILE | -| 是 | -r | 递归扫描,即扫描指定目录下的子目录 | -| 是 | -copy=DIRECTORY | 将受感染的文件复制到DIRECTORY中 | -| 是 | -i | 仅仅打印被感染的文件 | -| 是 | -quiet | 仅输出错误消息 | -| | -official-db-only[=yes/no(*)] | 只加载官方签名 | -| | -max-filesize In | 将跳过大于此的文件并假定为于净 | -| | -max-scansize I/n | 要扫描每个容器文件的最人数据量 | -| | -leave-temps[=yes/no(*)] | 不要删除临时文件 | -| | -file-list-FILE | 从文件中扫描文件 | -| | -bell | 病毒检测的响铃 | -| | -cross-fs[=yes(*/no]s | 扫描其他文件系统上的文件和目录 | -| | bytecode-timeout=N | 设置字节码超时(以毫秒为单位) | -| | -heuristic-alerts[=yes(*}/no] | 切换启发式警报 | -| | -alert-encrypted[=yes/no(*)] | 警告加密档案和文件 | -| | -nocertse | 在PE文件中禁用authenticode证书链验证 | -| | -disable-cachee | 禁用继存和缓存检查扫描文件的哈希值 | -| | -d<文件> | 以指定的文件作为病毒库,一代替默认的/var/clamav目录下的病毒库文件 | -| | -l<文件> | 指定日志文件,以代替默认的/var/og/damav/freshclam.log文件 | -| | -move=<目录> | 把感染病审的文件移动到指定目录 | -| | -removes | 删除感染病毒的文件 | - - - -## 更新病毒库前后结果对比 - -扫描命令示例 -```shell -clamscan -i -r /var/log/ -l clamav.log -``` -![](./image/病毒扫描结果.png) - -## Jenkins集成clamAV: - -如下示例代码,在流水线上配置递归扫描/home路径下的病毒,并输出扫描日志到家路径下的clamscan.log中 - -```groovy -pipeline { - agent any - options { - timeout(time: 1, unit: 'HOURS') - } - stages{ - stage('freshclam') { - agent { - label 'Linux_aarch64' - } - steps{ - sh 'freshclam' - } - } - stage('clamscan') { - agent { - label 'Linux_aarch64' - } - steps{ - sh 'clamscan -i -r /home -l ~/clamscan.log' - } - } - } -} -``` - diff --git "a/document/Jenkins clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\346\233\264\346\226\260\347\227\205\346\257\222\345\272\223.png" "b/document/Jenkins clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\346\233\264\346\226\260\347\227\205\346\257\222\345\272\223.png" deleted file mode 100644 index 50dd1c22397be603956088e128dafb348fe095b5..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\346\233\264\346\226\260\347\227\205\346\257\222\345\272\223.png" and /dev/null differ diff --git "a/document/Jenkins clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\227\205\346\257\222\346\211\253\346\217\217\347\273\223\346\236\234.png" "b/document/Jenkins clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\227\205\346\257\222\346\211\253\346\217\217\347\273\223\346\236\234.png" deleted file mode 100644 index 2dabe07b0b29d1962167092f5815cc4e0ccfeeee..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\227\205\346\257\222\346\211\253\346\217\217\347\273\223\346\236\234.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/Devkit_Distribute\347\246\273\347\272\277\345\256\211\350\243\205\346\210\220\345\212\237.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/Devkit_Distribute\347\246\273\347\272\277\345\256\211\350\243\205\346\210\220\345\212\237.png" deleted file mode 100644 index 584726e033825b4c3b4cc1643fb60d93ae808c72..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/Devkit_Distribute\347\246\273\347\272\277\345\256\211\350\243\205\346\210\220\345\212\237.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/lkp_test\346\230\257\345\220\246\345\255\230\345\234\250\346\240\241\351\252\214.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/lkp_test\346\230\257\345\220\246\345\255\230\345\234\250\346\240\241\351\252\214.png" deleted file mode 100644 index 0a9744cce0d2955898874b92b4f4877de7c0e9b1..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/lkp_test\346\230\257\345\220\246\345\255\230\345\234\250\346\240\241\351\252\214.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\344\270\213\350\275\275Devkit_Distribute.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\344\270\213\350\275\275Devkit_Distribute.png" deleted file mode 100644 index 989ba8ef52a110d892bb1fe3ef57871c5057bda4..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\344\270\213\350\275\275Devkit_Distribute.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\205\267\344\275\223\346\212\245\345\221\212.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\205\267\344\275\223\346\212\245\345\221\212.png" deleted file mode 100644 index 2048098fcda499b01099a2c2cd8cbd1ed1249184..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\205\267\344\275\223\346\212\245\345\221\212.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24101.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24101.png" deleted file mode 100644 index 68322ea0bd37c61eda6f4d24fad1a9588878188a..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24101.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24102.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24102.png" deleted file mode 100644 index d59c9c50f5eebef0ac575e98cbcffa152c3c1a9f..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24102.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24103.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24103.png" deleted file mode 100644 index 08cf2640448c57bd3d27766d387fdb7ce3838a55..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24103.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\244\261\350\264\245\344\277\241\346\201\257.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\244\261\350\264\245\344\277\241\346\201\257.png" deleted file mode 100644 index a3fd75ff08fa5fa8f2ee09fed2a64f1bced6f7fc..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\244\261\350\264\245\344\277\241\346\201\257.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\244\261\350\264\245\347\212\266\346\200\201.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\244\261\350\264\245\347\212\266\346\200\201.png" deleted file mode 100644 index 87478b1d0db05ea5b078b2557e23110c5ba77fa3..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\244\261\350\264\245\347\212\266\346\200\201.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\256\211\350\243\205\345\270\246\346\234\211jcmd\345\221\275\344\273\244\347\232\204JDK.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\256\211\350\243\205\345\270\246\346\234\211jcmd\345\221\275\344\273\244\347\232\204JDK.png" deleted file mode 100644 index 8fad4e0aca1d65b6f19ba6b6df52d1a3eba51403..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\256\211\350\243\205\345\270\246\346\234\211jcmd\345\221\275\344\273\244\347\232\204JDK.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\256\211\350\243\205\346\210\220\345\212\237.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\256\211\350\243\205\346\210\220\345\212\237.png" deleted file mode 100644 index 9b8b178d0f0f9ecb18130983adfa7de1715c6b1e..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\256\211\350\243\205\346\210\220\345\212\237.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\346\211\247\350\241\214\346\265\201\346\260\264.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\346\211\247\350\241\214\346\265\201\346\260\264.png" deleted file mode 100644 index 73843d5136114e4b7d957a94116547b9e1c22652..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\346\211\247\350\241\214\346\265\201\346\260\264.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\346\211\247\350\241\214\347\273\223\346\235\237\346\211\223\345\274\200\346\212\245\345\221\212.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\346\211\247\350\241\214\347\273\223\346\235\237\346\211\223\345\274\200\346\212\245\345\221\212.png" deleted file mode 100644 index b59b75dcbabf0c8b454d13162529b44f3c358ca7..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\346\211\247\350\241\214\347\273\223\346\235\237\346\211\223\345\274\200\346\212\245\345\221\212.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\346\243\200\346\237\245jcmd\345\221\275\344\273\244\345\255\230\345\234\250.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\346\243\200\346\237\245jcmd\345\221\275\344\273\244\345\255\230\345\234\250.png" deleted file mode 100644 index cc2d363a9dc20f095ee23c26b1056dc8906dd1fe..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\346\243\200\346\237\245jcmd\345\221\275\344\273\244\345\255\230\345\234\250.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/FAQ_JENKINS_CONTENT_SECURITY_POLICY01.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/FAQ_JENKINS_CONTENT_SECURITY_POLICY01.png" deleted file mode 100644 index f0d0410b9edcbbed6a0ff7853b61ee03afa53a6a..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/FAQ_JENKINS_CONTENT_SECURITY_POLICY01.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/FAQ_JENKINS_CONTENT_SECURITY_POLICY02.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/FAQ_JENKINS_CONTENT_SECURITY_POLICY02.png" deleted file mode 100644 index 18efcb3f5f0c3f50e3a37f90aae3d6e8f1ea2a36..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/FAQ_JENKINS_CONTENT_SECURITY_POLICY02.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/FAQ_JENKINS_GIT_SSL_VERIFY.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/FAQ_JENKINS_GIT_SSL_VERIFY.png" deleted file mode 100644 index df632e4a0a58174a46183a60564cd33c91df0e18..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/FAQ_JENKINS_GIT_SSL_VERIFY.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25601.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25601.png" deleted file mode 100644 index 62e72c3a4dd5ce91c9916d78ccb1bda2b8c5303e..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25601.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25602.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25602.png" deleted file mode 100644 index da3ea6394e1ba31a2aeee21119c62c075460c969..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25602.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25603.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25603.png" deleted file mode 100644 index d986836480dda79cd771114be361262bb420c0ca..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25603.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25604.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25604.png" deleted file mode 100644 index 44dbeef556969caea051b22557d51f6cc1bf1482..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25604.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25605.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25605.png" deleted file mode 100644 index 155089f770f96a1d67b7ae08e01a4afb1325638d..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25605.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25606.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25606.png" deleted file mode 100644 index c6ca4ababb1b6db0629cf87caa51c664e9037ebe..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25606.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25607.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25607.png" deleted file mode 100644 index 1671415d8909265621341cca4f23d310df7c9188..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25607.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\267\245\344\275\234\350\212\202\347\202\271\350\277\236\346\216\245\345\244\261\350\264\245FAQ.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\267\245\344\275\234\350\212\202\347\202\271\350\277\236\346\216\245\345\244\261\350\264\245FAQ.png" deleted file mode 100644 index 799b2640619f266a4ad115accf3263ace4d7f8a1..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/Jenkins\345\267\245\344\275\234\350\212\202\347\202\271\350\277\236\346\216\245\345\244\261\350\264\245FAQ.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\344\270\213\350\275\275\345\256\211\350\243\205\351\262\262\351\271\217DevKitJenkinsCI\346\217\222\344\273\26601.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\344\270\213\350\275\275\345\256\211\350\243\205\351\262\262\351\271\217DevKitJenkinsCI\346\217\222\344\273\26601.png" deleted file mode 100644 index 646c5dbf962d1eb531fc20a3922c03c74ed1d61d..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\344\270\213\350\275\275\345\256\211\350\243\205\351\262\262\351\271\217DevKitJenkinsCI\346\217\222\344\273\26601.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\344\270\213\350\275\275\345\256\211\350\243\205\351\262\262\351\271\217DevKitJenkinsCI\346\217\222\344\273\26602.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\344\270\213\350\275\275\345\256\211\350\243\205\351\262\262\351\271\217DevKitJenkinsCI\346\217\222\344\273\26602.png" deleted file mode 100644 index ebc206a135f2b2c021e7f6fb6a51cae9b3c08ccc..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\344\270\213\350\275\275\345\256\211\350\243\205\351\262\262\351\271\217DevKitJenkinsCI\346\217\222\344\273\26602.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\344\270\264\346\227\266\346\226\255\345\274\200\350\212\202\347\202\271.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\344\270\264\346\227\266\346\226\255\345\274\200\350\212\202\347\202\271.png" deleted file mode 100644 index f24df60561b21d356b25b276f68f24f35836842a..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\344\270\264\346\227\266\346\226\255\345\274\200\350\212\202\347\202\271.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\207\255\346\215\25602.PNG" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\207\255\346\215\25602.PNG" deleted file mode 100644 index 7a66b4061c909b03dfed41311d362cb592e35c3b..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\207\255\346\215\25602.PNG" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24101.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24101.png" deleted file mode 100644 index 3119855cd56ceffc6dc52988a91ffa2aa3c32482..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24101.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24102.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24102.png" deleted file mode 100644 index d59c9c50f5eebef0ac575e98cbcffa152c3c1a9f..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24102.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24103.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24103.png" deleted file mode 100644 index 106936c5961009d4ef8cd4022dae65fed8631c54..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24103.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\234\250DevKit\345\207\255\346\215\256\345\237\237\344\270\213\346\267\273\345\212\240DevKitweb\350\264\246\346\210\267\345\207\255\346\215\256.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\234\250DevKit\345\207\255\346\215\256\345\237\237\344\270\213\346\267\273\345\212\240DevKitweb\350\264\246\346\210\267\345\207\255\346\215\256.png" deleted file mode 100644 index 54a1125eb6f3a5d85a2e83d3514416acd79f0107..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\234\250DevKit\345\207\255\346\215\256\345\237\237\344\270\213\346\267\273\345\212\240DevKitweb\350\264\246\346\210\267\345\207\255\346\215\256.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\234\250DevKit\345\207\255\346\215\256\345\237\237\344\270\213\346\267\273\345\212\240aarch64Jenkins\345\267\245\344\275\234\350\212\202\347\202\271SSH\345\207\255\346\215\25601.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\234\250DevKit\345\207\255\346\215\256\345\237\237\344\270\213\346\267\273\345\212\240aarch64Jenkins\345\267\245\344\275\234\350\212\202\347\202\271SSH\345\207\255\346\215\25601.png" deleted file mode 100644 index 682f6495b0231237d5254eca48632f000f58a7b3..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\234\250DevKit\345\207\255\346\215\256\345\237\237\344\270\213\346\267\273\345\212\240aarch64Jenkins\345\267\245\344\275\234\350\212\202\347\202\271SSH\345\207\255\346\215\25601.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\234\250DevKit\345\207\255\346\215\256\345\237\237\344\270\213\346\267\273\345\212\240aarch64Jenkins\345\267\245\344\275\234\350\212\202\347\202\271SSH\345\207\255\346\215\25602.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\234\250DevKit\345\207\255\346\215\256\345\237\237\344\270\213\346\267\273\345\212\240aarch64Jenkins\345\267\245\344\275\234\350\212\202\347\202\271SSH\345\207\255\346\215\25602.png" deleted file mode 100644 index f75f61b0107aa36042d0b3adccf26a208d129533..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\234\250DevKit\345\207\255\346\215\256\345\237\237\344\270\213\346\267\273\345\212\240aarch64Jenkins\345\267\245\344\275\234\350\212\202\347\202\271SSH\345\207\255\346\215\25602.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\234\250\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26601.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\234\250\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26601.png" deleted file mode 100644 index 9eaf381dfc1a79fbe18213e0879aadf34e4c2cf9..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\234\250\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26601.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\234\250\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26602.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\234\250\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26602.png" deleted file mode 100644 index d719cdd10c6e709652f6dc0e869d1335a6212a99..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\234\250\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26602.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\256\211\350\243\205BlueOcean\346\217\222\344\273\26601.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\256\211\350\243\205BlueOcean\346\217\222\344\273\26601.png" deleted file mode 100644 index 09a23e2a2ca798a69ea231f5b0fa99b94fc06d3a..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\256\211\350\243\205BlueOcean\346\217\222\344\273\26601.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\256\211\350\243\205BlueOcean\346\217\222\344\273\26602.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\256\211\350\243\205BlueOcean\346\217\222\344\273\26602.png" deleted file mode 100644 index a20175ba773e3ad02d2c3cf1ec7b77925c91e474..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\256\211\350\243\205BlueOcean\346\217\222\344\273\26602.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\256\211\350\243\205SafeRestart\346\217\222\344\273\26601.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\256\211\350\243\205SafeRestart\346\217\222\344\273\26601.png" deleted file mode 100644 index df0f72b221d9fd2277a67c0baf0377b2221fed88..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\256\211\350\243\205SafeRestart\346\217\222\344\273\26601.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\256\211\350\243\205SafeRestart\346\217\222\344\273\26602.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\256\211\350\243\205SafeRestart\346\217\222\344\273\26602.png" deleted file mode 100644 index eb504b03b56b236de7e62a8a1e0aee3f80bb21e5..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\256\211\350\243\205SafeRestart\346\217\222\344\273\26602.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25601.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25601.png" deleted file mode 100644 index bbc24f2efcd45cbee0bcef2124c23a8dd16404f9..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25601.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25602.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25602.png" deleted file mode 100644 index 15bf061f445b5364683f00faea6049b31db7bb4b..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25602.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25603.PNG" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25603.PNG" deleted file mode 100644 index 3c853a47abeff78ec5f4c29a070681f38d3f3234..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25603.PNG" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25604.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25604.png" deleted file mode 100644 index 5ef966fd59135a467add953c41d834add71b6104..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25604.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25605.PNG" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25605.PNG" deleted file mode 100644 index b5c375618bd2ce4a154ea9775aa44dcd413a91f9..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25605.PNG" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\211\213\345\212\250\344\270\264\346\227\266\344\277\256\346\224\2711.PNG" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\211\213\345\212\250\344\270\264\346\227\266\344\277\256\346\224\2711.PNG" deleted file mode 100644 index 8a2225563a4548f81a7cd8b0e5412b720b71d108..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\211\213\345\212\250\344\270\264\346\227\266\344\277\256\346\224\2711.PNG" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\211\213\345\212\250\344\270\264\346\227\266\344\277\256\346\224\2712.PNG" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\211\213\345\212\250\344\270\264\346\227\266\344\277\256\346\224\2712.PNG" deleted file mode 100644 index d81b8c2a21e9e3959a755a6489e133a53304c41c..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\211\213\345\212\250\344\270\264\346\227\266\344\277\256\346\224\2712.PNG" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\211\213\345\212\250\344\270\264\346\227\266\344\277\256\346\224\2713.PNG" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\211\213\345\212\250\344\270\264\346\227\266\344\277\256\346\224\2713.PNG" deleted file mode 100644 index 07090145eb27fc752d36d2019f38c3b32d03134d..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\211\213\345\212\250\344\270\264\346\227\266\344\277\256\346\224\2713.PNG" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\211\247\350\241\214\344\273\273\345\212\241.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\211\247\350\241\214\344\273\273\345\212\241.png" deleted file mode 100644 index 52c148022f93ce4b5fbdeb0eddf156dc337b0f62..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\211\247\350\241\214\344\273\273\345\212\241.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\217\220\347\244\272\345\205\263\351\227\255SELinux.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\217\220\347\244\272\345\205\263\351\227\255SELinux.png" deleted file mode 100644 index 796adea06f8eb0330858ee6b6780cd37bf9f89b5..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\217\220\347\244\272\345\205\263\351\227\255SELinux.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\236\204\345\273\272\344\272\262\345\222\214\345\210\206\346\236\220\346\212\245\345\221\212.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\236\204\345\273\272\344\272\262\345\222\214\345\210\206\346\236\220\346\212\245\345\221\212.png" deleted file mode 100644 index 9ae9eaac03976dff63ae386d6e304cd6436f1555..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\236\204\345\273\272\344\272\262\345\222\214\345\210\206\346\236\220\346\212\245\345\221\212.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\237\245\347\234\213\344\273\273\345\212\241\346\211\247\350\241\214\347\212\266\346\200\20101.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\237\245\347\234\213\344\273\273\345\212\241\346\211\247\350\241\214\347\212\266\346\200\20101.png" deleted file mode 100644 index 594b58339cf2a2437bd6554e7994d8f6577f046a..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\237\245\347\234\213\344\273\273\345\212\241\346\211\247\350\241\214\347\212\266\346\200\20101.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\237\245\347\234\213\344\273\273\345\212\241\346\211\247\350\241\214\347\212\266\346\200\20102.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\237\245\347\234\213\344\273\273\345\212\241\346\211\247\350\241\214\347\212\266\346\200\20102.png" deleted file mode 100644 index 24235823603fad9d47fcafbc67524bd49d84bb03..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\237\245\347\234\213\344\273\273\345\212\241\346\211\247\350\241\214\347\212\266\346\200\20102.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\237\245\351\230\205\346\212\245\345\221\212.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\237\245\351\230\205\346\212\245\345\221\212.png" deleted file mode 100644 index 06f61b0a19329bf47497b0a8882813c85a2e7e9b..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\237\245\351\230\205\346\212\245\345\221\212.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\260\270\344\271\205\350\207\252\345\212\250\344\277\256\346\224\2711.PNG" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\260\270\344\271\205\350\207\252\345\212\250\344\277\256\346\224\2711.PNG" deleted file mode 100644 index 6cf346e5aa9ec6979e2b65d09617743ff6225cae..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\260\270\344\271\205\350\207\252\345\212\250\344\277\256\346\224\2711.PNG" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\260\270\344\271\205\350\207\252\345\212\250\344\277\256\346\224\2712.PNG" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\260\270\344\271\205\350\207\252\345\212\250\344\277\256\346\224\2712.PNG" deleted file mode 100644 index 0f976061e6f7a31fdeb09fbe4fea0c4cade978d4..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\260\270\344\271\205\350\207\252\345\212\250\344\277\256\346\224\2712.PNG" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\260\270\344\271\205\350\207\252\345\212\250\344\277\256\346\224\2713.PNG" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\260\270\344\271\205\350\207\252\345\212\250\344\277\256\346\224\2713.PNG" deleted file mode 100644 index 4def0376b86b602ed1c0d427cb4f528d8f5ed01c..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\260\270\344\271\205\350\207\252\345\212\250\344\277\256\346\224\2713.PNG" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\260\270\344\271\205\350\207\252\345\212\250\344\277\256\346\224\2714.PNG" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\260\270\344\271\205\350\207\252\345\212\250\344\277\256\346\224\2714.PNG" deleted file mode 100644 index f72dbb6015883e2fd75c6af3a5e7909ddee9ac3d..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\260\270\344\271\205\350\207\252\345\212\250\344\277\256\346\224\2714.PNG" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\260\270\344\271\205\350\207\252\345\212\250\344\277\256\346\224\2715.PNG" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\260\270\344\271\205\350\207\252\345\212\250\344\277\256\346\224\2715.PNG" deleted file mode 100644 index f617c2a9fec48789f139b232a933ecb50347a9b4..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\260\270\344\271\205\350\207\252\345\212\250\344\277\256\346\224\2715.PNG" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\267\273\345\212\240\345\207\255\346\215\256\345\210\260DevKit\345\207\255\346\215\256\345\237\237\344\270\213.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\267\273\345\212\240\345\207\255\346\215\256\345\210\260DevKit\345\207\255\346\215\256\345\237\237\344\270\213.png" deleted file mode 100644 index 8e3608d56dcb56e1cd2bff3a32a2827baa503543..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\267\273\345\212\240\345\207\255\346\215\256\345\210\260DevKit\345\207\255\346\215\256\345\237\237\344\270\213.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\267\273\345\212\240\345\207\255\346\215\256\345\237\237.PNG" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\267\273\345\212\240\345\207\255\346\215\256\345\237\237.PNG" deleted file mode 100644 index 5f0d95b588ac172a691e3909822b2068f887d678..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\267\273\345\212\240\345\207\255\346\215\256\345\237\237.PNG" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\267\273\345\212\240\351\262\262\351\271\217DevKitJenkinsCI\346\217\222\344\273\266\345\207\255\346\215\256\345\237\23701.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\267\273\345\212\240\351\262\262\351\271\217DevKitJenkinsCI\346\217\222\344\273\266\345\207\255\346\215\256\345\237\23701.png" deleted file mode 100644 index 7c920b8ce5faf6cf9d1a2fc581c062ccad734114..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\267\273\345\212\240\351\262\262\351\271\217DevKitJenkinsCI\346\217\222\344\273\266\345\207\255\346\215\256\345\237\23701.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\267\273\345\212\240\351\262\262\351\271\217DevKitJenkinsCI\346\217\222\344\273\266\345\207\255\346\215\256\345\237\23702.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\267\273\345\212\240\351\262\262\351\271\217DevKitJenkinsCI\346\217\222\344\273\266\345\207\255\346\215\256\345\237\23702.png" deleted file mode 100644 index a1a05b75b2f2e2899a9226c5e3c3b3170004cebd..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\267\273\345\212\240\351\262\262\351\271\217DevKitJenkinsCI\346\217\222\344\273\266\345\207\255\346\215\256\345\237\23702.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\272\220\347\240\201\350\277\201\347\247\273\346\212\245\345\221\212.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\272\220\347\240\201\350\277\201\347\247\273\346\212\245\345\221\212.png" deleted file mode 100644 index 5a8a186972c7bff34adc905592f5e43d5157162b..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\272\220\347\240\201\350\277\201\347\247\273\346\212\245\345\221\212.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\274\224\347\244\272\351\203\250\347\275\262\346\236\266\346\236\204\345\205\263\347\263\273\345\233\276.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\274\224\347\244\272\351\203\250\347\275\262\346\236\266\346\236\204\345\205\263\347\263\273\345\233\276.png" deleted file mode 100644 index e0d1c52d605b1fb477b79b115dd9328de7a9f8f0..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\346\274\224\347\244\272\351\203\250\347\275\262\346\236\266\346\236\204\345\205\263\347\263\273\345\233\276.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\347\246\273\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26601.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\347\246\273\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26601.png" deleted file mode 100644 index 4966e7f173d8c895385c9fc1d4dcd5c3ed09c03a..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\347\246\273\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26601.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\347\246\273\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26602.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\347\246\273\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26602.png" deleted file mode 100644 index c8c5e21dd6e61950033c44944c58faaa8ab34085..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\347\246\273\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26602.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\347\246\273\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26603.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\347\246\273\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26603.png" deleted file mode 100644 index 29324a46ebd8d9d00061d333020e0c732b904c5a..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\347\246\273\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26603.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\347\263\273\347\273\237\347\216\257\345\242\203\344\277\241\346\201\257.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\347\263\273\347\273\237\347\216\257\345\242\203\344\277\241\346\201\257.png" deleted file mode 100644 index b228d3b7a55e2df73c5986cc751eab79f63b3d80..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\347\263\273\347\273\237\347\216\257\345\242\203\344\277\241\346\201\257.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\350\212\202\347\202\271\350\277\236\346\216\245\346\210\220\345\212\237.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\350\212\202\347\202\271\350\277\236\346\216\245\346\210\220\345\212\237.png" deleted file mode 100644 index 571c53f4db16373ac5982a2134abecb9dfd0db3e..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\350\212\202\347\202\271\350\277\236\346\216\245\346\210\220\345\212\237.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\351\207\215\346\226\260\350\277\236\346\216\245\350\212\202\347\202\271.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\351\207\215\346\226\260\350\277\236\346\216\245\350\212\202\347\202\271.png" deleted file mode 100644 index 8559c2a238cc9047bff30bf3b469abc544456274..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\351\207\215\346\226\260\350\277\236\346\216\245\350\212\202\347\202\271.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\351\262\262\351\271\217DevKit\345\205\250\351\207\217\345\256\211\350\243\205\345\214\20523.0.0\344\270\213\350\275\275\344\270\273\351\241\265.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\351\262\262\351\271\217DevKit\345\205\250\351\207\217\345\256\211\350\243\205\345\214\20523.0.0\344\270\213\350\275\275\344\270\273\351\241\265.png" deleted file mode 100644 index 005688b2056700a730114af05b25a05e509cb135..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\351\262\262\351\271\217DevKit\345\205\250\351\207\217\345\256\211\350\243\205\345\214\20523.0.0\344\270\213\350\275\275\344\270\273\351\241\265.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\351\262\262\351\271\217DevKit\345\256\211\350\243\205\351\203\250\347\275\262\346\210\220\345\212\23701.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\351\262\262\351\271\217DevKit\345\256\211\350\243\205\351\203\250\347\275\262\346\210\220\345\212\23701.png" deleted file mode 100644 index 19b791865c91e50524e25057568ebce60f565235..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\351\262\262\351\271\217DevKit\345\256\211\350\243\205\351\203\250\347\275\262\346\210\220\345\212\23701.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\351\262\262\351\271\217DevKit\345\256\211\350\243\205\351\203\250\347\275\262\346\210\220\345\212\23702.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\351\262\262\351\271\217DevKit\345\256\211\350\243\205\351\203\250\347\275\262\346\210\220\345\212\23702.png" deleted file mode 100644 index 21fe06bcf76b32d2a5c9305df07d7627b1ea2bc4..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\351\262\262\351\271\217DevKit\345\256\211\350\243\205\351\203\250\347\275\262\346\210\220\345\212\23702.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\351\262\262\351\271\217DevKit\346\265\217\350\247\210\345\231\250\345\267\245\344\275\234\346\250\241\345\274\217\345\256\230\346\226\271\345\256\211\350\243\205\346\226\207\346\241\243.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\351\262\262\351\271\217DevKit\346\265\217\350\247\210\345\231\250\345\267\245\344\275\234\346\250\241\345\274\217\345\256\230\346\226\271\345\256\211\350\243\205\346\226\207\346\241\243.png" deleted file mode 100644 index 9d44f37ce16fe0be88caf626b13f4e703c0d6e3a..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\351\262\262\351\271\217DevKit\346\265\217\350\247\210\345\231\250\345\267\245\344\275\234\346\250\241\345\274\217\345\256\230\346\226\271\345\256\211\350\243\205\346\226\207\346\241\243.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\351\262\262\351\271\217LOGO.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\351\262\262\351\271\217LOGO.png" deleted file mode 100644 index 4ebdd9277a2d0354baf2fc0e544af9cc7fe217b9..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins.assets/\351\262\262\351\271\217LOGO.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins\346\265\201\346\260\264\347\272\277\351\205\215\347\275\256Java\346\200\247\350\203\275\345\210\206\346\236\220.md" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins\346\265\201\346\260\264\347\272\277\351\205\215\347\275\256Java\346\200\247\350\203\275\345\210\206\346\236\220.md" deleted file mode 100644 index 84e9a1ba87bb49a4539cf25a7cbb8bea9d82160a..0000000000000000000000000000000000000000 --- "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins\346\265\201\346\260\264\347\272\277\351\205\215\347\275\256Java\346\200\247\350\203\275\345\210\206\346\236\220.md" +++ /dev/null @@ -1,116 +0,0 @@ -## Jenkins Pipeline 中集成 Java性能分析 - -### 一. Java性能分析 - -```groovy - -stage('Java Performance Analysis') { - steps { - echo '====== Java Performance Analysis ======' - sh ''' - # 设置当返回不为0时 停止下一步,直接返回 - set -e - CURDIR=$(pwd) - # 删除上次jmeter产生的报告 (jmeter 命令-l、-o指定的文件和路径) - rm -rf /home/zpp/report /home/zpp/result.html - # 运行java性能采集 - /home/zpp/.local/devkit_distribute/bin/entrance -i 160.0.1.2,160.0.1.3 -u root -f /home/zpp/.ssh/id_rsa -D 160.0.1.5 -a spring-boot -d 10 -g /home/zpp/spring-boot -j "sh /home/zpp/apache-jmeter-5.6.3/bin/jmeter.sh -nt /home/zpp/Test_request.jmx -l /home/zpp/result.html -eo /home/zpp/report" - ''' - } - post { - always { - publishHTML(target: [allowMissing: false, - alwaysLinkToLastBuild: false, - keepAll : true, - reportDir : '/home/zpp/.local/devkit_distribute/data', - reportFiles : 'devkit_performance_report.html', - reportName : 'Java Performance Report'] - ) - } - } -} -``` - -**entrance**具体参数如下 - -| 参数 | 参数类型 | 参数说明 | -|----|-----------|----------------------------------------------------------------------------------------------------------------------------------------| -| -i | ipv4,ipv4 | 必选参数。需要采集的目标程序所在的服务器地址, 多个使用逗号隔离 | -| -u | str | 必选参数。服务器的用户名 | -| -f | str | 必选参数。执行机免密登陆所有服务器(-i指定的)的私钥路径 | -| -a | str | 必选参数。需要采集的应用名称,多个采用逗号隔离 | -| -g | str | 可选参数。执行机上通过git clone下载的代码路径 | -| -j | str | 可选参数。jmeter执行命令。例如 bash /opt/apache-jmeter-5.6.3/bin/jmeter.sh -nt /home/xxx/Request.jmx -l /home/xxx/result.html -eo /home/xxx/report | -| -d | num | 必选参数。任务采集执行时间,单位秒。当存在-j参数时,jmeter结束或者到达采集执行时间,结束采集。 | -| -D | ipv4 | 必选参数。Devkit工具的地址。 | -| -P | num | 可选参数。Devkit工具的端口,默认值8086。 | -| -U | str | 可选参数。Devkit工具的用户名,默认值devadmin。 | -| -W | str | 可选参数。Devkit工具的密码,默认值devkit123。 | - -### 二. 配置示例 - -#### 1. 安装java分发采集命令行工具到执行jenkins执行机 - -##### 1.1 使用deploy_tool命令安装角色executor - -[通过deploy_tool部署工具部署executor](../批量部署工具/批量部署工具和一键下载工具说明文档.md) - -安装完成后查看 - -![安装成功](./DevkitPerformanceAnalysis.assets/安装成功.png) - -##### 1.2 离线安装 - -###### 1.2.1 下载离线包 - -发行版中下载**最新**的devkit_distribute.tar.gz -![下载Devkit_Distribute](DevkitPerformanceAnalysis.assets/下载Devkit_Distribute.png) - -###### 1.2.2 执行以下命令: - -```shell - mkdir -p "${HOME}"/.local - tar --no-same-owner -zxf devkit_distribute.tar.gz -C "${HOME}"/.local/ -``` - -###### 1.2.3 安装成功: -![Devkit_Distribute离线安装成功.png](DevkitPerformanceAnalysis.assets/Devkit_Distribute离线安装成功.png) - -#### 2. 确定需要采集的java程序所在机器存在jcmd命令 - -##### 2.1 检查jcmd命令是否存在 - -![确定是否存在jcmd命令](./DevkitPerformanceAnalysis.assets/检查jcmd命令存在.png) - -##### 2.2 安装jcmd命令 - -![安装带有jcmd命令的JDK](./DevkitPerformanceAnalysis.assets/安装带有jcmd命令的JDK.png) - -#### 3. 配置流水线 - -![创建Pipeline任务01](./DevkitPerformanceAnalysis.assets/创建Pipeline任务01.png) -![创建Pipeline任务02](./DevkitPerformanceAnalysis.assets/创建Pipeline任务02.png) -![配置流水线](./DevkitPerformanceAnalysis.assets/创建Pipeline任务03.png) ----- - -#### 4. 执行任务 - -![执行任务](./DevkitPerformanceAnalysis.assets/执行流水.png) - ----- - -#### 5. 查看任务执行状态和报告 - -##### 5.1 失败执行 - -![执行结束打开报告](./DevkitPerformanceAnalysis.assets/失败状态.png) - -![执行结束打开报告](./DevkitPerformanceAnalysis.assets/失败信息.png) - -##### 5.2 成功执行 - -![执行结束打开报告](./DevkitPerformanceAnalysis.assets/执行结束打开报告.png) - -##### 5.3 最终报告 - -![具体报告](./DevkitPerformanceAnalysis.assets/具体报告.png) diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins\346\265\201\346\260\264\347\272\277\351\205\215\347\275\256\350\277\201\347\247\273\343\200\201\344\272\262\345\222\214\351\227\250\347\246\201.md" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins\346\265\201\346\260\264\347\272\277\351\205\215\347\275\256\350\277\201\347\247\273\343\200\201\344\272\262\345\222\214\351\227\250\347\246\201.md" deleted file mode 100644 index 6d4dfc1bda45e8e53ddc3a2e10c500c44278e17f..0000000000000000000000000000000000000000 --- "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/Jenkins\346\265\201\346\260\264\347\272\277\351\205\215\347\275\256\350\277\201\347\247\273\343\200\201\344\272\262\345\222\214\351\227\250\347\246\201.md" +++ /dev/null @@ -1,545 +0,0 @@ -
《鲲鹏 DevKit CLI 与 Jenkins 集成部署指导手册》
- - - - - -[TOC] - ------- - -## 一、Jenkins Pipeline 中集成 DevKit CLI - -**命令行各任务模块命令解释:** - -应用迁移包含软件迁移评估、源码迁移和系统迁移,其命令行返回值如下: - -命令行状态码含义 -| 状态码 | 触发情况 | -| ------ | ------------------------------------------ | -| 0 | 无扫描建议 | -| 1 | 扫描结果只存在建议项 | -| 2 | 扫描任务出现Ctrl+C(SIGINT(2)) | -| 3 | 扫描结果超时 | -| 4 | 扫描命令错误 | -| 5 | 扫描结果存在必须修改项 | -| 15/20 | 扫描任务出现Ctrl+Z SIGTERM(15)/SIGTSTP(20) | - -- ##### 软件迁移评估: - - -```groovy -# devkit porting pkg-mig -i 待扫描软件包 -r 输出报告格式 -# 示例 devkit porting pkg-mig -i impala-2.9.0+cdh5.12.1+0-1.cdh5.12.1.p0.3.el7.x86_64.rpm -r html -# 该节点建议放在构建流程节点后 -stage('software-migration-assessment') { - steps { - echo '====== 软件迁移评估 ======' - sh ''' - /usr/bin/rm -rf ./pkg-mig*.html - devkit porting pkg-mig -i impala-2.9.0+cdh5.12.1+0-1.cdh5.12.1.p0.3.el7.x86_64.rpm -r html - mv ./pkg-mig*.html ./SoftwareMigrationAssessment.html - ''' - } - post { - always { - publishHTML(target: [allowMissing: false, - alwaysLinkToLastBuild: false, - keepAll : true, - reportDir : '.', - reportFiles : 'SoftwareMigrationAssessment.html', - reportName : 'SoftwareMigrationAssessment Report'] - ) - } - } -} -``` - -具体参数如下 - -| 参数 | 参数选项 | 参数说明 | -| ---------------- | ----------------- | ------------------------------------------------------------ | -| -i/--input | package_path | 必选参数。待扫描的软件包路径,若存在多个扫描路径需使用英文逗号分割。支持的软件包格式有包括RPM、DEB、JAR/WAR包、TAR、ZIP、GZIP压缩文件等。例如:/home/test1.jar, /home/test2.jar。 | -| -t/--target-os | target-os | 可选参数。待扫描的目标操作系统。 | -| -o/--output | output_path | 可选参数。报告存放路径。报告默认存放在当前执行路径下,名称默认为“特性名称_时间戳”。 | -| --set-timeout | time | 可选参数。任务超时时间。默认无超时时间,任务将持续执行直到结束。 | -| -l/--log-level | 0,1,2,3 | 可选参数。任务日志级别。0(DEBUG)、1(INFO)、2(WARNING)、3(ERROR),默认为1(INFO)。 | -| -r/--report-type | all,json,html,csv | 可选参数。扫描报告的格式。默认为all,即默认生成json、html、csv三种报告 | - -- ##### 源码迁移: - - -```groovy - # devkit porting src-mig -i 待扫描源码的文件夹或压缩包路径 -c 源码的构建命令 -r 输出报告格式 - # 示例 devkit porting src-mig -i ./wtdbg2 -c make -r html - # 该节点若是扫描软件包建议放在构建流程节点后,若是源码文件则建议放在构建流程节点前 -stage('source-code-migration') { - steps { - echo '====== 源码迁移 ======' - script{ - def STATUS_CODE = sh(returnStatus: true, script: ''' - /usr/bin/rm -rf ./src-mig*.html ./SourceCodeScanningReport.html - devkit porting src-mig -i /root/complier/dataRelocation/ -c make -r html - ''') - sh ''' - html_file_name=$(find ./ -name src-mig*.html) - if [[ ${html_file_name} ]]; then - mv ${html_file_name} ./SourceCodeScanningReport.html - fi - ''' - switch(STATUS_CODE) { - case 0: - echo '【源码迁移】--> 无扫描建议 <--' - break - case 1: - currentBuild.result = 'UNSTABLE' - echo '【源码迁移】--> 扫描结果只存在建议项 <--' - break - case 3: - currentBuild.result = 'ABORTED' - echo '【源码迁移】--> 扫描结果超时 <--' - break - case 4: - currentBuild.result = 'ABORTED' - echo '【源码迁移】--> 扫描命令错误 <--' - break - case 5: - currentBuild.result = 'FAILURE' - echo '【源码迁移】--> 扫描结果存在必须修改项 <--' - error('【源码迁移】--> 扫描结果存在必须修改项 <--') - break - default: - currentBuild.result = 'ABORTED' - echo '【源码迁移】--> 异常终断开{Ctrl + C | Ctrl + Z} <--' - break - } - } - } - post { - always { - publishHTML(target: [allowMissing: false, - alwaysLinkToLastBuild: false, - keepAll : true, - reportDir : '.', - reportFiles : 'SourceCodeScanningReport.html', - reportName : 'Source Code Scanning Report'] - ) - } - } -} -``` ->**若流水失败且此`Stage`提示`【源码迁移】--> 扫描结果存在必须修改项 <--`时,则说明此源码扫描结果中存在规则项。此时需要根据扫描报告中的规则项提示判断是否修改,如果要忽略这些规则项提示,则可以将这些规则项添加到ignore_rules.json文件(此文件在Devkit CLI工具中的路径如:`/path/DevKit-CLI-24.0.RC1-Linux-Kunpeng/porting/ignore_rules.json`)并在后续执行源码迁移命令中使用--ignore指定此文件。示例如下:** -> ->**devkit porting src-mig -i ./wtdbg2 -c make -r html --ignore /path/DevKit-CLI-24.0.RC1-Linux-Kunpeng/porting/ignore_rules.json** - - -具体参数如下 - -| 参数 | 参数选项 | 参数说明 | -| --------------------- | --------------------------------- | ------------------------------------------------------------ | -| -i/--input-path | path | 必选参数。待扫描源码的文件夹或压缩包路径,若存在多个扫描路径需使用英文逗号分割。例如:/home/test1,/home/test2。 | -| -c/--cmd | cmd | 指定源代码的构建命令,例如:make all。如果扫描的源码只包含解释型语言,则为**可选参数**,否则为**必选参数** | -| -s/--source-type | c,c++,asm,fortran,go, interpreted | 可选参数。待扫描源码类型。 | -| -t/--target-os | target-os | 可选参数。迁移的目标操作系统。如果用户不输入则默认为当前操作系统。例如:bclinux7.7。 | -| -p/--compiler | gcc,clang | 可选参数。编译器版本。默认为选定目标操作系统的默认GCC版本。例如:gcc7.8.5 | -| -f/--fortran-compiler | flang-ver | 可选参数。fortran代码的编译器版本。默认为flang2.5.0.1。 | -| -b/--build-tool | make,cmake,automake,go | 可选参数。构建工具。默认make,只有在--source-type中没有c/c++/asm/fortran并且包含go时可以选go。 | -| -o/--output | /home/test/report | 可选参数。扫描报告的存放地址和文件名称。默认存放在当前执行路径下,名称默认为功能名_时间戳_uuid(4位)。 | -| --set-timeout | time | 可选参数。命令行的超时时间。默认无超时时间。 | -| -l/--log-level | 0,1,2,3 | 可选参数。设置日志级别。0(DEBUG)、1(INFO)、2(WARNING)、3(ERROR),默认为1(INFO)。 | -| -r/--report-type | all,json,html,csv | 可选参数。 扫描报告的格式。默认为all,选择all的时候json、csv和html报告都会生成。 | -| --ignore | /opt/ignore.json | 可选参数。屏蔽扫描规则信息。 | - -- ##### 64位运行模式检查: - -```groovy -# devkit advisor mode-check -i 待扫描的源码文件夹路径 -# 示例 devkit advisor mode-check -i /opt/DevKit/testcase/affinity/precheck/test005 -r html -# 该节点建议放在构建流程节点前 -stage('64-bit-running-mode-check') { - steps { - echo '====== 64位运行模式 ======' - sh ''' - /usr/bin/rm -rf ./mode_check*.html - devkit advisor mode-check -i /opt/DevKit/testcase/affinity/precheck/test005 -r html - mv ./mode_check*.html ./64-bit-running-mode-check.html - ''' - } - post { - always { - publishHTML(target: [allowMissing: false, - alwaysLinkToLastBuild: false, - keepAll : true, - reportDir : '.', - reportFiles : '64-bit-running-mode-check.html', - reportName : '64-bit-running-mode-check Report'] - ) - } - } -} -``` - -具体参数如下 - -| 参数 | 参数选项 | 参数说明 | -| ---------------- | ----------------- | ------------------------------------------------------------ | -| -i/--input | package_path | 必选参数。待扫描的源码文件夹路径,若存在多个扫描路径需使用英文逗号分割。例如:/home/test1, /home/test2。 | -| -o/--output | output_path | 可选参数。报告存放路径。报告默认存放在当前执行路径下,名称默认为“特性名称_时间戳”。 | -| --set-timeout | time | 可选参数。任务超时时间。默认无超时时间,任务将持续执行直到结束。 | -| -l/--log-level | 0,1,2,3 | 可选参数。日志等级,0(DEBUG)、1(INFO)、2(WARNING)、3(ERROR),默认为1(INFO)。 | -| -r/--report-type | all,json,html,csv | 可选参数。扫描报告的格式。默认为all,即默认生成json、html、csv三种报告。 | - -- ##### 字节对齐检查: - -```groovy -# devkit advisor byte-align -i 待扫描的源码文件夹路径 -c 源码构建命令 -b 构建工具 -# 示例 devkit advisor byte-align -i /opt/DevKit/wtdbg2-2.5 -c make -b make -r html -# 该节点建议放在构建流程节点前 -stage('byte-alignment-check') { - steps { - echo '====== 字节对齐检查 ======' - sh ''' - /usr/bin/rm -rf ./byte-align*.html - devkit advisor byte-align -i /opt/DevKit/wtdbg2-2.5 -c make -b make -r html - mv ./byte-align*.html ./byte-alignment-check.html - ''' - } - post { - always { - publishHTML(target: [allowMissing: false, - alwaysLinkToLastBuild: false, - keepAll : true, - reportDir : '.', - reportFiles : 'byte-alignment-check.html', - reportName : 'byte-alignment-check Report'] - ) - } - } -} -``` - -具体参数如下 - -| 参数 | 参数选项 | 参数说明 | -| ---------------- | ------------------- | ------------------------------------------------------------ | -| -i/--input | package_path | 必选参数。待扫描的源码文件夹路径,若存在多个扫描路径需使用英文逗号分割。例如:/home/test1, /home/test2。 | -| -c/--cmd | cmd | 必选参数。源码构建命令。在服务器中正常执行的构建命令,命令中如有空格,要使用单引号包住。 | -| -b/--build-tool | make,cmake,automake | 必选参数。构建工具。当前工具支持make,cmake,automake,默认选项为make。 如-c make -b make 、-c cmake -b cmake 、-c make -b automake | -| -o/--output | output_path | 可选参数。报告存放路径。报告默认存放在当前执行路径下,名称默认为“特性名称_时间戳”。 | -| --set-timeout | time | 可选参数。任务超时时间。默认无超时时间,任务将持续执行直到结束。 | -| -l/--log-level | 0,1,2,3 | 可选参数。日志等级,0(DEBUG)、1(INFO)、2(WARNING)、3(ERROR),默认为1(INFO)。 | -| -r/--report-type | all,json,html,csv | 可选参数。扫描报告的格式。默认为all,即默认生成json、html、csv三种报告。 | - -- - ##### 内存一致性检查: - -```groovy - # devkit advisor mem-cons -i BC文件对应的源码文件路径 -f BC文件路径 (需要用户配合编写生成的BC文件脚本) - # 示例 devkit advisor mem-cons -i /opt/DevKit/testcase/affinity/weak_cons/test-mulbc_sort -f /opt/DevKit/testcase/affinity/weak_cons/bc_file -r html -# 该节点建议放在构建流程节点前 -stage('memory-consistency-check') { - agent { - label 'Linux_aarch64' - } - steps { - echo '====== 内存一致性检查 ======' - sh ''' - /usr/bin/rm -rf ./mem-cons*.html - devkit advisor mem-cons -i /opt/DevKit/testcase/affinity/weak_cons/test-mulbc_sort -f /opt/DevKit/testcase/affinity/weak_cons/bc_file -r html - mv ./mem-cons*.html ./memory-consistency-check.html - ''' - } - post { - always { - publishHTML(target: [allowMissing: false, - alwaysLinkToLastBuild: false, - keepAll : true, - reportDir : '.', - reportFiles : 'memory-consistency-check.html', - reportName : 'memory-consistency-check Report'] - ) - } - } -} -``` - -具体参数如下 - -| 参数 | 参数选项 | 参数说明 | -| ---------------- | ----------------- | ------------------------------------------------------------ | -| -i/--input | package_path | 必选参数。BC文件对应的源码文件路径。例如:/home/test | -| -f/--bc-file | path | 必选参数。BC文件路径,该路径下必须存在BC文件。例如:/home/testbc | -| --autofix | true/false | 可选参数。是否生成编译器配置文件。默认为false。 | -| --autofix-dir | path | 可选参数。编译器配置文件的存放地址。默认生成在工具目录下的源码文件夹下,使用--autofix且参数必须为true时才能生效。 | -| -o/--output | output_path | 可选参数。报告存放路径。报告默认存放在当前执行路径下,名称默认为“特性名称_时间戳”。 | -| --set-timeout | time | 可选参数。任务超时时间。默认无超时时间,任务将持续执行直到结束。 | -| -l/--log-level | 0,1,2,3 | 可选参数。日志等级,0(DEBUG)、1(INFO)、2(WARNING)、3(ERROR),默认为1(INFO)。 | -| -r/--report-type | all,json,html,csv | 可选参数。扫描报告的格式。默认为all,即默认生成json、html、csv三种报告。 | - -- ##### 向量化检查: - -```groovy -# devkit advisor vec-check -i BC文件对应的源码文件路径 -f BC文件路径 -c 源码的构建命令 -# 示例 devkit advisor vec-check -i /opt/DevKit/testcase/affinity/vec/simple -f /opt/DevKit/testcase/affinity/vec/BCfiles -c make -r html -# 该节点建议放在构建流程节点前 -stage('vectorized-check') { - steps { - echo '====== 向量化检查 ======' - sh ''' - /usr/bin/rm -rf ./vec-check*.html - devkit advisor vec-check -i /opt/DevKit/testcase/affinity/vec/simple -f /opt/DevKit/testcase/affinity/vec/BCfiles -c make -r html - mv ./vec-check*.html ./vectorized-check.html - ''' - } - post { - always { - publishHTML(target: [allowMissing: false, - alwaysLinkToLastBuild: false, - keepAll : true, - reportDir : '.', - reportFiles : 'vectorized-check.html', - reportName : 'vectorized-check Report'] - ) - } - } -} -``` - -具体参数如下 - -| 参数 | 参数选项 | 参数说明 | -| ---------------- | ----------------- | ------------------------------------------------------------ | -| -i/--input | package_path | 必选参数。BC文件对应的源码文件路径。例如:/home/test | -| -f/--bc-file | path | 必选参数。BC文件路径,该路径下必须存在BC文件。例如:/home/testbc | -| -c/--cmd | cmd | 必选参数。源码的构建命令。例如:make all | -| -p/--compiler | gcc,clang | 可选参数。编译器。默认为clang。例如:gcc。 | -| -o/--output | output_path | 可选参数。报告存放路径。报告默认存放在当前执行路径下,名称默认为“特性名称_时间戳”。 | -| --set-timeout | time | 可选参数。任务超时时间。默认无超时时间,任务将持续执行直到结束。 | -| -l/--log-level | 0,1,2,3 | 可选参数。日志等级,0(DEBUG)、1(INFO)、2(WARNING)、3(ERROR),默认为1(INFO)。 | -| -r/--report-type | all,json,html,csv | 可选参数。扫描报告的格式。默认为all,即默认生成json、html、csv三种报告。 | -| --sve-enable | true,false | 可选参数。是否启用sve。默认不开启。 | - - -### 1. 示例在Jenkins中配置命令行创建 Pipeline 任务: - -> 下文使用到的 Jenkins Pipeline 样例脚本『有关 `devkit` 命令行用法,请使用以下命令查看 HELP 手册: `devkit --help`』 -> -> ```groovy -> pipeline { -> agent any -> options { -> timeout(time: 1, unit: 'HOURS') -> } -> parameters { -> string(name: 'GIT_URL', defaultValue: 'https://github.com/ruanjue/wtdbg2.git', description: '--> git url <--') -> string(name: 'GIT_BRANCH', defaultValue: 'v2.5', description: '--> code branch <--') -> string(name: 'GIT_TARGET_DIR_NAME', defaultValue: 'wtdbg2', description: '--> code branch <--') -> } -> stages{ -> stage('Git Clone Code') { -> agent { -> label 'Linux_aarch64' -> } -> steps { -> echo '====== 获取源码 ======' -> checkout scmGit(branches: [[name: "${params.GIT_BRANCH}"]], -> browser: github("${params.GIT_URL}"), -> extensions: [[$class: 'RelativeTargetDirectory', -> relativeTargetDir: "${params.GIT_TARGET_DIR_NAME}"], -> cleanBeforeCheckout(deleteUntrackedNestedRepositories: true)], -> userRemoteConfigs: [[url: "${params.GIT_URL}"]]) -> } -> } -> stage('PARALLEL BUILD') { -> parallel { -> stage('Kunpeng') { -> agent { -> label 'Linux_aarch64' -> } -> stages{ -> stage('source-code-migration') { -> steps { -> echo '====== 源码迁移 ======' -> script{ -> def STATUS_CODE = sh(returnStatus: true, script: ''' -> /usr/bin/rm -rf ./src-mig*.html ./SourceCodeScanningReport.html -> devkit porting src-mig -i /root/complier/dataRelocation/ -c make -r html -> ''') -> sh ''' -> html_file_name=$(find ./ -name src-mig*.html) -> if [[ ${html_file_name} ]]; then -> mv ${html_file_name} ./SourceCodeScanningReport.html -> fi -> ''' -> switch(STATUS_CODE) { -> case 0: -> echo '【源码迁移】--> 无扫描建议 <--' -> break -> case 1: -> currentBuild.result = 'UNSTABLE' -> echo '【源码迁移】--> 扫描结果只存在建议项 <--' -> break -> case 3: -> currentBuild.result = 'ABORTED' -> echo '【源码迁移】--> 扫描结果超时 <--' -> break -> case 4: -> currentBuild.result = 'ABORTED' -> echo '【源码迁移】--> 扫描命令错误 <--' -> break -> case 5: -> currentBuild.result = 'FAILURE' -> echo '【源码迁移】--> 扫描结果存在必须修改项 <--' -> error('【源码迁移】--> 扫描结果存在必须修改项 <--') -> break -> default: -> currentBuild.result = 'ABORTED' -> echo '【源码迁移】--> 异常终断开{Ctrl + C | Ctrl + Z} <--' -> break -> } -> } -> } -> post { -> always { -> publishHTML(target: [allowMissing: false, -> alwaysLinkToLastBuild: false, -> keepAll : true, -> reportDir : '.', -> reportFiles : 'SourceCodeScanningReport.html', -> reportName : 'Source Code Scanning Report'] -> ) -> } -> } -> } -> stage('Affinity Scanning') { -> steps { -> echo '====== 构建亲和 ======' -> sh ''' -> devkit advisor constr-check -i ./wtdbg2 -c make -r html -> mv ./constr-check*.html ./ConstrCheckReport.html -> ''' -> } -> post { -> always { -> publishHTML(target: [allowMissing: false, -> alwaysLinkToLastBuild: false, -> keepAll : true, -> reportDir : '.', -> reportFiles : 'ConstrCheckReport.html', -> reportName : 'Affinity Scanning Report'] -> ) -> } -> } -> } -> } -> } -> } -> } -> } -> } -> ``` - -![创建Pipeline任务01](./鲲鹏DevKitCLI与Jenkins集成部署指导手册.assets/创建Pipeline任务01.png)![创建Pipeline任务02](./鲲鹏DevKitCLI与Jenkins集成部署指导手册.assets/创建Pipeline任务02.png)![创建Pipeline任务03](./鲲鹏DevKitCLI与Jenkins集成部署指导手册.assets/创建Pipeline任务03.png) - ----- - -### 2. 执行任务 - -![执行任务](./鲲鹏DevKitCLI与Jenkins集成部署指导手册.assets/执行任务.png) - ----- - -### 3. 查看任务执行状态 - -- ##### 传统方式查看任务执行状态 - - ![传统方式查看任务执行状态](./鲲鹏DevKitCLI与Jenkins集成部署指导手册.assets/传统方式查看任务执行状态.png) - -- ##### 现代方式查看任务执行状态 - - ![现代方式查看任务执行状态](./鲲鹏DevKitCLI与Jenkins集成部署指导手册.assets/现代方式查看任务执行状态.png) - ----- - -### 4. FAQ - -当使用 Jenkins **Snippet Generator** 的 **checkout: Check out from version control** 模板时出现下图错误时,可尝试使用以下解决方案。 - -![FAQ_JENKINS_GIT_SSL_VERIFY](./鲲鹏DevKitCLI与Jenkins集成部署指导手册.assets/FAQ_JENKINS_GIT_SSL_VERIFY.png) - -```shell -#=====================================================================================================================# -# Git 忽略证书校验 -git config --global http.sslVerify false -#---------------------------------------------------------------------------------------------------------------------# -# 如果您的环境设置了系统网络代理,建议执行以下命令 -git config --global http.proxy "${http_proxy}" && git config --global https.proxy "${http_proxy}" -#---------------------------------------------------------------------------------------------------------------------# -# 拷贝当前用户目录下 .gitconfig 文件到 /var/lib/jenkins/ -cp "${HOME}"/.gitconfig /var/lib/jenkins/ -#---------------------------------------------------------------------------------------------------------------------# -# 修改文件的所属用户及用户组为 jenkins -chown jenkins:jenkins /var/lib/jenkins/.gitconfig -#=====================================================================================================================# -``` - ------- - -## 二、查阅报告 - -### 1. 查阅报告 - - **①** 传统方式 - -![传统方式查阅报告](./鲲鹏DevKitCLI与Jenkins集成部署指导手册.assets/传统方式查阅报告.png) - - **②** 现代方式 - -![现代方式查阅报告](./鲲鹏DevKitCLI与Jenkins集成部署指导手册.assets/现代方式查阅报告.png) - -- ##### 源码迁移报告 - - ![源码迁移报告](./鲲鹏DevKitCLI与Jenkins集成部署指导手册.assets/源码迁移报告.png) - -- ##### 构建亲和分析报告 - - ![构建亲和分析报告](./鲲鹏DevKitCLI与Jenkins集成部署指导手册.assets/构建亲和分析报告.png) - ----- - -### 2. FAQ - -> 相关问题根因参考链接: -> -> [https://www.jenkins.io/doc/book/security/user-content/](https://www.jenkins.io/doc/book/security/user-content/) -> [https://www.jenkins.io/doc/book/security/configuring-content-security-policy/](https://www.jenkins.io/doc/book/security/configuring-content-security-policy/) -> [https://content-security-policy.com/](https://content-security-policy.com/) - -**当查看报告时,如下图样式显示异常时,可采用以下方案解决此问题。** - -![FAQ_JENKINS_CONTENT_SECURITY_POLICY01](./鲲鹏DevKitCLI与Jenkins集成部署指导手册.assets/FAQ_JENKINS_CONTENT_SECURITY_POLICY01.png) - -- ##### 临时解决方案(重启后失效) - - ```shell - System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "default-src 'none'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' 'unsafe-inline'; data:;") - ``` - - ![FAQ_JENKINS_CONTENT_SECURITY_POLICY02](./鲲鹏DevKitCLI与Jenkins集成部署指导手册.assets/FAQ_JENKINS_CONTENT_SECURITY_POLICY02.png) - -- ##### 永久解决方案(重启后设置继续生效) - - ```shell - #=====================================================================================================================# - # 将 /usr/lib/systemd/system/jenkins.service 文件中 Environment="JAVA_OPTS=-Djava.awt.headless=true" 选项进行替换 - sed -i 's/Environment="JAVA_OPTS=-Djava.awt.headless=true"/Environment="JAVA_OPTS=-Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP=\\"default-src \x27none\x27; script-src \x27self\x27 \x27unsafe-inline\x27; style-src \x27self\x27 \x27unsafe-inline\x27; img-src \x27self\x27 \x27unsafe-inline\x27; data:;\\""/g' /usr/lib/systemd/system/jenkins.service - #---------------------------------------------------------------------------------------------------------------------# - # 重新加载 systemd 管理器配置 - systemctl daemon-reload - #---------------------------------------------------------------------------------------------------------------------# - # 重启 Jenkins 服务 - systemctl restart jenkins.service - #=====================================================================================================================# - ``` - ------- diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\345\256\211\350\243\205\351\203\250\347\275\262Jenkins.md" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\345\256\211\350\243\205\351\203\250\347\275\262Jenkins.md" deleted file mode 100644 index df857934a551d2db73d1869d815b9024a31e19a6..0000000000000000000000000000000000000000 --- "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\345\256\211\350\243\205\351\203\250\347\275\262Jenkins.md" +++ /dev/null @@ -1,308 +0,0 @@ -
《安装部署 Jenkins》
- -## 安装 Jenkins - -> **Jenkins 运行的 JDK 的最低要求为 JDK11 (官方推荐JDK17)** - -> [Jenkins 离线安装 官方文档](https://www.jenkins.io/doc/book/installing/offline/) -> -> 如需获取目标系统的 Jenkins RPM 或 WAR 离线安装包可前往 [Jenkins mirrors](https://archives.jenkins.io/) 站点获取『推荐获取 **LTS Releases** 发行版』 -> -> 例如本文使用的 Jenkins RPM 软件包下载链接 [https://archives.jenkins.io/redhat-stable/jenkins-2.426.2-1.1.noarch.rpm](https://archives.jenkins.io/redhat-stable/jenkins-2.426.2-1.1.noarch.rpm) -> -> 如您需要 Jenkins WAR 包,可前通过以下资源地址下载 [https://archives.jenkins.io/war-stable/2.426.2/jenkins.war](https://archives.jenkins.io/war-stable/2.426.2/jenkins.war) - -### 1.配置 Jenkins YUM 源 - -```shell -#=====================================================================================================================# -# 下载 Jenkis YUM 镜像文件到 /etc/yum.repos.d/ 目录下『离线模式安装请查阅 Jenkins 官方文档』 -wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo -#---------------------------------------------------------------------------------------------------------------------# -# 导入 Jenkins RPM 安装包校验证书 -rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key -#---------------------------------------------------------------------------------------------------------------------# -# 升级系统软件包『可选(若需要执行以下命令,建议执行完后重启您的系统)』 -yum upgrade -y -#=====================================================================================================================# -``` -### 2.配置 JDK -```shell -#================================================================================# -#创建 JDK 安装目录 -mkdir -p /usr/local/lib64/jvm/bisheng -#================================================================================# - -#================================================================================# -#下载并解压 JDK 到对应的安装目录 -wget -c https://mirrors.huaweicloud.com/kunpeng/archive/compiler/bisheng_jdk/bisheng-jdk-17.0.10-linux-aarch64.tar.gz -O - | tar -C /usr/local/lib64/jvm/bisheng/ -xzf - --no-same-owner -#================================================================================# - -#===============================================================================# -# 创建自动配置脚本 -cat > "${HOME}"/SetJavaAlternatives.sh << 'EOF' -#!/bin/bash -jvm_path=/usr/lib/jvm -mkdir -p "${jvm_path}" -jdk_home_path=/usr/local/lib64/jvm/bisheng/bisheng-jdk-17.0.10 -PRIORITY_ID=901700010 -update-alternatives --install "${jvm_path}"/java-17 java_sdk_17 "${jdk_home_path}" "${PRIORITY_ID}" -update-alternatives --install "${jvm_path}"/java-17-openjdk java_sdk_17_openjdk "${jdk_home_path}" "${PRIORITY_ID}" -update-alternatives --install "${jvm_path}"/java-openjdk java_sdk_openjdk "${jdk_home_path}" "${PRIORITY_ID}" -for BinFilePath in "${jdk_home_path}"/bin/*; do - if [ -x "${BinFilePath}" ]; then - BinFileName="$(basename "${BinFilePath}")" - update-alternatives --install /usr/bin/"${BinFileName}" "${BinFileName}" "${BinFilePath}" "${PRIORITY_ID}" - fi -done -for ManFilePath in "${jdk_home_path}"/man/man1/*; do - if [ -f "${ManFilePath}" ]; then - ManFileName="$(basename "${ManFilePath}")" - update-alternatives --install /usr/share/man/man1/"${ManFileName}" "${ManFileName}" "${ManFilePath}" "${PRIORITY_ID}" - fi -done -EOF - -#-------------------------------------------------------------------------------# -# 执行自动配置脚本 -/bin/bash "${HOME}"/SetJavaAlternatives.sh -#-------------------------------------------------------------------------------# -# 移除自动配置脚本 -rm -rf "${HOME}"/SetJavaAlternatives.sh -#===============================================================================# -配置 JDK 环境变量 -#===============================================================================# - # 一键设置 Java 环境变量 -cat > /etc/profile.d/JavaEnvironmentVariable.sh << 'EOF' -# SET JDK Enviroment -JAVA_HOME=/usr/lib/jvm/java-17 -PATH=$PATH:$JAVA_HOME/bin -export JAVA_HOME PATH -EOF -#===============================================================================# -# 加载系统环境变量 -source /etc/profile -#===============================================================================# -``` - -### 3.部署 Jenkins - -```shell -#=====================================================================================================================# -# 安装 Jenkins RPM -yum install jenkins -y -#---------------------------------------------------------------------------------------------------------------------# -# 重新加载 systemd 管理器配置 -systemctl daemon-reload -#---------------------------------------------------------------------------------------------------------------------# -# 设置开机启动服务并立即启动 jenkins.service -systemctl --now enable jenkins.service -#=====================================================================================================================# -# 防火墙相关设置『可选(请根据实际情况配置您的防火墙,以允许访问 8080 端口)』 -firewall-cmd --permanent --zone=public --add-port=8080/tcp -firewall-cmd --permanent --zone=public --add-service=http -# 使用 RPM 安装的方式默认会安装此规则『若采用其他安装方式安装 Jenkins 请参考官方文档配置您的防火墙规则』 -firewall-cmd --permanent --zone=public --add-service=jenkins -# 重新加载防火墙并保留状态信息 -firewall-cmd --reload -# 查看防火墙规则设置是否生效 -firewall-cmd --permanent --zone=public --list-all -#=====================================================================================================================# -``` - - c43a88c4c6c2ba8eabf474d7555fdc0803dc93a0 - -### 4.Jenkins 初始化设置 - - 在浏览器端口键入以下地址访问 Jenkins 服务,并根据提示进行 Jenkins 的初始配置 **http://<服务器IP>:8080** - -- 根据提示获取初始密码并登录 - - ```shell - #=====================================================================================================================# - # 获取初始密码参考命令 - cat /var/lib/jenkins/secrets/initialAdminPassword - #=====================================================================================================================# - ``` - - 填写初始密码,点击 **继续** 按钮 - - ![Jenkins初始化设置01](./Jenkins.assets/Jenkins初始化设置01.png) - -- 配置代理『【可选】请根据您的网络环境进行设置,如需离线使用可点击 **跳过插件安装** 暂时跳过此步骤 (有关离线安装请查阅 [Jenkins离线安装官方文档](https://www.jenkins.io/doc/book/installing/offline/))』 - - ![Jenkins初始化设置02](./Jenkins.assets/Jenkins初始化设置02.png) - -- 点击 配置代理 按钮进入下图界面配置代理,配置完成后点击 **保存并继续** 按钮 - - ![Jenkins初始化设置03](./Jenkins.assets/Jenkins初始化设置03.png) - -- 安装推荐的插件『【可选】如您的网络不可用,可跳过以下步骤。点击 **选择插件来安装** 根据提示,跳过安装』 - - ![Jenkins初始化设置04](./Jenkins.assets/Jenkins初始化设置04.png) - -- 配置管理员用户登录信息『请根据自己的实际需求填写信息,填写完成后请点击 **保存并完成** 按钮』 - - ![Jenkins初始化设置05](./Jenkins.assets/Jenkins初始化设置05.png) - -- Jenkins 实例配置『请根据自己的实际需求填写,此处使用默认设置.填写完成后请点击 **保存并完成** 按钮』 - - ![Jenkins初始化设置06](./Jenkins.assets/Jenkins初始化设置06.png) - -- Jenkins安装已完成『请点击 **开始使用Jenkins** 按钮』 - - ![Jenkins初始化设置07](./Jenkins.assets/Jenkins初始化设置07.png) - -### 5.Jenkins 基础插件安装『插件的离线安装方式请访问插件主页下载符合目标要求的插件安装包 (.hpi)』 - -> 有关 Jenkins 插件管理请阅读以下文章: [管理插件 (jenkins.io)](https://www.jenkins.io/doc/book/managing/plugins/) - -- #### 安装 [Blue Ocean](https://plugins.jenkins.io/blueocean/) 插件『可选 (以更直观的的方式查看 pipeline 状态)』 - - ![安装BlueOcean插件01](./Jenkins.assets/安装BlueOcean插件01.png)![安装BlueOcean插件02](./Jenkins.assets/安装BlueOcean插件02.png) - -- #### 安装 [Safe Restart](https://plugins.jenkins.io/saferestart/) 插件『可选 (安全重启 Jenkins)』 - - ![安装SafeRestart插件01](./Jenkins.assets/安装SafeRestart插件01.png)![安装SafeRestart插件02](./Jenkins.assets/安装SafeRestart插件02.png) - -## 将各个执行机添加至Jenkins集群 - -### 1.凭证设置 - - 添加凭据域 - - ![添加鲲鹏DevKitJenkinsCI插件凭据域01](./Jenkins.assets/添加鲲鹏DevKitJenkinsCI插件凭据域01.png) - 域名和描述按需输入,便于识别和管理即可 - ![添加鲲鹏DevKitJenkinsCI插件凭据域02](./Jenkins.assets/添加凭据域.PNG) - - 添加凭据到凭据域下 - - ![添加凭据到DevKit凭据域下](./Jenkins.assets/凭据02.PNG) - - 在 DevKit 凭据域下添加 aarch64 Jenkins 工作节点 SSH 凭据 - -```shell -#=====================================================================================================================# -# 在安装了 Jenkins 的环境上生成工作节点 SSH 免密登录证书『请根据实际需求设置 SSH key passphrases』 -ssh-keygen -b 4096 -C "<邮件地址或其他标签>" -f ~/.ssh/id_ed25519_<推荐按照 *_*_*_* 格式填写目标服务器IP,便于管理 KEY> -t ed25519 -#---------------------------------------------------------------------------------------------------------------------# -# 在安装了 Jenkins 的环境上将生成的证书的公钥上传至目标服务器『请根据提示输入目标服务器对应账户密码』 -ssh-copy-id -i ~/.ssh/id_ed25519_<推荐按照 *_*_*_* 格式填写目标服务器IP,便于管理 KEY>.pub root@<目标服务器IP> -#---------------------------------------------------------------------------------------------------------------------# -# 删除已知主机名文件中属于指定主机名的所有密钥 -ssh-keygen -R <目标服务器IP> -#---------------------------------------------------------------------------------------------------------------------# -# 使用 SSH key 测试连接目标主机『如果您设置了 SSH key passphrases,请在连接目标主机时根据提示输入证书密码』 -ssh -o IdentitiesOnly=yes -o PasswordAuthentication=no -i ~/.ssh/id_ed25519_<推荐按照 *_*_*_* 格式填写目标服务器IP,便于管理 KEY> -l root -p 22 <目标服务器IP> -#---------------------------------------------------------------------------------------------------------------------# -# 查看 SSH key 私钥 -cat ~/.ssh/id_ed25519_<推荐按照 *_*_*_* 格式填写目标服务器IP,便于管理 KEY> -#=====================================================================================================================# -``` - - ![在DevKit凭据域下添加aarch64Jenkins工作节点SSH凭据01](./Jenkins.assets/在DevKit凭据域下添加aarch64Jenkins工作节点SSH凭据01.png)![在DevKit凭据域下添加aarch64Jenkins工作节点SSH凭据02](./Jenkins.assets/在DevKit凭据域下添加aarch64Jenkins工作节点SSH凭据02.png) - -### 2. 工作节点设置 - - ![工作节点设置01](./Jenkins.assets/工作节点设置01.png)![工作节点设置02](./Jenkins.assets/工作节点设置02.png) - -| 配置项 | 配置说明 | -| ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------- | -| 名字 | 与节点名称保持一致 | -| 描述 | 按需填写,便于管理标识和即可,如aarch64node(ip)openeuler22.03 | -| Number of executors | 默认为1 | -| 远程工作目录 | /home/JenkinsWorkspace/ | -| 标签 | 流水线脚本中根据标签来选取执行机,可以打多个标签,用空格隔开,标签需要以kunpeng_为前缀,如kunpeng_scanner kunpeng_java_builder kunpeng_c_cpp_builder kunpeng_executor | -| 用法 | Only build jobs with label expressions matching this node | -| 启动方式 | Launch agents via SSH | -| 主机 | 节点IP | -| Credentials | 已添加的凭据 | -| Host Key Verification Strategy | Known hosts file Verification Strategy | -| 可用性 | Keep this agent online as much as possible | -| 节点属性(可选) | 若需要配置环境变量可选择Environment variables | - -![工作节点设置03](./Jenkins.assets/工作节点设置05.PNG)![工作节点设置04](./Jenkins.assets/工作节点设置04.png) - -### 3.FAQ - - ![Jenkins工作节点连接失败FAQ](./Jenkins.assets/Jenkins工作节点连接失败FAQ.png) - -> 当 Jenkins 工作节点连接不上时,且查看日志如上图所示时请考虑通过以下解决方案解决此问题。 -> -> 有关 Jenkins 工作节点连接错误的问题可参考以下文章中 poddingue 的解答:[https://community.jenkins.io/t/node-connection-error/6082](https://community.jenkins.io/t/node-connection-error/6082) - -- 临时断开节点 - - ![临时断开节点](./Jenkins.assets/临时断开节点.png) - -- 在安装 Jenkins 服务的设备上配置 /var/lib/jenkins/.ssh/known_hosts - - ```shell - #=====================================================================================================================# - # 创建目标 /var/lib/jenkins/.ssh 目录 - mkdir -p /var/lib/jenkins/.ssh - #---------------------------------------------------------------------------------------------------------------------# - # 新建 known_hosts 文件 - touch /var/lib/jenkins/.ssh/known_hosts - #---------------------------------------------------------------------------------------------------------------------# - # 修改 known_hosts 文件权限为 600 - chmod 600 /var/lib/jenkins/.ssh/known_hosts - #---------------------------------------------------------------------------------------------------------------------# - # 将远程主机的 SSH 主机密钥添加到 known_hosts 文件中 - ssh-keyscan <目标服务器IP> >> /var/lib/jenkins/.ssh/known_hosts - #---------------------------------------------------------------------------------------------------------------------# - # 修改文件夹下所有文件的所属用户及用户组为 jenkins - chown -R jenkins:jenkins /var/lib/jenkins/.ssh - #=====================================================================================================================# - ``` - -- 重新连接节点 - - ![image-20240104214716242](./Jenkins.assets/重新连接节点.png) - -- 节点连接成功后如下图所示 - - ![节点连接成功](./Jenkins.assets/节点连接成功.png) - -## 3. 修改CSP策略从而保证html功能正常 - -### 原因 - - jenkins中使用htmlpublisher来显示报告,由于默认的CSP策略限制,会导致html功能异常 - -### 1. 修改方式 - - 需要通过执行以下命令修改CSP策略 - System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","script-src 'self' 'unsafe-inline';style-src 'self' 'unsafe-inline';img-src 'self' data:;") - - 上面的值为cli报告能正常显示的最小集,如果其他功能也需要修改该配置,可以取相应值的并集,也可以设置值为空字符串(但可能会有安全风险,不推荐) - -### 2. 手动临时修改(重启jenkins后失效,需要再次手动执行命令) - - 进入系统管理 -> 脚本命令行 - ![](./Jenkins.assets/手动临时修改1.PNG) - ![](./Jenkins.assets/手动临时修改2.PNG) - 在输入框中添加命令后,点击运行即可(Result中的内容为修改前的值,可以再次点击运行查看是否修改成功) - ![](./Jenkins.assets/手动临时修改3.PNG) - 修改后查看cli报告即可(对修改前创建的报告同样有效,若仍然无效,可能等待1~2分钟后重试) - -### 3. 永久自动修改(启动时自动执行) - -1. 安装依赖 - 需要安装groovy、startup trigger插件 - 离线安装地址: - groovy: [Groovy|Jenkins plugin](https://plugins.jenkins.io/groovy/releases/) - startup-trigger: [Startup Trigger|Jenkins plugin](https://plugins.jenkins.io/startup-trigger-plugin/releases/) - ![](./Jenkins.assets/永久自动修改1.PNG) - - 2-1. 新建一个Job - ![](./Jenkins.assets/永久自动修改2.PNG) - - 2-2. 选择在jenkins启动后执行 - ![](./Jenkins.assets/永久自动修改3.PNG) - - 2-3. 构建步骤添加 Execute system Groovy script (注意不是Execute Groovy script),填写脚本并授权 - ![](./Jenkins.assets/永久自动修改4.PNG) - ![](./Jenkins.assets/永久自动修改5.PNG) - - 2-4. 点击保存即可,可以手动触发一次job,后续jenkins重启后会自动执行 \ No newline at end of file diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/FAQ_JENKINS_CONTENT_SECURITY_POLICY01.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/FAQ_JENKINS_CONTENT_SECURITY_POLICY01.png" deleted file mode 100644 index d070b7c2d1688a482cb82be996dd464276fe6f4b..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/FAQ_JENKINS_CONTENT_SECURITY_POLICY01.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/FAQ_JENKINS_CONTENT_SECURITY_POLICY02.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/FAQ_JENKINS_CONTENT_SECURITY_POLICY02.png" deleted file mode 100644 index cb12edec62c80f77fd869d0c325f04a6e5806275..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/FAQ_JENKINS_CONTENT_SECURITY_POLICY02.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/FAQ_JENKINS_GIT_SSL_VERIFY.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/FAQ_JENKINS_GIT_SSL_VERIFY.png" deleted file mode 100644 index df632e4a0a58174a46183a60564cd33c91df0e18..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/FAQ_JENKINS_GIT_SSL_VERIFY.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25601.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25601.png" deleted file mode 100644 index 62e72c3a4dd5ce91c9916d78ccb1bda2b8c5303e..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25601.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25602.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25602.png" deleted file mode 100644 index da3ea6394e1ba31a2aeee21119c62c075460c969..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25602.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25603.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25603.png" deleted file mode 100644 index d986836480dda79cd771114be361262bb420c0ca..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25603.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25605.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25605.png" deleted file mode 100644 index 155089f770f96a1d67b7ae08e01a4afb1325638d..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25605.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25606.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25606.png" deleted file mode 100644 index c6ca4ababb1b6db0629cf87caa51c664e9037ebe..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/Jenkins\345\210\235\345\247\213\345\214\226\350\256\276\347\275\25606.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/Jenkins\345\267\245\344\275\234\350\212\202\347\202\271\350\277\236\346\216\245\345\244\261\350\264\245FAQ.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/Jenkins\345\267\245\344\275\234\350\212\202\347\202\271\350\277\236\346\216\245\345\244\261\350\264\245FAQ.png" deleted file mode 100644 index 799b2640619f266a4ad115accf3263ace4d7f8a1..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/Jenkins\345\267\245\344\275\234\350\212\202\347\202\271\350\277\236\346\216\245\345\244\261\350\264\245FAQ.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\344\270\264\346\227\266\346\226\255\345\274\200\350\212\202\347\202\271.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\344\270\264\346\227\266\346\226\255\345\274\200\350\212\202\347\202\271.png" deleted file mode 100644 index f24df60561b21d356b25b276f68f24f35836842a..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\344\270\264\346\227\266\346\226\255\345\274\200\350\212\202\347\202\271.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\344\274\240\347\273\237\346\226\271\345\274\217\346\237\245\347\234\213\344\273\273\345\212\241\346\211\247\350\241\214\347\212\266\346\200\201.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\344\274\240\347\273\237\346\226\271\345\274\217\346\237\245\347\234\213\344\273\273\345\212\241\346\211\247\350\241\214\347\212\266\346\200\201.png" deleted file mode 100644 index 3ae381a4d4bf8705a4d02f202d811b1711de8479..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\344\274\240\347\273\237\346\226\271\345\274\217\346\237\245\347\234\213\344\273\273\345\212\241\346\211\247\350\241\214\347\212\266\346\200\201.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\344\274\240\347\273\237\346\226\271\345\274\217\346\237\245\351\230\205\346\212\245\345\221\212.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\344\274\240\347\273\237\346\226\271\345\274\217\346\237\245\351\230\205\346\212\245\345\221\212.png" deleted file mode 100644 index 06f61b0a19329bf47497b0a8882813c85a2e7e9b..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\344\274\240\347\273\237\346\226\271\345\274\217\346\237\245\351\230\205\346\212\245\345\221\212.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24101.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24101.png" deleted file mode 100644 index 68322ea0bd37c61eda6f4d24fad1a9588878188a..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24101.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24102.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24102.png" deleted file mode 100644 index d59c9c50f5eebef0ac575e98cbcffa152c3c1a9f..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24102.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24103.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24103.png" deleted file mode 100644 index ff9bf5aa0a936e30d9e42e39d69624eb0850a4e4..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24103.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\234\250\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26601.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\234\250\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26601.png" deleted file mode 100644 index 9eaf381dfc1a79fbe18213e0879aadf34e4c2cf9..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\234\250\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26601.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\234\250\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26602.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\234\250\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26602.png" deleted file mode 100644 index d719cdd10c6e709652f6dc0e869d1335a6212a99..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\234\250\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26602.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\256\211\350\243\205SafeRestart\346\217\222\344\273\26602.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\256\211\350\243\205SafeRestart\346\217\222\344\273\26602.png" deleted file mode 100644 index eb504b03b56b236de7e62a8a1e0aee3f80bb21e5..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\256\211\350\243\205SafeRestart\346\217\222\344\273\26602.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25601.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25601.png" deleted file mode 100644 index bbc24f2efcd45cbee0bcef2124c23a8dd16404f9..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25601.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25603.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25603.png" deleted file mode 100644 index 84a394ff5117e125c773a83d740af01b3e001d4d..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25603.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25604.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25604.png" deleted file mode 100644 index 5ef966fd59135a467add953c41d834add71b6104..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\345\267\245\344\275\234\350\212\202\347\202\271\350\256\276\347\275\25604.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\346\211\247\350\241\214\344\273\273\345\212\241.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\346\211\247\350\241\214\344\273\273\345\212\241.png" deleted file mode 100644 index 52c148022f93ce4b5fbdeb0eddf156dc337b0f62..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\346\211\247\350\241\214\344\273\273\345\212\241.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\346\236\204\345\273\272\344\272\262\345\222\214\345\210\206\346\236\220\346\212\245\345\221\212.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\346\236\204\345\273\272\344\272\262\345\222\214\345\210\206\346\236\220\346\212\245\345\221\212.png" deleted file mode 100644 index 525264cbef8d524e74d5bbd81802301a46e5a7a8..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\346\236\204\345\273\272\344\272\262\345\222\214\345\210\206\346\236\220\346\212\245\345\221\212.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\346\267\273\345\212\240\345\207\255\346\215\256\345\210\260DevKit\345\207\255\346\215\256\345\237\237\344\270\213.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\346\267\273\345\212\240\345\207\255\346\215\256\345\210\260DevKit\345\207\255\346\215\256\345\237\237\344\270\213.png" deleted file mode 100644 index 8e3608d56dcb56e1cd2bff3a32a2827baa503543..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\346\267\273\345\212\240\345\207\255\346\215\256\345\210\260DevKit\345\207\255\346\215\256\345\237\237\344\270\213.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\346\267\273\345\212\240\351\262\262\351\271\217DevKitJenkinsCI\346\217\222\344\273\266\345\207\255\346\215\256\345\237\23701.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\346\267\273\345\212\240\351\262\262\351\271\217DevKitJenkinsCI\346\217\222\344\273\266\345\207\255\346\215\256\345\237\23701.png" deleted file mode 100644 index 7c920b8ce5faf6cf9d1a2fc581c062ccad734114..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\346\267\273\345\212\240\351\262\262\351\271\217DevKitJenkinsCI\346\217\222\344\273\266\345\207\255\346\215\256\345\237\23701.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\346\267\273\345\212\240\351\262\262\351\271\217DevKitJenkinsCI\346\217\222\344\273\266\345\207\255\346\215\256\345\237\23702.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\346\267\273\345\212\240\351\262\262\351\271\217DevKitJenkinsCI\346\217\222\344\273\266\345\207\255\346\215\256\345\237\23702.png" deleted file mode 100644 index 41201afca2b6e5df9c28fc24d488160e9a26f11f..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\346\267\273\345\212\240\351\262\262\351\271\217DevKitJenkinsCI\346\217\222\344\273\266\345\207\255\346\215\256\345\237\23702.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\346\272\220\347\240\201\350\277\201\347\247\273\346\212\245\345\221\212.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\346\272\220\347\240\201\350\277\201\347\247\273\346\212\245\345\221\212.png" deleted file mode 100644 index 8d6f3f3b645c497a8423af69d1602df8ba4ad5f1..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\346\272\220\347\240\201\350\277\201\347\247\273\346\212\245\345\221\212.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\347\216\260\344\273\243\346\226\271\345\274\217\346\237\245\347\234\213\344\273\273\345\212\241\346\211\247\350\241\214\347\212\266\346\200\201.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\347\216\260\344\273\243\346\226\271\345\274\217\346\237\245\347\234\213\344\273\273\345\212\241\346\211\247\350\241\214\347\212\266\346\200\201.png" deleted file mode 100644 index 4346f2af34ec59550ba2905e111135f536e09bed..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\347\216\260\344\273\243\346\226\271\345\274\217\346\237\245\347\234\213\344\273\273\345\212\241\346\211\247\350\241\214\347\212\266\346\200\201.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\347\216\260\344\273\243\346\226\271\345\274\217\346\237\245\351\230\205\346\212\245\345\221\212.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\347\216\260\344\273\243\346\226\271\345\274\217\346\237\245\351\230\205\346\212\245\345\221\212.png" deleted file mode 100644 index 918d460c1195f7f6e13a8ed1ac2b6af887707b4f..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\347\216\260\344\273\243\346\226\271\345\274\217\346\237\245\351\230\205\346\212\245\345\221\212.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\347\246\273\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26601.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\347\246\273\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26601.png" deleted file mode 100644 index 4966e7f173d8c895385c9fc1d4dcd5c3ed09c03a..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\347\246\273\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26601.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\347\246\273\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26602.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\347\246\273\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26602.png" deleted file mode 100644 index c8c5e21dd6e61950033c44944c58faaa8ab34085..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\347\246\273\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26602.png" and /dev/null differ diff --git "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\347\246\273\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26603.png" "b/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\347\246\273\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26603.png" deleted file mode 100644 index 29324a46ebd8d9d00061d333020e0c732b904c5a..0000000000000000000000000000000000000000 Binary files "a/document/Jenkins\345\256\211\350\243\205\351\203\250\347\275\262/\351\262\262\351\271\217DevKitCLI\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.assets/\347\246\273\347\272\277\345\256\211\350\243\205HTMLPublisher\346\217\222\344\273\26603.png" and /dev/null differ diff --git "a/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/clamav\345\256\211\350\243\205\351\203\250\347\275\262\346\214\207\345\257\274\350\265\204\346\226\231.md" "b/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/clamav\345\256\211\350\243\205\351\203\250\347\275\262\346\214\207\345\257\274\350\265\204\346\226\231.md" deleted file mode 100644 index 18fec48eb76f8b4d0e27b0fc9cd4713c0dfb9349..0000000000000000000000000000000000000000 --- "a/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/clamav\345\256\211\350\243\205\351\203\250\347\275\262\346\214\207\345\257\274\350\265\204\346\226\231.md" +++ /dev/null @@ -1,118 +0,0 @@ -# 基于openEuler官方yum源安装部署使用clamav工具指导 - -[TOC] - - - -## 安装clamav病毒扫描工具 - -通过yum源安装clamav工具 - -```shell -yum install -y clamav -``` - -该命令会安装clamav, clamav-data, clamav-filesystem三个组件 - -## 手动更新方案 - -1. 通过能连接公网的环境使用下述连接下载daily.cvd文件 - -```shell -https://database.clamav.net/daily.cvd -https://database.clamav.net/main.cvd -https://database.clamav.net/bytecode.cvd -``` - - -2. 将daily.cvd文件复制到/var/lib/clamav目录下 - - -## 自动更新(需要能访问公网) -通过yum源安装clamav-update组件 - -```shell -yum install -y clamav-update -``` - -该组件设定好了定时任务,每隔8小时自动下载最新病毒库 -安装该组件后也可通过执行命令更新病毒库 - -```shell -freshclam -``` - -![](./image/更新病毒库.png) - -命令参数说明 - -| 是否常用 | 参数 | 释义 | -| -------- | ----------------------------- | ------------------------------------------------------------ | -| 是 | clamscan --helpe | 查看帮助 | -| 是 | -log=FILE | 将扫播报告保存到FILE | -| 是 | -r | 递归扫描,即扫描指定目录下的子目录 | -| 是 | -copy=DIRECTORY | 将受感染的文件复制到DIRECTORY中 | -| 是 | -i | 仅仅打印被感染的文件 | -| 是 | -quiet | 仅输出错误消息 | -| | -official-db-only[=yes/no(*)] | 只加载官方签名 | -| | -max-filesize In | 将跳过大于此的文件并假定为于净 | -| | -max-scansize I/n | 要扫描每个容器文件的最人数据量 | -| | -leave-temps[=yes/no(*)] | 不要删除临时文件 | -| | -file-list-FILE | 从文件中扫描文件 | -| | -bell | 病毒检测的响铃 | -| | -cross-fs[=yes(*/no]s | 扫描其他文件系统上的文件和目录 | -| | bytecode-timeout=N | 设置字节码超时(以毫秒为单位) | -| | -heuristic-alerts[=yes(*}/no] | 切换启发式警报 | -| | -alert-encrypted[=yes/no(*)] | 警告加密档案和文件 | -| | -nocertse | 在PE文件中禁用authenticode证书链验证 | -| | -disable-cachee | 禁用继存和缓存检查扫描文件的哈希值 | -| | -d<文件> | 以指定的文件作为病毒库,一代替默认的/var/clamav目录下的病毒库文件 | -| | -l<文件> | 指定日志文件,以代替默认的/var/og/damav/freshclam.log文件 | -| | -move=<目录> | 把感染病审的文件移动到指定目录 | -| | -removes | 删除感染病毒的文件 | - - - -## 更新病毒库前后结果对比 - -扫描命令示例 -```shell -clamscan -i -r /var/log/ -l clamav.log -``` -![](./image/病毒扫描结果.png) - -## Gitlab集成clamAV: -1.新建项目 -![](./image/编辑1.png) -2.根据实际场景创建新项目 -![](./image/编辑2.png) -3.任务创建完成后点击流水线编辑器 -![](./image/编辑3.png) -4.出现此页面后点击配置流水线 -![](./image/编辑4.png) -5.代码写入.gitlab-ci.yml文件后,点击提交更改运行流水线 -![](./image/编辑5.png) -6.日志可在流水完成后,点击流水线下载查看病毒扫描日志 -![](./image/编辑6.png) - -示例代码如下,在流水线上配置递归扫描本代码仓,路径设置为./即可,并输出扫描日志到当前运行目录的clamscan.log中 - -```groovy -stages: - - build - - clamAV - -clamscan: - stage: clamAV - tags: - - kunpeng_c_cpp_builder - script: - - echo '====== 更新病毒库 ======' - - freshclam - - echo '====== 病毒扫描 ======' - - clamscan -i -r ./ -l ./clamscan.log - artifacts: - paths: - - clamscan.log - name: clamscan -``` diff --git "a/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/gitlab\346\227\245\345\277\227.png" "b/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/gitlab\346\227\245\345\277\227.png" deleted file mode 100644 index 083b3a79420a36a507d203a5fe955d737737dd81..0000000000000000000000000000000000000000 Binary files "a/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/gitlab\346\227\245\345\277\227.png" and /dev/null differ diff --git "a/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\346\233\264\346\226\260\347\227\205\346\257\222\345\272\223.png" "b/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\346\233\264\346\226\260\347\227\205\346\257\222\345\272\223.png" deleted file mode 100644 index 50dd1c22397be603956088e128dafb348fe095b5..0000000000000000000000000000000000000000 Binary files "a/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\346\233\264\346\226\260\347\227\205\346\257\222\345\272\223.png" and /dev/null differ diff --git "a/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\227\205\346\257\222\346\211\253\346\217\217\347\273\223\346\236\234.png" "b/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\227\205\346\257\222\346\211\253\346\217\217\347\273\223\346\236\234.png" deleted file mode 100644 index 2dabe07b0b29d1962167092f5815cc4e0ccfeeee..0000000000000000000000000000000000000000 Binary files "a/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\227\205\346\257\222\346\211\253\346\217\217\347\273\223\346\236\234.png" and /dev/null differ diff --git "a/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\274\226\350\276\2211.png" "b/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\274\226\350\276\2211.png" deleted file mode 100644 index 50dc0dbeb9bb31b6bc5946322860d49fd8bd37e5..0000000000000000000000000000000000000000 Binary files "a/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\274\226\350\276\2211.png" and /dev/null differ diff --git "a/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\274\226\350\276\2212.png" "b/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\274\226\350\276\2212.png" deleted file mode 100644 index b8f61f30cfe360e9bbf632ef6fc4346a7ad90ff7..0000000000000000000000000000000000000000 Binary files "a/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\274\226\350\276\2212.png" and /dev/null differ diff --git "a/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\274\226\350\276\2213.png" "b/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\274\226\350\276\2213.png" deleted file mode 100644 index 42773d895ff85223987bbb0f88cd6bd9e49c6868..0000000000000000000000000000000000000000 Binary files "a/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\274\226\350\276\2213.png" and /dev/null differ diff --git "a/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\274\226\350\276\2214.png" "b/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\274\226\350\276\2214.png" deleted file mode 100644 index 9ad476357ecaaa295952c99cd689d3ec031f83a5..0000000000000000000000000000000000000000 Binary files "a/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\274\226\350\276\2214.png" and /dev/null differ diff --git "a/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\274\226\350\276\2215.png" "b/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\274\226\350\276\2215.png" deleted file mode 100644 index 0311e99b47c1515ca6519cdd1a8267af25385dfc..0000000000000000000000000000000000000000 Binary files "a/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\274\226\350\276\2215.png" and /dev/null differ diff --git "a/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\274\226\350\276\2216.png" "b/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\274\226\350\276\2216.png" deleted file mode 100644 index a7206750a101ae578e2cc0aaba66fd8b5dae1ffe..0000000000000000000000000000000000000000 Binary files "a/document/gitlab clamAV\345\256\211\350\243\205\346\233\264\346\226\260\346\214\207\345\257\274/image/\347\274\226\350\276\2216.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/01_\345\210\233\345\273\272\346\265\201\346\260\264\347\272\277.png" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/01_\345\210\233\345\273\272\346\265\201\346\260\264\347\272\277.png" deleted file mode 100644 index 8923f1e96889a38511e2777dec89c3b37fd8d7bf..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/01_\345\210\233\345\273\272\346\265\201\346\260\264\347\272\277.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/02_\347\274\226\345\206\231\346\265\201\346\260\264\347\272\277.png" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/02_\347\274\226\345\206\231\346\265\201\346\260\264\347\272\277.png" deleted file mode 100644 index 5283893a6303f47429376812b7f776837166e8cb..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/02_\347\274\226\345\206\231\346\265\201\346\260\264\347\272\277.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/03_\346\237\245\347\234\213\346\265\201\346\260\264\347\272\277.png" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/03_\346\237\245\347\234\213\346\265\201\346\260\264\347\272\277.png" deleted file mode 100644 index 06e9c8fcb1fed68069b92ba1c263578278eeb23e..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/03_\346\237\245\347\234\213\346\265\201\346\260\264\347\272\277.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/04_\346\265\201\346\260\264\347\272\277\345\244\261\350\264\245\347\212\266\346\200\201.png" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/04_\346\265\201\346\260\264\347\272\277\345\244\261\350\264\245\347\212\266\346\200\201.png" deleted file mode 100644 index cd3a5557ce4a764e6c49a60a5034b518e0418b80..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/04_\346\265\201\346\260\264\347\272\277\345\244\261\350\264\245\347\212\266\346\200\201.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/05_\346\265\201\346\260\264\347\272\277\345\244\261\350\264\245\345\216\237\345\233\240.png" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/05_\346\265\201\346\260\264\347\272\277\345\244\261\350\264\245\345\216\237\345\233\240.png" deleted file mode 100644 index b1c2708f0582c91b4d158c34b318e7d5e737e2d2..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/05_\346\265\201\346\260\264\347\272\277\345\244\261\350\264\245\345\216\237\345\233\240.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/06_\346\265\201\346\260\264\347\272\277\346\211\247\350\241\214\346\210\220\345\212\237.png" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/06_\346\265\201\346\260\264\347\272\277\346\211\247\350\241\214\346\210\220\345\212\237.png" deleted file mode 100644 index 93010496ea8f989c7f14ffe2b28bdaab412c4bca..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/06_\346\265\201\346\260\264\347\272\277\346\211\247\350\241\214\346\210\220\345\212\237.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/07_\344\270\213\350\275\275\347\232\204\346\234\200\347\273\210\346\212\245\345\221\212.png" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/07_\344\270\213\350\275\275\347\232\204\346\234\200\347\273\210\346\212\245\345\221\212.png" deleted file mode 100644 index 33b4a854663f1e1f35fd844029782203ca661ad4..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/07_\344\270\213\350\275\275\347\232\204\346\234\200\347\273\210\346\212\245\345\221\212.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/08_\346\265\201\346\260\264\347\272\277\346\211\247\350\241\214.png" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/08_\346\265\201\346\260\264\347\272\277\346\211\247\350\241\214.png" deleted file mode 100644 index 8ab7718bd1a1c50dc737c41e4f2a046bf89ad994..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/08_\346\265\201\346\260\264\347\272\277\346\211\247\350\241\214.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/09_\346\265\201\346\260\264\347\272\277\346\211\247\350\241\214.png" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/09_\346\265\201\346\260\264\347\272\277\346\211\247\350\241\214.png" deleted file mode 100644 index b2eca9f6ffd8dff1c485cde6656cd3ff10cc0641..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/09_\346\265\201\346\260\264\347\272\277\346\211\247\350\241\214.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/Devkit_Distribute\347\246\273\347\272\277\345\256\211\350\243\205\346\210\220\345\212\237.png" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/Devkit_Distribute\347\246\273\347\272\277\345\256\211\350\243\205\346\210\220\345\212\237.png" deleted file mode 100644 index 584726e033825b4c3b4cc1643fb60d93ae808c72..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/Devkit_Distribute\347\246\273\347\272\277\345\256\211\350\243\205\346\210\220\345\212\237.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\344\270\213\350\275\275Devkit_Distribute.png" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\344\270\213\350\275\275Devkit_Distribute.png" deleted file mode 100644 index 989ba8ef52a110d892bb1fe3ef57871c5057bda4..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\344\270\213\350\275\275Devkit_Distribute.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\205\267\344\275\223\346\212\245\345\221\212.png" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\205\267\344\275\223\346\212\245\345\221\212.png" deleted file mode 100644 index 2048098fcda499b01099a2c2cd8cbd1ed1249184..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\205\267\344\275\223\346\212\245\345\221\212.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24101.png" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24101.png" deleted file mode 100644 index 68322ea0bd37c61eda6f4d24fad1a9588878188a..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24101.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24102.png" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24102.png" deleted file mode 100644 index d59c9c50f5eebef0ac575e98cbcffa152c3c1a9f..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24102.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24103.png" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24103.png" deleted file mode 100644 index d6bb3872707f7cfbd847cdcd4fcaee463f4e310b..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24103.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\256\211\350\243\205\345\270\246\346\234\211jcmd\345\221\275\344\273\244\347\232\204JDK.png" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\256\211\350\243\205\345\270\246\346\234\211jcmd\345\221\275\344\273\244\347\232\204JDK.png" deleted file mode 100644 index 8fad4e0aca1d65b6f19ba6b6df52d1a3eba51403..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\256\211\350\243\205\345\270\246\346\234\211jcmd\345\221\275\344\273\244\347\232\204JDK.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\256\211\350\243\205\346\210\220\345\212\237.png" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\256\211\350\243\205\346\210\220\345\212\237.png" deleted file mode 100644 index 9b8b178d0f0f9ecb18130983adfa7de1715c6b1e..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\345\256\211\350\243\205\346\210\220\345\212\237.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\346\211\247\350\241\214\346\265\201\346\260\264.png" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\346\211\247\350\241\214\346\265\201\346\260\264.png" deleted file mode 100644 index 73843d5136114e4b7d957a94116547b9e1c22652..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\346\211\247\350\241\214\346\265\201\346\260\264.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\346\211\247\350\241\214\347\273\223\346\235\237\346\211\223\345\274\200\346\212\245\345\221\212.png" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\346\211\247\350\241\214\347\273\223\346\235\237\346\211\223\345\274\200\346\212\245\345\221\212.png" deleted file mode 100644 index b59b75dcbabf0c8b454d13162529b44f3c358ca7..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\346\211\247\350\241\214\347\273\223\346\235\237\346\211\223\345\274\200\346\212\245\345\221\212.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\346\243\200\346\237\245jcmd\345\221\275\344\273\244\345\255\230\345\234\250.png" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\346\243\200\346\237\245jcmd\345\221\275\344\273\244\345\255\230\345\234\250.png" deleted file mode 100644 index cc2d363a9dc20f095ee23c26b1056dc8906dd1fe..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/DevkitPerformanceAnalysis.assets/\346\243\200\346\237\245jcmd\345\221\275\344\273\244\345\255\230\345\234\250.png" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/Gitlab\346\265\201\346\260\264\347\272\277\351\205\215\347\275\256Java\346\200\247\350\203\275\345\210\206\346\236\220.md" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/Gitlab\346\265\201\346\260\264\347\272\277\351\205\215\347\275\256Java\346\200\247\350\203\275\345\210\206\346\236\220.md" deleted file mode 100644 index bdfac1a1c306e289fffae6e0431d8927b812a417..0000000000000000000000000000000000000000 --- "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/Gitlab\346\265\201\346\260\264\347\272\277\351\205\215\347\275\256Java\346\200\247\350\203\275\345\210\206\346\236\220.md" +++ /dev/null @@ -1,121 +0,0 @@ -## gitlab中集成Java性能分析 - -### 一. Java性能分析 - -``` -stages: - - build - - test - - deploy - -source-code-migration: - stage: build - tags: - - kunpeng_builder # 对应gitlab-runner注册时的标签,可选择多个 - script: - - echo '====== Java Performance Analysis ======' - - CURDIR=$(pwd) - # 删除上次jmeter产生的报告 (jmeter 命令-l、-o指定的文件和路径) - - rm -rf /home/zpp/report /home/zpp/result.html - # 运行java性能采集 - - /home/zpp/.local//devkit_distribute/bin/entrance -i 160.0.1.2,160.0.1.3 -u root -f /home/zpp/.ssh/id_rsa -D 160.0.1.5 -a spring-boot -d 10 -g /home/zpp/spring-boot -j "sh /home/zpp/apache-jmeter-5.6.3/bin/jmeter.sh -nt /home/zpp/Test_request.jmx -l /home/zpp/result.html -eo /home/zpp/report" - - cp /home/zpp/.local/devkit_distribute/data/devkit_distribute-defaults.yaml ${CURDIR} - artifacts: - paths: - # 上传报告 - - devkit_distribute-defaults.yaml # 文件后缀.html - name: Java_Performance_Report - -``` - -**entrance**具体参数如下 - -| 参数 | 参数类型 | 参数说明 | -|----|-----------|----------------------------------------------------------------------------------------------------------------------------------------| -| -i | ipv4,ipv4 | 必选参数。需要采集的目标程序所在的服务器地址, 多个使用逗号隔离 | -| -u | str | 必选参数。服务器的用户名 | -| -f | str | 必选参数。执行机免密登陆所有服务器(-i指定的)的私钥路径 | -| -a | str | 必选参数。需要采集的应用名称,多个采用逗号隔离 | -| -g | str | 可选参数。执行机上通过git clone下载的代码路径 | -| -j | str | 可选参数。jmeter执行命令。例如 bash /opt/apache-jmeter-5.6.3/bin/jmeter.sh -nt /home/xxx/Request.jmx -l /home/xxx/result.html -eo /home/xxx/report | -| -d | num | 必选参数。任务采集执行时间,单位秒,当存在-j参数时,jmeter结束或者到达采集执行时间,结束采集。 | -| -D | ipv4 | 必选参数。Devkit工具的地址。 | -| -P | num | 可选参数。Devkit工具的端口,默认值8086。 | -| -U | str | 可选参数。Devkit工具的用户名,默认值devadmin。 | -| -W | str | 可选参数。Devkit工具的密码,默认值devkit123。 | - -### 二. 配置示例 - -#### 1. 安装java分发采集命令行工具到执行jenkins执行机 - -##### 1.1 使用deploy_tool命令安装角色executor - -[通过deploy_tool部署工具部署executor](../批量部署工具/批量部署工具和一键下载工具说明文档.md) - -安装完成后查看 - -![安装成功](./DevkitPerformanceAnalysis.assets/安装成功.png) - -##### 1.2 离线安装 - -###### 1.2.1 下载离线包 - -发行版中下载**最新**的devkit_distribute.tar.gz -![下载Devkit_Distribute](DevkitPerformanceAnalysis.assets/下载Devkit_Distribute.png) - -###### 1.2.2 执行以下命令: - -```shell - mkdir -p "${HOME}"/.local - tar --no-same-owner -zxf devkit_distribute.tar.gz -C "${HOME}"/.local/ -``` - -###### 1.2.3 安装成功: - -![Devkit_Distribute离线安装成功.png](DevkitPerformanceAnalysis.assets/Devkit_Distribute离线安装成功.png) - -#### 2. 确定需要采集的java程序所在机器存在jcmd命令 - -##### 2.1 检查jcmd命令是否存在 - -![确定是否存在jcmd命令](./DevkitPerformanceAnalysis.assets/检查jcmd命令存在.png) - -##### 2.2 安装jcmd命令 - -![安装带有jcmd命令的JDK](./DevkitPerformanceAnalysis.assets/安装带有jcmd命令的JDK.png) - -#### 3. 配置流水线 - -![创建Pipeline任务01](./DevkitPerformanceAnalysis.assets/01_创建流水线.png) -![创建Pipeline任务02](./DevkitPerformanceAnalysis.assets/02_编写流水线.png) - ----- - -#### 4. 执行任务 - -![执行任务](./DevkitPerformanceAnalysis.assets/08_流水线执行.png) - -![执行任务](./DevkitPerformanceAnalysis.assets/09_流水线执行.png) - ----- - -#### 5. 查看流水线执行状态和报告 - -##### 5.1查看流水线结果 - -![执行结束打开报告](./DevkitPerformanceAnalysis.assets/03_查看流水线.png) - -##### 5.2 流水线失败 - -![执行结束打开报告](./DevkitPerformanceAnalysis.assets/04_流水线失败状态.png) - -![执行结束打开报告](./DevkitPerformanceAnalysis.assets/05_流水线失败原因.png) - -##### 5.3 流水线成功 - -![具体报告](./DevkitPerformanceAnalysis.assets/06_流水线执行成功.png) - -##### 5.4 下载的报告 - -![具体报告](./DevkitPerformanceAnalysis.assets/07_下载的最终报告.png) - \ No newline at end of file diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/Gitlab\346\265\201\346\260\264\347\272\277\351\205\215\347\275\256\350\277\201\347\247\273\343\200\201\344\272\262\345\222\214\351\227\250\347\246\201.md" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/Gitlab\346\265\201\346\260\264\347\272\277\351\205\215\347\275\256\350\277\201\347\247\273\343\200\201\344\272\262\345\222\214\351\227\250\347\246\201.md" deleted file mode 100644 index 3ec76583d72a8edbf2adc6ae1c1ec8d71fc798bb..0000000000000000000000000000000000000000 --- "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/Gitlab\346\265\201\346\260\264\347\272\277\351\205\215\347\275\256\350\277\201\347\247\273\343\200\201\344\272\262\345\222\214\351\227\250\347\246\201.md" +++ /dev/null @@ -1,242 +0,0 @@ -
《gitlab流水线迁移、亲和命令行配置》
-1.新建项目 -![](./gitlab/编辑1.PNG) -2.根据实际场景创建新项目 -![](./gitlab/编辑2.PNG) -3.任务创建完成后点击流水线编辑器 -![](./gitlab/编辑3.PNG) -4.出现此页面后点击配置流水线 -![](./gitlab/编辑4.PNG) -5.代码写入.gitlab-ci.yml文件后,点击提交更改运行流水线 -![](./gitlab/编辑7.PNG) -6.点击流水线,如下图所示,可以下载报告至本地,查看迁移扫描工具和亲和扫描工具的报告 -![](./gitlab/编辑8.PNG) - -##### 命令行状态码含义 -| 状态码 | 触发情况 | -| ------------ | ------------ | -| 0 | 无扫描建议 | -| 1 | 扫描结果只存在建议项 | -| 2 | 扫描任务出现Ctrl+C(SIGINT(2)) | -| 3 | 扫描结果超时 | -| 4 | 扫描命令错误 | -| 5 | 扫描结果存在必须修改项 | -| 15/20 | 扫描任务出现Ctrl+Z SIGTERM(15)/SIGTSTP(20) | - - **注:命令行中 -i ./ 时为扫描本仓库代码** -##### 软件迁移评估: - -``` -stages: - - build - - migrating-applications - -software-migration-assessment: - stage: migrating-applications - tags: - - kunpeng_c_cpp_builder # 对应gitlab-runner注册时的标签,可选择多个 - script: - - echo '====== 软件迁移评估 ======' - - devkit porting pkg-mig -i 待扫描软件包 -r html || [ $? -eq 1 ] && echo 'Warning:扫描报告包含建议项' - - # 示例 devkit porting pkg-mig -i impala-2.9.0+cdh5.12.1+0-1.cdh5.12.1.p0.3.el7.x86_64.rpm -r html || [ $? -eq 1 ] && echo 'Warning:扫描报告包含建议项' - - mv ./pkg-mig*.html ./SoftwareMigrationAssessment.html - - artifacts: - paths: - - SoftwareMigrationAssessment.html - name: pkg-mig - - -``` -具体参数如下 - -| 参数 | 参数选项 | 参数说明 | -| ------------ | ------------ | ------------ | -| -i/--input | package_path | 必选参数。待扫描的软件包路径,若存在多个扫描路径需使用英文逗号分割。例如:/home/test1.jar, /home/test2.jar。 | -| -t/--target-os | target-os | 可选参数。待扫描的目标操作系统。| -| -o/--output | output_path | 可选参数。报告存放路径。报告默认存放在当前执行路径下,名称默认为“特性名称_时间戳”。 | -| --set-timeout | time | 可选参数。任务超时时间。默认无超时时间,任务将持续执行直到结束。 | -| -l/--log-level | 0,1,2,3 | 可选参数。任务日志级别。0(DEBUG)、1(INFO)、2(WARNING)、3(ERROR),默认为1(INFO)。 | -| -r/--report-type | all,json,html,csv | 可选参数。扫描报告的格式。默认为all,即默认生成json、html、csv三种报告 | - -##### 源码迁移: - -``` -stages: - - build - - migrating-applications - -source-code-migration: - stage: migrating-applications - tags: - - kunpeng_c_cpp_builder # 对应gitlab-runner注册时的标签,可选择多个 - script: - - echo '====== 源码迁移 ======' - - devkit porting src-mig -i 待扫描源码的文件夹或压缩包路径 -c 源码的构建命令 -r html || [ $? -eq 1 ] && echo 'Warning:扫描报告包含建议项' - - # 示例 devkit porting src-mig -i wtdbg2-2.5 -c make -r html || [ $? -eq 1 ] && echo 'Warning:扫描报告包含建议项' - - mv ./src-mig*.html ./SourceCodeScanningReport.html - - artifacts: - paths: - - SourceCodeScanningReport.html - name: src-mig - -``` -具体参数如下 -| 参数 | 参数选项 | 参数说明 | -| ------------ | ------------ | ------------ | -| -i/--input-path | path | 必选参数。待扫描源码的文件夹或压缩包路径,若存在多个扫描路径需使用英文逗号分割。例如:/home/test1,/home/test2。 | -| -c/--cmd | cmd | 可选参数。源码的构建命令。例如:make all。 | -| -s/--source-type | c,c++,asm,fortran,go, interpreted | 可选参数。待扫描源码类型。 | -| -t/--target-os | target-os | 可选参数。迁移的目标操作系统。如果用户不输入则默认为当前操作系统。例如:bclinux7.7。 | -| -p/--compiler | gcc,clang | 可选参数。编译器版本。默认为选定目标操作系统的默认GCC版本。例如:gcc7.8.5 | -| -f/--fortran-compiler | flang-ver | 可选参数。fortran代码的编译器版本。默认为flang2.5.0.1。 | -| -b/--build-tool | make,cmake,automake,go | 可选参数。构建工具。默认make,只有在--source-type中没有c/c++/asm/fortran并且包含go时可以选go。 | -| -o/--output | /home/test/report | 可选参数。扫描报告的存放地址和文件名称。默认存放在当前执行路径下,名称默认为功能名_时间戳_uuid(4位)。 | -| --set-timeout | time | 可选参数。命令行的超时时间。默认无超时时间。 | -| -l/--log-level | 0,1,2,3 | 可选参数。设置日志级别。0(DEBUG)、1(INFO)、2(WARNING)、3(ERROR),默认为1(INFO)。 | -| -r/--report-type | all,json,html,csv | 可选参数。 扫描报告的格式。默认为all,选择all的时候json、csv和html报告都会生成。 | -| --ignore | /opt/ignore.json | 可选参数。屏蔽扫描规则信息。 | -##### 64位运行模式检查: -``` -stages: - - build - - affinity-analysis - -64-bit-running-mode-check: - stage: affinity-analysis - tags: - - kunpeng_c_cpp_builder # 对应gitlab-runner注册时的标签,可选择多个 - script: - - echo '====== 64位运行模式检查 ======' - - devkit advisor mode-check -i 待扫描的软件包路径 -r html - - # 示例 devkit advisor mode-check -i /opt/DevKit/testcase/affinity/precheck/test005 -r html - - mv ./mode_check*.html ./64-bit-running-mode-check.html - - artifacts: - paths: - - 64-bit-running-mode-check.html - name: mode-check - - -``` -具体参数如下 -| 参数 | 参数选项 | 参数说明 | -| ------------ | ------------ | ------------ | -| -i/--input | package_path | 必选参数。待扫描的源码文件夹路径,若存在多个扫描路径需使用英文逗号分割。例如:/home/test1, /home/test2。 | -| -o/--output | output_path | 可选参数。报告存放路径。报告默认存放在当前执行路径下,名称默认为“特性名称_时间戳”。 | -| --set-timeout | time | 可选参数。任务超时时间。默认无超时时间,任务将持续执行直到结束。 | -| -l/--log-level | 0,1,2,3 | 可选参数。日志等级,0(DEBUG)、1(INFO)、2(WARNING)、3(ERROR),默认为1(INFO)。 | -| -r/--report-type | all,json,html,csv | 可选参数。扫描报告的格式。默认为all,即默认生成json、html、csv三种报告。 | - -##### 字节对齐检查: -``` -stages: - - build - - affinity-analysis - -byte-alignment-check: - stage: affinity-analysis - tags: - - kunpeng_c_cpp_builder # 对应gitlab-runner注册时的标签,可选择多个 - script: - - echo '====== 字节对齐检查 ======' - - devkit advisor byte-align -i 待扫描的软件包路径 -c 源码构建命令 -b 构建工具 -r html - - # 示例 devkit advisor byte-align -i /opt/DevKit/wtdbg2-2.5 -c make -b make -r html - - mv ./byte-align*.html ./byte-alignment-check.html - - artifacts: - paths: - - byte-alignment-check.html - name: byte-align - -``` -具体参数如下 -| 参数 | 参数选项 | 参数说明 | -| ------------ | ------------ | ------------ | -| -i/--input | package_path | 必选参数。待扫描的源码文件夹路径,若存在多个扫描路径需使用英文逗号分割。。例如:/home/test1, /home/test2。 | -| -c/--cmd | cmd | 必选参数。源码构建命令。在服务器中正常执行的构建命令,命令中如有空格,要使用单引号包住。 | -| -b/--build-tool | make,cmake,automake | 必选参数。构建工具。当前工具支持make,cmake,automake,默认选项为make。 如-c make -b make 、-c cmake -b cmake 、-c make -b automake | -| -o/--output | output_path | 可选参数。报告存放路径。报告默认存放在当前执行路径下,名称默认为“特性名称_时间戳”。 | -| --set-timeout | time | 可选参数。任务超时时间。默认无超时时间,任务将持续执行直到结束。 | -| -l/--log-level | 0,1,2,3 | 可选参数。日志等级,0(DEBUG)、1(INFO)、2(WARNING)、3(ERROR),默认为1(INFO)。 | -| -r/--report-type | all,json,html,csv | 可选参数。扫描报告的格式。默认为all,即默认生成json、html、csv三种报告。 | - - -##### 内存一致性检查: -``` -stages: - - build - - affinity-analysis - -memory-consistency-check: - stage: affinity-analysis - tags: - - kunpeng_c_cpp_builder # 对应gitlab-runner注册时的标签,可选择多个 - script: - - echo '====== 内存一致性检查 ======' - # 需编写生成的BC文件脚本 - - devkit advisor mem-cons -i BC文件对应的源码文件路径 -f BC文件路径 -r html - - # 示例 devkit advisor mem-cons -i /opt/DevKit/testcase/affinity/weak_cons/test-mulbc_sort -f /opt/DevKit/testcase/affinity/weak_cons/bc_file -r html - - mv ./mem-cons*.html ./memory-consistency-check.html - - artifacts: - paths: - - memory-consistency-check.html - name: mem-cons -``` -具体参数如下 -| 参数 | 参数选项 | 参数说明 | -| ------------ | ------------ | ------------ | -| -i/--input | package_path | 必选参数。BC文件对应的源码文件路径。例如:/home/test | -| -f/--bc-file | path | 必选参数。BC文件路径,该路径下必须存在BC文件。例如:/home/testbc | -| --autofix | true/false | 可选参数。是否生成编译器配置文件。默认为false。 | -| --autofix-dir | path | 可选参数。编译器配置文件的存放地址。默认生成在工具目录下的源码文件夹下,使用--autofix且参数必须为true时才能生效。 | -| -o/--output | output_path | 可选参数。报告存放路径。报告默认存放在当前执行路径下,名称默认为“特性名称_时间戳”。 | -| --set-timeout | time | 可选参数。任务超时时间。默认无超时时间,任务将持续执行直到结束。 | -| -l/--log-level | 0,1,2,3 | 可选参数。日志等级,0(DEBUG)、1(INFO)、2(WARNING)、3(ERROR),默认为1(INFO)。 | -| -r/--report-type | all,json,html,csv | 可选参数。扫描报告的格式。默认为all,即默认生成json、html、csv三种报告。 | - -##### 向量化检查: -``` -stages: - - build - - affinity-analysis - -vectorized-check: - stage: affinity-analysis - tags: - - kunpeng_c_cpp_builder # 对应gitlab-runner注册时的标签,可选择多个 - script: - - echo '====== 向量化检查 ======' - # 需编写生成的BC文件脚本 - - devkit advisor vec-check -i BC文件对应的源码文件路径 -f BC文件路径 -c 源码的构建命令 -r html - - # 示例 devkit advisor vec-check -i /opt/DevKit/testcase/affinity/vec/simple -f /opt/DevKit/testcase/affinity/vec/BCfiles -c make -r html - - mv ./vec-check*.html ./vectorized-check.html - - artifacts: - paths: - - vectorized-check.html - name: vec-check - -``` -具体参数如下 -| 参数 | 参数选项 | 参数说明 | -| ------------ | ------------ | ------------ | -| -i/--input | package_path | 必选参数。BC文件对应的源码文件路径。例如:/home/test | -| -f/--bc-file | path | 必选参数。BC文件路径,该路径下必须存在BC文件。例如:/home/testbc | -| -c/--cmd | cmd | 必选参数。源码的构建命令。例如:make all | -| -p/--compiler | gcc,clang | 可选参数。编译器。默认为clang。例如:gcc。 | -| -o/--output | output_path | 可选参数。报告存放路径。报告默认存放在当前执行路径下,名称默认为“特性名称_时间戳”。 | -| --set-timeout | time | 可选参数。任务超时时间。默认无超时时间,任务将持续执行直到结束。 | -| -l/--log-level | 0,1,2,3 | 可选参数。日志等级,0(DEBUG)、1(INFO)、2(WARNING)、3(ERROR),默认为1(INFO)。 | -| -r/--report-type | all,json,html,csv | 可选参数。扫描报告的格式。默认为all,即默认生成json、html、csv三种报告。 | -| --sve-enable | true,false | 可选参数。是否启用sve。默认不开启。 | - - diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/gitlab-runner\345\220\257\345\212\250.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/gitlab-runner\345\220\257\345\212\250.PNG" deleted file mode 100644 index f0445aee7bb0fa45aef64fd51b158d544919dbc8..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/gitlab-runner\345\220\257\345\212\250.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\344\270\255\346\226\20701.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\344\270\255\346\226\20701.PNG" deleted file mode 100644 index 975ac848f27b9746e462f53b02fd5c9f296ee20a..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\344\270\255\346\226\20701.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\344\270\255\346\226\20702.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\344\270\255\346\226\20702.PNG" deleted file mode 100644 index 86299bc878d9cc464cc9529309783d8df557b673..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\344\270\255\346\226\20702.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\345\220\257\345\212\25001.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\345\220\257\345\212\25001.PNG" deleted file mode 100644 index 90d8183a4d2d3e1b63a541c8b10330197c55e9b6..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\345\220\257\345\212\25001.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\345\256\211\350\243\20501.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\345\256\211\350\243\20501.PNG" deleted file mode 100644 index 7d3beff8f4f53a7f21f3da19ca435744389ea21d..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\345\256\211\350\243\20501.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\345\257\206\347\240\20101.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\345\257\206\347\240\20101.PNG" deleted file mode 100644 index 625d2023b6a7eb83809d675dee41e257c2ed84c8..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\345\257\206\347\240\20101.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21401.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21401.PNG" deleted file mode 100644 index f06c9fe9dbf0be47dcfa7dde4c8cada56e9a46b0..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21401.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21402.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21402.PNG" deleted file mode 100644 index c85888442f838f64b4e696a7a947ba6f39dbcf8e..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21402.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21403.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21403.PNG" deleted file mode 100644 index 870cdf6c9e28707f58b4372b97f6949dfb50d4ba..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21403.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21404.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21404.PNG" deleted file mode 100644 index 76823b4a46b31fb5be625adf707a87d111423166..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21404.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21405.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21405.PNG" deleted file mode 100644 index 3f8b928a26060d898a9e79eabb8e59d4fdaeee44..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21405.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21406.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21406.PNG" deleted file mode 100644 index 4801048366ab7395adc44b78d7a91715d6fcffbd..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21406.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21407.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21407.PNG" deleted file mode 100644 index d5e56186c53c35c5eeaaa02a911b8910d4a5e082..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21407.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21409.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21409.PNG" deleted file mode 100644 index 98fce1deeeb945998580f8171c29e4dd10985f31..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21409.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21410.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21410.PNG" deleted file mode 100644 index 437b78ef23907063be150d4294f8391e89420e1b..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\346\263\250\345\206\21410.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\231\273\345\275\22501.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\231\273\345\275\22501.PNG" deleted file mode 100644 index 5cef7b9506c84cd4e9e5c96cf3f8fd5326b1c398..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\231\273\345\275\22501.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2211.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2211.PNG" deleted file mode 100644 index 50dc0dbeb9bb31b6bc5946322860d49fd8bd37e5..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2211.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2212.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2212.PNG" deleted file mode 100644 index b8f61f30cfe360e9bbf632ef6fc4346a7ad90ff7..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2212.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2213.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2213.PNG" deleted file mode 100644 index 42773d895ff85223987bbb0f88cd6bd9e49c6868..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2213.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2214.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2214.PNG" deleted file mode 100644 index 9ad476357ecaaa295952c99cd689d3ec031f83a5..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2214.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2216.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2216.PNG" deleted file mode 100644 index 96d9d50207eb6f3b70b4685cebda9f784a87a052..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2216.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2217.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2217.PNG" deleted file mode 100644 index 8f7b1d581756870d84c1bd9360d2342f3fb6b96f..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2217.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2218.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2218.PNG" deleted file mode 100644 index cb84e79b915da1758deffe12b308ce7bbe15a2e5..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\347\274\226\350\276\2218.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\350\256\277\351\227\256\345\234\260\345\235\200.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\350\256\277\351\227\256\345\234\260\345\235\200.PNG" deleted file mode 100644 index 78858acb7a75885f5de1d9cf8fb982a6e8f5dbc9..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\350\256\277\351\227\256\345\234\260\345\235\200.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\351\207\215\346\226\260\351\205\215\347\275\256.PNG" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\351\207\215\346\226\260\351\205\215\347\275\256.PNG" deleted file mode 100644 index 01065abaab9acd0e0bcd8df50b38ea8bf7b025c9..0000000000000000000000000000000000000000 Binary files "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab/\351\207\215\346\226\260\351\205\215\347\275\256.PNG" and /dev/null differ diff --git "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab\345\256\211\350\243\205\351\203\250\347\275\262.md" "b/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab\345\256\211\350\243\205\351\203\250\347\275\262.md" deleted file mode 100644 index 120565dd8d4828925a3e113ce6358b956ce1773f..0000000000000000000000000000000000000000 --- "a/document/gitlab\345\256\211\350\243\205\351\203\250\347\275\262/gitlab\345\256\211\350\243\205\351\203\250\347\275\262.md" +++ /dev/null @@ -1,170 +0,0 @@ -

-安装部署 gitlab -

- -## 1. gitlab 配置 - -#### 1.下载gitlab安装包 - -``` -wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-16.9.1-ce.0.el7.x86_64.rpm -``` - -#### 2.安装gitlab - -``` -yum install -y git tar policycoreutils-python openssh-server -rpm -ivh gitlab-ce-16.9.1-ce.0.el7.x86_64.rpm -``` - -安装成功会有如下信息: -![](./gitlab/安装01.PNG) - -#### 3.修改IP端口 - -编辑gitlab配置文件 - -``` -vi /etc/gitlab/gitlab.rb -``` - -修改对外访问的Ip端口: - -``` -external_url 'http://localhost:8081' # 修改成 http://实际ip:需要访问的端口 -``` - -![](./gitlab/访问地址.PNG) - -``` -设置的端口不能被占用,如设置的端口已经使用,请自定义其它端口,并在防火墙设置开放范围内的端口 -a. 执行systemctl status firewalld命令查看服务器OS防火墙的状态。如果防火墙已开启(active),执行如下操作开通防火墙端口;如果防火墙没有开启(inactive),请跳过以下步骤。 -b. 执行firewall-cmd --query-port=8081/tcp命令查看端口是否开通,提示“no”表示端口未开通。 -c. 执行firewall-cmd --add-port=8081/tcp --permanent命令永久开通端口,提示“success”表示开通成功。 -d. 执行firewall-cmd --reload命令重新载入配置。 -e. 再次执行firewall-cmd --query-port=8081/tcp命令查看端口是否开通,提示“yes”表示端口已开通。 -``` - -#### 4.重新加载配置 - -``` -gitlab-ctl reconfigure #重新生成相关配置文件,执行此命令时间比较长 -``` - -![](./gitlab/重新配置.PNG) - -#### 5.配置gitlab开机自动启动 - -``` -systemctl enable gitlab-runsvdir.service -systemctl start gitlab-runsvdir.service -# 关闭gitlab的自动启动命令:systemctl disable gitlab-runsvdir.service -``` - -#### 6.启动gitLab - -``` -gitlab-ctl restart -``` - -启动成功会有如下信息 -![](./gitlab/启动01.PNG) - -#### 7.查看 gitlab 版本 - -``` -cat /opt/gitlab/embedded/service/gitlab-rails/VERSION # 回显应为16.9.1 -``` - -#### 8.页面访问 gitlab - -``` -http://ip:8081/ # 端口根据个人配置进行更改 -``` - -![](./gitlab/登录01.PNG) - -#### 9.登录 gitlab - -默认账户名是root,密码存放在配置文件 /etc/gitlab/initial_root_password - -![](./gitlab/密码01.PNG) - -#### 10.设置为简体中文 - -先登录gitLab,登录成功后,在gitlab后台的系统设置里配置简体中文。 - -![](./gitlab/中文01.PNG) -完成后刷新页面即可 - -![](./gitlab/中文02.PNG) - -## 2. 安装部署 gitlab Runner - -#### 1.下载gitlab Runner安装包 - -``` -wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-runner/yum/el7-aarch64/gitlab-runner-16.9.0-1.aarch64.rpm - -# 也可在 https://mirrors.tuna.tsinghua.edu.cn/ 或 https://gitlab-runner-downloads.s3.amazonaws.com/latest/index.html中下载符合自己环境的gitlab Runer安装包,这里以gitlab-runner-16.9.0-1.aarch64.rpm为例,进行手动下载后传至服务器 -``` - -#### 2.安装gitlab Runner安装包 - -``` -yum install -y git tar -rpm -ivh gitlab-runner-16.9.0-1.aarch64.rpm -``` - -#### 3.指定gitlab-runner - -``` -gitlab-runner uninstall -mkdir /home/Kunpeng_staff -gitlab-runner install --working-directory /home/Kunpeng_staff --user root - -# 若想指定用户运行 -useradd Kunpeng_staff -gitlab-runner install --working-directory /home/Kunpeng_staff --user Kunpeng_staff -``` - -#### 4.启动gitlab-runner - -``` -systemctl daemon-reload #重新加载配置 -systemctl start gitlab-runner #启动服务 -systemctl enable gitlab-runner #设置开机启动 -systemctl restart gitlab-runner #重启服务 -``` - -#### 5.查看gitlab-runner - -``` -systemctl status gitlab-runner -``` - -成功启动如下图所示 -![](./gitlab/gitlab-runner启动.PNG) - -#### 6.设置权限 - -``` -chown -R root.root /home/gitlab-runner -# 指定单一时用户运行 -chown -R Kunpeng_staff.Kunpeng_staff /home/gitlab-runner -``` - -#### 7.gitlab runner注册服务 - -登录gitlab,在管理中心Runner中新建一个runner -![](./gitlab/注册02.PNG) -标签多个时用逗号隔开,只可为kunpeng_scanner, kunpeng_c_cpp_builder, kunpeng_java_builder, kunpeng_executor -其他选项按需填写 -![](./gitlab/注册03.PNG) -根据所示url,token去gitlab-runner环境注册 -![](./gitlab/注册06.PNG) -点击进入runners页面 -![](./gitlab/注册09.PNG) -![](./gitlab/注册10.PNG) - -# diff --git "a/document/\345\257\271\346\216\245\346\265\201\346\260\264\347\272\277.pdf" "b/document/\345\257\271\346\216\245\346\265\201\346\260\264\347\272\277.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..0d55fe1c2c67e355527e6972554168ebed090efc Binary files /dev/null and "b/document/\345\257\271\346\216\245\346\265\201\346\260\264\347\272\277.pdf" differ diff --git "a/document/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267/image/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\345\222\214\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267\350\257\264\346\230\216\346\226\207\346\241\243/image-windows\346\234\272\345\231\250\344\270\212\344\270\213\350\275\275\347\273\204\344\273\266\345\214\205.png" "b/document/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267/image/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\345\222\214\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267\350\257\264\346\230\216\346\226\207\346\241\243/image-windows\346\234\272\345\231\250\344\270\212\344\270\213\350\275\275\347\273\204\344\273\266\345\214\205.png" deleted file mode 100644 index 49ea6fdca20b1e4a857e5c8d54c98ad2cfefb493..0000000000000000000000000000000000000000 Binary files "a/document/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267/image/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\345\222\214\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267\350\257\264\346\230\216\346\226\207\346\241\243/image-windows\346\234\272\345\231\250\344\270\212\344\270\213\350\275\275\347\273\204\344\273\266\345\214\205.png" and /dev/null differ diff --git "a/document/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267/image/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\345\222\214\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267\350\257\264\346\230\216\346\226\207\346\241\243/image-windows\347\211\210\346\234\254\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267.png" "b/document/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267/image/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\345\222\214\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267\350\257\264\346\230\216\346\226\207\346\241\243/image-windows\347\211\210\346\234\254\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267.png" deleted file mode 100644 index dd6abd7cfce1320ecb42657c56958a4aae253011..0000000000000000000000000000000000000000 Binary files "a/document/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267/image/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\345\222\214\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267\350\257\264\346\230\216\346\226\207\346\241\243/image-windows\347\211\210\346\234\254\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267.png" and /dev/null differ diff --git "a/document/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267/image/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\345\222\214\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267\350\257\264\346\230\216\346\226\207\346\241\243/image-\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\344\275\277\347\224\250\346\217\220\347\244\272.png" "b/document/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267/image/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\345\222\214\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267\350\257\264\346\230\216\346\226\207\346\241\243/image-\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\344\275\277\347\224\250\346\217\220\347\244\272.png" deleted file mode 100644 index 23f83e6aee4326f0c6abfc8e6d4c204c0c40f249..0000000000000000000000000000000000000000 Binary files "a/document/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267/image/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\345\222\214\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267\350\257\264\346\230\216\346\226\207\346\241\243/image-\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\344\275\277\347\224\250\346\217\220\347\244\272.png" and /dev/null differ diff --git "a/document/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267/image/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\345\222\214\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267\350\257\264\346\230\216\346\226\207\346\241\243/image-\346\226\207\344\273\266\345\210\227\350\241\250.png" "b/document/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267/image/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\345\222\214\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267\350\257\264\346\230\216\346\226\207\346\241\243/image-\346\226\207\344\273\266\345\210\227\350\241\250.png" deleted file mode 100644 index d537beac09c779c8e032a9d1aa1e89a918928efa..0000000000000000000000000000000000000000 Binary files "a/document/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267/image/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\345\222\214\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267\350\257\264\346\230\216\346\226\207\346\241\243/image-\346\226\207\344\273\266\345\210\227\350\241\250.png" and /dev/null differ diff --git "a/document/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267/image/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\345\222\214\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267\350\257\264\346\230\216\346\226\207\346\241\243/image-\347\273\204\344\273\266\345\214\205\346\224\276\347\275\256\344\275\215\347\275\256.png" "b/document/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267/image/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\345\222\214\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267\350\257\264\346\230\216\346\226\207\346\241\243/image-\347\273\204\344\273\266\345\214\205\346\224\276\347\275\256\344\275\215\347\275\256.png" deleted file mode 100644 index 0fcd629af059cc5c617e8bd1b8d8b5e482be5853..0000000000000000000000000000000000000000 Binary files "a/document/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267/image/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\345\222\214\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267\350\257\264\346\230\216\346\226\207\346\241\243/image-\347\273\204\344\273\266\345\214\205\346\224\276\347\275\256\344\275\215\347\275\256.png" and /dev/null differ diff --git "a/document/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\345\222\214\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267\350\257\264\346\230\216\346\226\207\346\241\243.md" "b/document/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\345\222\214\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267\350\257\264\346\230\216\346\226\207\346\241\243.md" deleted file mode 100644 index 3c86bee32b737fcfa884302bf4df3fa45b239c09..0000000000000000000000000000000000000000 --- "a/document/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267/\346\211\271\351\207\217\351\203\250\347\275\262\345\267\245\345\205\267\345\222\214\344\270\200\351\224\256\344\270\213\350\275\275\345\267\245\345\205\267\350\257\264\346\230\216\346\226\207\346\241\243.md" +++ /dev/null @@ -1,299 +0,0 @@ -# 批量部署工具 - -获取本项目release包 `devkit-pipeline-${tag}.tar.gz` 文件 ,将其上传至linux服务器后解压,获取解压后linux文件夹内文件列表如下图: - -![image-文件列表](image/批量部署工具和一键下载工具说明文档/image-文件列表.png) - -其中 **`deploy_tool`** 为批量部署工具,**`download_tool`** 为一键下载工具。**`machine.yaml`**文件为两个工具倚赖的配置文件,具体填写内容说明见下文。在无网络环境下一键下载工具为部署工具提供所需组件包下载能力,windows版本下载工具支持在windows机器上下载组件包(注:windows版本下载工具在release文件列表内的名称为**`download_tool-for-windows.exe`**)。 - -> [**最新版下载链接**](https://gitee.com/openeuler/devkit-pipeline/releases/tag/v1.0) - -> 注:配置流水线时,流水线使用哪个用户来执行,就需要使用该用户来执行一键部署工具。 - -## machine.yaml 配置文件 - -源码仓提供该配置文件模板:(根据需求选择java_builder_jdk8或者java_builder_jdk17,以及如果只需要用gccforopeneuler 请用c_cpp_builder_gcc,如果只需要用毕昇编译器请用c_cpp_builder_bisheng_compiler, 如果两个都要用请用c_cpp_builder) - -```yaml -user: root -pkey: /root/.ssh/id_rsa -scanner: - - 192.168.0.1 - - 192.168.0.2 - - 192.168.0.3 -java_builder_jdk8: - - 192.168.0.1 -java_builder_jdk17: - - 192.168.0.1 -c_cpp_builder: - - 192.168.0.1 -c_cpp_builder_gcc: - - 192.168.0.1 -c_cpp_builder_bisheng_compiler: - - 192.168.0.1 -executor: - - 192.168.0.1 -devkit: - - 192.168.0.4 -``` - -其中,**`user`** 需填写本结点至其他结点配置免密的用户名,**`pkey`** 为配置免密所用公钥对应的私钥路径。 - -**`scanner`**,**`(java_builder_jdk8, java_builder_jdk17)`**,**`(c_cpp_builder, c_cpp_builder_gcc, c_cpp_builder_bisheng_compiler)`**, **`executor`**,**`devkit`** 分别对应用户的扫描机,Java构建机,C/CPP构建机,执行机,devkit部署机器 ,需以yaml列表的形式输入各角色机器对应的ip。 - -- 生成公私钥对的命令为: - -> ```shell -> ssh-keygen [-b bits] [-t rsa] [-f output_keyfile] -> ``` -> -> 推荐使用rsa协议生成公私钥对,如下即为在当前路径下生成rsa公私钥对的命令: -> -> ```shell -> ssh-keygen -t rsa -> ``` -> -> 在命令行输入上述命令后,命令回显会提示用户输入生成公私钥对所用密码,此处建议用户不输入密码,直接确认。 -> -> 若输入密码,则后续批量部署工具在运行时需要用户手动输入密码,或在machine.yaml配置文件中新增一行password参数并填入公私钥对所用密码。 - -- 配置本结点至其他结点免密的命令为: - -> ```shell -> ssh-copy-id -i id_rsa.pub USER@REMOTE_HOST -> ``` -> -> USER 替换为远程服务器的用户名,REMOTE_HOST 替换为远程服务器的ip地址。ssh-copy-id命令使用 -i 选项指定用于配置免密的公钥路径。执行完该命令后,会提示输入远程服务器的密码。 -> -> 输入远程服务器的密码后,公钥就会被复制到远程服务器的 authorized_keys 文件中,这样就可以实现无密码登录远程服务器的功能。 -> -> **若上述ip中出现本机ip,或想要本机到本机的安装部署,则需要配置一遍本机到本机的免密登录。** - -- 部署执行LkpTests的executor执行机上的普通用户需要配置sudo权限与sudo免密 - -> 执行 visudo 命令,或编辑修改 /etc/sudoers 文件: -> -> 普通用户`USER`配置sudo权限,需在 /etc/sudoers 文件中对比 `root ALL=(ALL) ALL` 新增一行 -> -> ```txt -> root ALL=(ALL) ALL -> USER ALL=(ALL) ALL -> ``` -> -> 普通用户`USER`配置sudo免密,需在 /etc/sudoers 文件中对比 `# %wheel ALL=(ALL) NOPASSWD: ALL` 新增一行 -> -> ```txt -> # %wheel ALL=(ALL) NOPASSWD: ALL -> USER ALL=(ALL) NOPASSWD: ALL -> ``` - -## deploy_tool 批量部署工具 - -在命令行进入工具所在的文件夹路径,输入如下命令,可以查看该工具的使用提示。 - -```shell -./deploy_tool -h -``` - -![image-批量部署工具使用提示](image/批量部署工具和一键下载工具说明文档/image-批量部署工具使用提示.png) - -除 **`-h`** 使用提示参数外,**`deploy_tool`** 批量部署工具还提供 **`-f`**,**`-iso`** ,**`--debug`** 三个参数。 - -- 使用`-f`参数,指定所需yaml配置文件为后续输入的路径。若不使用`-f`参数,批量部署工具默认会从当前路径下读取名为`machine.yaml`的文件作为yaml配置文件。 `-f`参数别名为`--config`。 -- 使用 `-iso` 参数,指定要安装镜像源文件。使用该参数运行时,部署工具会在远端节点配置本地镜像后,进行组件安装。在组件安装完毕后,即删除刚刚配置好的本地镜像源,恢复初始环境。 -- 使用 `--debug`参数,可以打开批量部署工具的debug日志信息,方便根据命令行日志输出确认哪个环节出现了问题。 - -注:本批量部署工具将标准输出作为日志输出地址,没有生成单独的日志文件。 - -#### 使用批量部署工具常用的命令为: - -```shell -./deploy_tool -f ./machine.yaml --debug -``` - -``` -./deploy_tool -f ./machine.yaml -iso /path/to/iso --debug -``` - -> **注意:使用部署工具,需要提前在目标节点安装 tar 命令用于安装组件。** - -#### 批量部署工具支持按角色批量部署组件,并支持根据iso镜像文件挂载本地镜像。 - -**按角色下载和部署对应组件:** - -| 角色 | 对应组件 | -| ------------------------------ | --------------------------------------------------------------------------- | -| scanner | BiShengJDK17, DevKitCLI | -| java_builder_jdk8 | BiShengJDK17, BiShengJDK8 | -| java_builder_jdk17 | BiShengJDK17 | -| c_cpp_builder | GCCforOpenEuler, BiShengCompiler, BiShengJDK17, A-FOT, NonInvasiveSwitching | -| c_cpp_builder_gcc | GCCforOpenEuler, BiShengJDK17, A-FOT, | -| c_cpp_builder_bisheng_compiler | BiShengCompiler, BiShengJDK17, NonInvasiveSwitching | -| executor | BiShengJDK17, LkpTests | -| devkit | DevKitWeb | - -各工具下载版本多为2024年2月各工具官网提供的最新版,可查看本项目源代码`tools/download_dependency/src/download_config.py` 文件查看具体下载链接。 - -说明:**部署工具部署BiShengJDK8 和 BiShengJDK17时,两个版本的安装包解压在${HOME}/.local/目录下,用户可以按自己需要使用的版本进行手动配置环境变量**。 - -部署安装过程中会使用目标结点机器的 **`/tmp`** 目录作为临时文件所在目录,部署完成后将会删除 **`/tmp`** 目录下的临时文件。若目标结点机器 **`/tmp`** 目录磁盘空间不足,则会导致安装失败。若使用挂载本地镜像方式安装,则安装完依赖后,本地镜像源将被取消挂载并恢复原来的镜像源配置。 - -## download_tool 一键下载工具 - -当批量部署工具所在结点网络不通时,可以使用 **`download_tool`** 一键下载工具在有网络环境的机器上先行将所需的组件安装包及校验文件下载下来并打包成 **`devkitdependencies.tar.gz`** 文件,供用户上传至批量部署工具所在结点,供批量部署工具在默认路径加载使用。 - - `devkitdependencies.tar.gz` 文件上传路径为`deploy_tool` 部署工具所在路径。上传完成后目录文件列表如下: - -![image-组件包放置位置](image/批量部署工具和一键下载工具说明文档/image-组件包放置位置.png) - -#### 一键下载工具linux版本 - -该工具在release包解压后的linux文件夹下,在Linux机器上使用,用于下载组件包。Linux版下载工具使用 `wget -c url` 进行下载组件,有断点续传的效果。 - -```shell -./download_tool -f machine.yaml -``` - -直接执行该命令即可按`machine.yaml`配置文件中有效角色下载 **GCCforOpenEuler**,**BiShengCompiler**,**BiShengJDK8**,**BiShengJDK17**,**lkp-tests**,**DevKitWeb**,**DevKitCLI** 组件。 - -> 在有网络环境的linux服务器上,一键下载工具所在路径,执行如下命令,可以查看该工具的使用提示。 -> -> ```shell -> ./download_tool -h -> ``` -> -> 除 **`-h`** 使用提示参数外,**`download`** 批量下载工具还提供 **`-iso`** 参数。 -> -> - 使用 -iso 参数,指定下载iso版本,输入“auto”将自动检测操作系统版本,并自动下载对应的版本iso文件。 - -##### 使用下载工具常用的命令为: - -> ```shell -> ./download_tool -> ``` -> -> 若要使用下载工具下载本地镜像,则可使用以下命令进行下载。(不常用) -> -> ```shell -> ./download_tool -iso auto -> ``` - -#### 一键下载工具windows版本 - -该工具在release文件列表内的名称为 **`download_tool-for-windows.exe`**,可在windows机器上使用,用于下载组件包。 - -执行下载工具时需要将yaml配置文件在相同路径下创建一份。 - -![image-windows版本一键下载工具](image/批量部署工具和一键下载工具说明文档/image-windows版本一键下载工具.png) - -**双击** 该`download_tool-for-windows.exe` 文件即可在当前目录下下载组件包。下载完成后结果如下: - -![image-在windows机器上下载组件包](image/批量部署工具和一键下载工具说明文档/image-windows机器上下载组件包.png) - -##### 使用下载工具常用的命令为: - -> ```shell -> ./download_tool -> ``` -> -> 若要使用下载工具下载本地镜像,则可使用以下命令进行下载。(不常用) -> -> ```shell -> ./download_tool -iso openEuler_2203_LTS -> ``` - -## 部署结果 - -批量部署工具将各组件安装至用户家目录下的.local文件夹下。 - -#### GCCforOpenEuler 安装结果 - -批量部署工具将`GCCforOpenEuler`安装包解压至用户家目录下的.local文件夹下,并在用户的 `~/.bashrc` 文件中新增如下两行命令。用户重新登录服务器后即可查询当前环境所用`gcc`版本。 - -```shell -export GCC_HOME=${HOME}/.local/gcc-10.3.1-2023.12-aarch64-linux/bin -export PATH=${GCC_HOME}:${PATH} -``` - -#### BiShengCompiler安装结果 - -批量部署工具将`BiShengCompiler`安装包解压至用户家目录下的.local文件夹下,并在用户的 `~/.bashrc` 文件中新增如下两行命令。用户重新登录服务器后即可查询当前环境所用`clang`版本。 - -```shell -export BISHENG_COMPILER_HOME=${HOME}/.local/BiShengCompiler-3.2.0-aarch64-linux/bin -export PATH=${BISHENG_COMPILER_HOME}:${PATH} -``` - -#### BiShengJDK8安装结果 - -批量部署工具将`BiShengJDK8`安装包解压至用户家目录下的.local文件夹下,用户手动配置环境变量后,可使用如下命令查询当前环境所用`java`版本。 - -```shell -# 设置环境变量,有临时设置与永久设置 - # 方法1:临时设置 - export JAVA_HOME=${HOME}/.local/bisheng-jdk1.8.0_402 - export PATH=$JAVA_HOME/bin:$PATH - # 方法2:永久设置,在任意终端或重启系统都有效;在/etc/profile文件其末尾添加如下内容: - export JAVA_HOME=${HOME}/.local/bisheng-jdk1.8.0_402 - export PATH=$JAVA_HOME/bin:$PATH - export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar - export JRE_HOME=$JAVA_HOME/jre -# 在终端中执行加载系统环境变量(使用方法2时需执行) - source /etc/profile -# 查询当前环境所用java版本 -java -version -# 终端返回包含如下信息,即java环境设置成功 - # openjdk version "1.8.0_402" -``` - -#### BiShengJDK17安装结果 - -批量部署工具将`BiShengJDK17`安装包解压至用户家目录下的.local文件夹下,用户手动配置环境变量后,可使用如下命令查询当前环境所用`java`版本。 - -```shell -# 设置环境变量,有临时设置与永久设置 - # 方法1:临时设置 - export JAVA_HOME=${HOME}/.local/bisheng-jdk-17.0.10 - export PATH=$JAVA_HOME/bin:$PATH - # 方法2:永久设置,在任意终端或重启系统都有效;在/etc/profile文件其末尾添加如下内容: - export JAVA_HOME=${HOME}/.local/bisheng-jdk-17.0.10 - export PATH=$JAVA_HOME/bin:$PATH - export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar -# 在终端中执行加载系统环境变量(使用方法2时需执行) - source /etc/profile -# 查询当前环境所用java版本 -java -version -# 终端返回包含如下信息,即java环境设置成功 - # openjdk version "17.0.10" 2024-01-16 -``` - -#### 测试平台(lkp-tests)安装结果 - -可使用如下命令查看lkp安装位置。 - -``` -which lkp -``` - -#### A-FOT安装结果 - -批量部署工具将`A-FOT`安装包解压至用户家目录下的.local文件夹下,并在用户的 `~/.bashrc` 文件中新增如下两行命令。用户重新登录服务器后,配置好配置文件后即可使用a-fot --config_file a-fot.ini(也可通过命令行灵活配置,详情请见[A-FOT指导文档](https://gitee.com/openeuler/devkit-pipeline/blob/master/document/A-FOT安装部署指导/A-FOT安装使用以及集成到Jenkins指导说明.md))进行优化应用。 - -注意:**c_cpp_builder角色、c/cpp构建机安装 a-fot 前需要预先使用yum安装 perf 命令。** - -```shell -export A_FOT_HOME=${HOME}/.local/a-fot -export PATH=${A_FOT_HOME}:${PATH} -``` - -#### DevKitWeb后台安装结果 - -批量部署工具会在/opt目录下安装DevKit Web端后台,只安装java_perf插件,并初始化管理员`devadmin`用户密码,初始密码为`devkit123`。 - -#### 无感切换依赖 - -如果用户的某些应用或命令希望使用本部署工具安装的 BiShengCompiler 编译器的相关环境变量,可以运行以下命令: - -``` -source /usr/local/wrap-bin/devkit_pipeline.sh -``` \ No newline at end of file diff --git "a/document/\346\227\240\346\204\237\345\210\207\346\215\242/\346\227\240\346\204\237\345\210\207\346\215\242\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.md" "b/document/\346\227\240\346\204\237\345\210\207\346\215\242/\346\227\240\346\204\237\345\210\207\346\215\242\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.md" deleted file mode 100644 index cc591c06aaf7f4820d232674da160caf05c3b3f7..0000000000000000000000000000000000000000 --- "a/document/\346\227\240\346\204\237\345\210\207\346\215\242/\346\227\240\346\204\237\345\210\207\346\215\242\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.md" +++ /dev/null @@ -1,49 +0,0 @@ -**《无感切换与Jenkins集成部署指导手册》** - ---- - -## 1. 无感切换目的 - -如果用户现在用的是clang或者clang++,将会使用毕昇编译器增加编译选项,如果用户使用的是gcc或者g++将会替换为clang或者clang++ - -## 2.切换后的优势 - -### (1)性能 - -会针对鲲鹏进行后端亲和的编译以及在不损精度的情况下的最优性能编译,性能比开源编译器平均高30%以上,也会针对关键场景进行极致性能优化,让性能再上一个台阶 - -### (2)安全 - -相比gcc,毕昇编译器在语法检查,标准遵循上更加严格,能帮助用户更早地发现问题,规范代码,提高代码质量 - -## 3. 流水线代码示例 - -``` -stage('lkp test') { - steps { - script{ - echo '====== lkp test ======' - sh ''' - CURDIR=$(pwd) -                                        source ${HOME}/.local/wrap-bin/devkit_pipeline.sh # 如果想要使用毕昇编译器的相关能力,请添加这条命令 - cp -rf /xxx/compatibility_testing/template.html.bak /xxx/compatibility_testing/template.html - sudo lkp run /xxx/lkp-tests/programs/compatibility-test/compatibility-test-defaults.yaml - cp -rf /xxx/test/compatibility_testing/compatibility_report.html $CURDIR - ''' - sh(script: "sudo bash /xxx/compatibility_testing/report_result.sh", returnStdout:true).trim() - - } - } - post { - always { - publishHTML(target: [allowMissing: false, - alwaysLinkToLastBuild: false, - keepAll : true, - reportDir : '.', - reportFiles : 'compatibility_report.html', - reportName : 'compatibility test Report'] - ) - } - } - } -``` diff --git "a/document/\346\227\240\346\204\237\345\210\207\346\215\242/\346\227\240\346\204\237\345\210\207\346\215\242\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.pdf" "b/document/\346\227\240\346\204\237\345\210\207\346\215\242/\346\227\240\346\204\237\345\210\207\346\215\242\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.pdf" deleted file mode 100644 index 11e6fb37e2c2ab94648036ebf50580298749eb37..0000000000000000000000000000000000000000 Binary files "a/document/\346\227\240\346\204\237\345\210\207\346\215\242/\346\227\240\346\204\237\345\210\207\346\215\242\344\270\216Jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.pdf" and /dev/null differ diff --git "a/document/\346\227\240\346\204\237\345\210\207\346\215\242/\346\227\240\346\204\237\345\210\207\346\215\242\344\270\216gitlab\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.md" "b/document/\346\227\240\346\204\237\345\210\207\346\215\242/\346\227\240\346\204\237\345\210\207\346\215\242\344\270\216gitlab\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.md" deleted file mode 100644 index 29c692a4c4c75c7864b17effadae4b66393f0619..0000000000000000000000000000000000000000 --- "a/document/\346\227\240\346\204\237\345\210\207\346\215\242/\346\227\240\346\204\237\345\210\207\346\215\242\344\270\216gitlab\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.md" +++ /dev/null @@ -1,44 +0,0 @@ -**《无感切换与gitlab集成部署指导手册》** - ---- - -## 1. 无感切换目的 - -如果用户现在用的是clang或者clang++,将会使用毕昇编译器增加编译选项,如果用户使用的是gcc或者g++将会替换为clang或者clang++ - -## 2.切换后的优势 - -### (1)性能 - -会针对鲲鹏进行后端亲和的编译以及在不损精度的情况下的最优性能编译,性能比开源编译器平均高30%以上,也会针对关键场景进行极致性能优化,让性能再上一个台阶 - -### (2)安全 - -相比gcc,毕昇编译器在语法检查,标准遵循上更加严格,能帮助用户更早地发现问题,规范代码,提高代码质量 - -## 3. 流水线代码示例 - -``` -stages: # List of stages for jobs, and their order of execution - - build - - test - - deploy - - -build-job: # This job runs in the build stage, which runs first. - stage: build - script: - - CURDIR=$(pwd) - - echo $CURDIR - - source "${HOME}"/.local/wrap-bin/devkit_pipeline.sh # 如果想要使用毕昇编译器的相关能力,请添加这条命令 - - cp -rf /root/.local/compatibility_testing/template.html.bak /root/.local/compatibility_testing/template.html - - sudo /root/.local/lkp-tests/bin/lkp run /root/.local/lkp-tests/programs/compatibility-test/compatibility-test-defaults.yaml - - cp -rf /root/.local/compatibility_testing/compatibility_report.html $CURDIR/compatibility_report.html - - sudo sh /root/.local/compatibility_testing/Chinese/test_result.sh - - echo "请去 '${CURDIR}'/compatibility_report.html 查看报告 " - artifacts: - paths: - - compatibility_report.html # 文件后缀.html根据-r参数配置,也可配置为 src-mig*.* - tags: - - dlj # 对应gitlab-runner注册时的标签,可选择多个 -``` diff --git "a/document/\346\227\240\346\204\237\345\210\207\346\215\242/\346\227\240\346\204\237\345\210\207\346\215\242\344\270\216gitlab\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.pdf" "b/document/\346\227\240\346\204\237\345\210\207\346\215\242/\346\227\240\346\204\237\345\210\207\346\215\242\344\270\216gitlab\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.pdf" deleted file mode 100644 index 31d457e043aa4489107f5c437ed05f569555439f..0000000000000000000000000000000000000000 Binary files "a/document/\346\227\240\346\204\237\345\210\207\346\215\242/\346\227\240\346\204\237\345\210\207\346\215\242\344\270\216gitlab\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.pdf" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\270\216gitlab\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.md" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\270\216gitlab\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.md" deleted file mode 100644 index 3e133b8f7228f2567bbe34ea129cfb1fcde6678c..0000000000000000000000000000000000000000 --- "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\270\216gitlab\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.md" +++ /dev/null @@ -1,670 +0,0 @@ -
《devkit 测试平台安装使用以及与gitlab集成部署指导手册》
- -[TOC] - ------- - -测试平台使用的是lkp test 工具,以下均已lkp test描述测试平台] - -## 一. 云测工具介绍 - -lkp test是运行云测工具描述验证应用在鲲鹏服务器上的运行情况的必要依赖 - -云测工具是用来运行兼容性测试和可靠性测试的应用 - -| 兼容性测试 | 通过待测试应用软件在鲲鹏环境启动前后资源波动异常检测、验证应用软件启动和停止,自动检测应用软件在鲲鹏平台上的可运行性、兼容性问题。 | -| ----- | ---------------------------------------------------------------------- | -| 可靠性测试 | 通过待测试应用软件在稳定运行期间的系统资源内存的波动异常检测、在异常终止测试场景检测应用运行,自动评估应用软件在鲲鹏平台上的稳定性和可靠性。 | - - - -## 二. 安装指导 - -可以使用一键部署工具去部署,如果只想单独部署测试平台可以按照以下操作(请用有root权限的用户去安装) - -### 1. 下载依赖 - -请前往发行版,下载gem_dependencies.zip, lkp-tests.tar.gz以及compatibility_testing.tar.gz 三个压缩包并将其上传到服务器上 - -### 2. 安装yum 依赖,gems依赖以及编译lkp tests - -### (1)yum源配置 - -请配置everything的yum源 -[https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/ISO/aarch64/](https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/ISO/aarch64/) - -运行 - -``` -yum install -y git wget rubygems -``` - -### (2) 安装gems和编译lkp tests - -请去代码仓拷贝 component/LkpTests/install.sh到服务器上 - -``` -# 第14,15 行 - lkp_tar=/tmp/devkitdependencies/lkp-tests.tar.gz - gem_zip=/tmp/devkitdependencies/gem_dependencies.zip - -# 请修改为这两个文件上传后的绝对路径地址 -``` - -运行这个脚本执行安装 - -### (3) 安装后校验 - -``` -which lkp -``` - -看是否能找到lkp应用 - -### (4)测试是否安装成功 - -```shell -lkp help -lkp install -``` - -### 3.安装云测工具 - -直接解压缩compatibility_testing.tar.gz到${HOME}/.local就行 - -## 三. 添加项目至lkp tests测试平台(云测工具已完成添加,无需再次添加,以下仅用来介绍如何再lkp tests里面添加项目) - -### (1) 极简版项目添加,示例-云测工具(compatibility-test) - -以下所有文件夹在安装完lkp-tests 文件夹下面,如果使用一键部署工具则在${HOME}/.local下面 - -1. 在programs 文件夹下创建compatibility-test文件夹,里面要包含以下几个文件,其余文件可以根据需求自行决定是否添加 - -programs/compatibility-test/jobs/compatibility-test.yaml # 预定义compatibility-test的job,需要与文件夹名字一致 - -programs/compatibility-test/meta.yaml # compatibility-test描述文件 - -programs/compatibility-test/run # compatibility-test运行脚本 - -2. 文件内容详情 - -programs/compatibility-test/jobs/compatibility-test.yaml: - -``` -suite: compatibility-test # 项目介绍 -category: functional # 项目类型(functional只跑用户自己写的run脚本) - -compatibility-test: # run 脚本的输入参数,此为极简版,默认用户的run脚本里面写了从哪里接收参数,无需通过 lkp 命令读取,只需保留与文件件相同的名字(compatibility-test:)即可 -``` - -programs/compatibility-test/meta.yaml: - -``` -metadata: - name: compatibility-test # 名字 - summary: A program can run some basic tests # 这个项目的总结 - description: run compatinility test and generate the report # 这个项目的介绍 - homepage: https://gitee.com/openeuler/devkit-pipeline # 项目的网址 -type: workload # 项目类型,极简版保持一直就行 -depends: # 项目依赖,极简版默认用户知道自己运行脚本需要哪些依赖已经安装好,无需在运行lkp命令时按照为空即可 -params: # 需要的参数极简版默认用户在run脚本里处理参数,为空即可 -results: # 需要对结果进行处理,默认用户在run脚本里处理结果,为空即可 -``` - -programs/compatibility-test/run: - -``` -# 这个文件是run脚本本质是一个shell脚本,此示例是用来运行云测平台的脚本,因为项目依赖,参数读取和结果处理均在run脚本里处理了,所以无需上面的文件中无任何添加 - -#!/bin/bash - -set -e -ct_sh_path=${HOME}/.local/compatibility_testing/Chinese/compatibility_testing.sh -cloud_jar=${HOME}/.local/compatibility_testing/cloudTest.jar - -cd ${HOME}/.local/compatibility_testing/Chinese/ -sh $ct_sh_path - -java -jar $cloud_jar & -sleep 15 -jar_pid=$! -curl --location --request GET 'http://127.0.0.1:10037/api/v1/report?savePath=/'${HOME}'/.local/compatibility_testing/Chinese/log.json&file=/'${HOME}'/.local/compatibility_testing/Chinese/log.tar.gz' -kill -9 $jar_pid -cp -rf ${HOME}/.local/compatibility_testing/template.html.bak /${HOME}/.local/compatibility_testing/template.html -cd ${HOME}/.local/compatibility_testing/ -python3 ${HOME}/.local/compatibility_testing/json2html.py -``` - -3. 必要步骤 - 在完成此文件夹的创建后,依然还需要两步操作去让lkp命令找到指定的运行文件 - -``` -# 第一步 运行lkp slpit 命令去分隔jobs里面写的yaml文件,他会根据run文件以来的每个参数不同的输入值分成多个可执行的yaml文件, -例如 -lkp split programs/compatibility-test/jobs/compatibility-test.yaml -# 云测工具会得到输出 programs/compatibility-test/jobs/compatibility-test.yaml => ./compatibility-test-defaults.yaml,当我们每次更新jobs下面的yaml文件的输入参数后都需要重新运行 lkp split命令 -# 当我们lkp run的时候就要运行这个分隔后的yaml文件(在云测工具就是compatibility-test-defaults.yaml) -# 第二步 需要增加一个软连接 - -ln -s xxx/lkp-tests/programs/compatibility-test/run xxx/lkp-tests/tests/compatibility-test -``` - -### (2) 带参数版项目添加,示例-云测工具(compatibility-test) - -1. 在programs 文件夹下创建compatibility-test文件夹,里面要包含以下几个文件,其余文件可以根据需求自行决定是否添加 - -programs/compatibility-test/jobs/compatibility-test.yaml # 预定义compatibility-test的job,需要与文件夹名字一致 - -programs/compatibility-test/meta.yaml # compatibility-test描述文件 - -programs/compatibility-test/run # compatibility-test运行脚本 - -2. 文件内容详情 - -programs/compatibility-test/jobs/compatibility-test.yaml: - -``` -suite: compatibility-test # 项目介绍 -category: functional # 项目类型(functional只跑用户自己写的run脚本) - -compatibility-test: # run 脚本的输入参数 - parameter1: - - value1 - - value2 - - parameter2: - - value1 - - value2 - # 示例 - file_path: ${HOME}/.local/compatibility_testing/Chinese/compatibility_testing.sh -``` - -programs/compatibility-test/meta.yaml: - -``` -metadata: - name: compatibility-test # 名字 - summary: A program can run some basic tests # 这个项目的总结 - description: run compatinility test and generate the report # 这个项目的介绍 - homepage: https://gitee.com/openeuler/devkit-pipeline # 项目的网址 -type: workload # 项目类型,极简版保持一直就行 -depends: # 项目依赖,极简版默认用户知道自己运行脚本需要哪些依赖已经安装好,无需在运行lkp命令时安装,为空即可 -params: # 需要的参数 - file_path: -results: # 需要对结果进行处理,默认用户在run脚本里处理结果,为空即可 -``` - -programs/compatibility-test/run: - -``` -#!/bin/bash - -set -e -ct_sh_path=${file_path} -cloud_jar=${HOME}/.local/compatibility_testing/cloudTest.jar - -cd ${HOME}/.local/compatibility_testing/Chinese/ -sh $ct_sh_path - -java -jar $cloud_jar & -sleep 15 -jar_pid=$! -curl --location --request GET 'http://127.0.0.1:10037/api/v1/report?savePath=/'${HOME}'/.local/compatibility_testing/Chinese/log.json&file=/'${HOME}'/.local/compatibility_testing/Chinese/log.tar.gz' -kill -9 $jar_pid -cp -rf ${HOME}/.local/compatibility_testing/template.html.bak /${HOME}/.local/compatibility_testing/template.html -cd ${HOME}/.local/compatibility_testing/ -python3 ${HOME}/.local/compatibility_testing/json2html.py -``` - -3. 必要步骤 - 在完成此文件夹的创建后,依然还需要两步操作去让lkp命令找到指定的运行文件 - -``` -# 第一步 运行lkp slpit 命令去分隔jobs里面写的yaml文件,他会根据run文件以来的每个参数不同的输入值分成多个可执行的yaml文件, -例如 -lkp split programs/compatibility-test/jobs/compatibility-test.yaml -# 云测工具会得到输出 programs/compatibility-test/jobs/compatibility-test.yaml => ./compatibility-test-defaults.yaml,当我们每次更新jobs下面的yaml文件的输入参数后都需要重新运行 lkp split命令 -# 当我们lkp run的时候就要运行这个分隔后的yaml文件(在云测工具就是compatibility-test-defaults.yaml) -# 第二步 需要增加一个软连接 - -ln -s xxx/lkp-tests/programs/compatibility-test/run xxx/lkp-tests/tests/compatibility-test -``` - -## 四、 云测工具 - -要运行云测平台需要配置参数,在安装目录${HOME}/.local/compatibility_testing/Chinese/compatibility_testing.conf - -```abap -################################################################################## -#功能描述: 提供给用户进行兼容性测试、性能测试的指标日志采集工具 -#版本信息: 华为技术有限公司,版权所有(C) 2020-2022 -#修改记录: 2022-08-17 修改 -#使用方法:自动化采集开始前,请用户先配置compatibility_testing.conf, -# 填写待测试应用名称application_names, -# 待测试应用启动命令start_app_commands, -# 待测试应用停止命令stop_app_commands -# 被测应用软件的压力测试工具启动命令start_performance_scripts, -# 确认填写后 -# CentOS/中标麒麟/SUSE/openEuler:使用root用户执行,sh compatibility_testing.sh。 -# Ubuntu/银河麒麟/UOS:使用root用户执行,bash compatibility_testing.sh。 -# 多节点集群部署,在每台节点服务器上配置对自身节点和其他所有节点的SSH免密登录。并在控制节点(主节点)执行脚本。 -################################################################################### - - -# 可通过ps或者docker top 命令CMD所在列查找后台进程名称, Kubernetes集群环境下填写Pod名称。 -application_names= test1 # 待测试应用软件进程名称,多个应用名称以逗号隔开。(必填) -# 待测试应用软件启动命令,多个应用的启动命令以逗号隔开。 -start_app_commands= nohup python3 xxx/test1.py & # 如果是多行命令请写到脚本里,由脚本拉起,如果命令不是后台运行,请添加nohup参数变成后台运行(必填) -# 空载采集时间 -idle_performance_time=1 # 在应用运行前后会对当前环境进行性能采集,填写采集时间(整数最小为1,必填,不要加空格,) -# 待测试应用软件停止命令,多个应用的停止命令以逗号隔开。 -stop_app_commands= # 如果应用有停止命令可以写上去,如果没有会根据进程名杀掉进程(非必填) -# 被测应用软件的压力测试工具启动命令。 -start_performance_scripts= nohup python3 xxx/test3.py & # -# 被测应用软件的压力测试工具运行时间(分钟)。 -start_performance_time=1 # 如果写了压力测试工具启动命令,那么这个运行时间是必填的,用户要根据自己的压力测试工具能运行多久或者想测试多久去写时间(不要加空格, 整数最小为1) -# Kubernetes集群填写"Y"。其他环境可置空。 -kubernetes_env= - -# 以下为多节点集群部署填写,单机(单节点)部署不需要填写。 -# 集群环境的IP地址列表,多个IP地址以逗号隔开,列表不应包括当前脚本所在服务器IP地址,请勿增加。 -cluster_ip_lists= - -# 以下为Validated认证测试填写,Compatible认证测试不需要填写。 -# CVE漏洞扫描目录,多个目录以逗号隔开,Validated认证测试有自己的CVE漏洞检查工具不需要填写。 -# 集群环境下, 非当前脚本所在服务器的目录填写为"IP:目录", 如192.168.2.2:/root/tomcat -cve_scan_path= -# clamav防病毒扫描目录,多个目录以逗号隔开,Validated认证测试有自己的商用杀毒软件不需要填写。 -# 集群环境下, 非当前脚本所在服务器的目录填写为"IP:目录", 如192.168.2.2:/root/tomcat -clamav_scan_path= - -# 以下为HPC应用方案认证填写,HPC应用测试填写"Y",其他应用认证测试可置空。 -hpc_certificate= - -# 以下为C/C++编译的应用填写,请填写待测试应用二进制文件的绝对路径。 -binary_file= -``` - -## 五、gitlab Pipeline 中集成lkp test (以云测工具(compatibility-test)为示例) - -请确保运行的用户有root权限 - -### 1. 流水线代码示例 - -``` -stages: # List of stages for jobs, and their order of execution - - build - - test - - deploy - - -build-job: # This job runs in the build stage, which runs first. - stage: build - script: - - CURDIR=$(pwd) - - echo $CURDIR - - cp -rf /root/.local/compatibility_testing/template.html.bak /root/.local/compatibility_testing/template.html - - sudo /root/.local/lkp-tests/bin/lkp run /root/.local/lkp-tests/programs/compatibility-test/compatibility-test-defaults.yaml - - cp -rf /root/.local/compatibility_testing/compatibility_report.html $CURDIR/compatibility_report.html - - sudo sh /root/.local/compatibility_testing/report_result.sh - - echo "请去 '${CURDIR}'/compatibility_report.html 查看报告 " - artifacts: - paths: - - compatibility_report.html # 文件后缀.html根据-r参数配置,也可配置为 src-mig*.* - tags: - - dlj # 对应gitlab-runner注册时的标签,可选择多个 - artifacts: - paths: - - compatibility_report.html - name: compatibility_report -``` - -### 2. 创建流水线 - -![创建Pipeline任务01](./images/gitlab创建项目.png)![创建Pipeline任务02](./images/gitlab创建项目2.png) -![创建Pipeline任务03](./images/gitlab创建项目3.png)![创建Pipeline任务04](./images/gitlab创建项目4.png) -![创建Pipeline任务05](./images/gitlab创建项目5.png) - -## 六、lkp test 添加测试用例全部功能介绍 - -### 样例 - -如下目录中的文件,完整的添加了一个典型的测试用例memtier: - -``` -programs/memtier/jobs/memtier-dcpmm.yaml # 在job YAML里指定想跑的programs/params -programs/memtier/jobs/memtier.yaml # 可以预定义很多的jobs -programs/memtier/meta.yaml # memtier描述文件 -programs/memtier/PKGBUILD # memtier下载编译 -programs/memtier/run # memtier运行脚本 -programs/memtier/parse # memtier结果解析 -``` - -如果加的program type属于monitor/setup脚本,则需要放到对应的monitors/, setup/目录下,而非programs/目录。 集中存放monitor/setup脚本,有利于他人查找和复用。 - -其中jobs/下的YAML文件,定义了memtier的各种常见运行参数、及与其它脚本的组合。 用户要跑其中的一个测试组合,典型步骤如下 - -``` -# 把job YAML从矩阵描述形式分解为一系列原子任务 -$ lkp split memtier-dcpmm.yaml -jobs/memtier-dcpmm.yaml => ./memtier-dcpmm-1-cs-localhost-0-8-1-1-65535-never-never.yaml -jobs/memtier-dcpmm.yaml => ./memtier-dcpmm-1-cs-localhost-0-24-1-1-65535-never-never.yaml - -# 安装依赖,包括安装meta.yaml里depends字段描述的软件包,以及调用PKGBUILD -$ lkp install ./memtier-dcpmm-1-cs-localhost-0-8-1-1-65535-never-never.yaml - -# 运行任务,会调用其中指定的各run脚本,结果保存到/lkp/result/下一个新建的目录里 -# 结束后自动运行各parse脚本,提取各结果指标并汇集到stats.json -$ lkp run ./memtier-dcpmm-1-cs-localhost-0-8-1-1-65535-never-never.yaml -``` - -### 概述 - -一个测试用例一般涉及如下部分 - -``` -1) 基本信息说明 # meta.yaml metadata部分 -2) 安装哪些依赖 # meta.yaml depends字段 -3) 下载编译一些程序 # PKGBUILD脚本 -4) 对所在环境做哪些设置 # run脚本 (type=setup) -5) 监控系统的一些状态 # run脚本 (type=monitor) -6) 运行哪些程序,以什么参数运行 # run脚本 (type=workload) -7) 怎么解析结果,抽取度量指标 # parse脚本 -``` - -为了实现最大的灵活性、可复用性,我们以job-program-param三层模型来组织测试用例。 一个job YAML的典型内容为 - -``` -monitor_program1: -monitor_program2: -... -setup_program1: - param1: - param2: -setup_program2: - param1: -... -workload_program1: - param1: -workload_program2: - param1: - param2: -``` - -其中每个脚本只做一件事,这样组合起来会很灵活和强大。monitor/setup programs的可复用性就很好。 - -用户跑一个用例的入口是job,可以自己书写job,也可以使用jobs/目录下预定义的job。 当运行一个job时,lkp会找到job中指定的各类programs,以指定的params key/val为环境变量,执行各program。 确切的规则如下 - -``` -# job YAML 内容 - - $program: - param1: val1 - param2: val2 - -# lkp install job 执行的伪代码 - - find programs/$program/meta.yaml or - programs/**/meta-$program.yaml - - for each package in meta YAML's depends field: - check install package RPM/DEB - if OS has no such package: - find programs/$package/PKGBUILD or - programs/**/PKGBUILD-$package - makepkg for the first found one - -# lkp run job 执行的 shell 伪代码 - - # run - export param1=val1 - export param2=val2 - find programs/$program/run or - programs/**/run-$program - run the first found one, redirecting stdout/stderr to $RESULT_ROOT/$program - # parse - run its parse script < $RESULT_ROOT/$program | dump-stat to $RESULT_ROOT/$program.json - unite all $RESULT_ROOT/$program.json to $RESULT_ROOT/stats.json -``` - -### 添加meta.yaml描述文件 - -一个meta.yaml文件描述一个program,其结构如下 - -``` -metadata: - name: # 程序名 - summary: # 单行描述 - description: # 多行/多段详细描述 - homepage: # 脚本所调用程序的上游项目的主页URL -type: # monitor|setup|daemon|workload -monitorType: # one-shot|no-stdout|plain -depends: - gem: # ruby gem 依赖 - pip: # python pip 依赖 - ubuntu@22.04: # ubuntu 22.04的DEB包依赖 - openeuler@22.03: # openeuler 22.03的RPM包依赖 -pkgmap: # 各OS之间的包名映射,这样我们可以在depends里指定一个OS的完整依赖列表,通过少量包名映射来支持其它OS - archlinux..debian@10: - debian@10..openeuler@22.03: # 以下为两个样例 - dnsutils: bind-utils - cron: cronie -params: # run脚本可以接受的环境变量参数,以下为样例 - runtime: - type: timedelta - doc: length of time, with optional human readable time unit suffix - example: 1d/1h/10m/600s - ioengine: - type: str - values: sync libaio posixaio mmap rdma -results: # parse脚本可以从结果中提取的metrics,以下为样例 - write_bw_MBps: - doc: average write bandwidth - kpi: 1 # weight for computing performance index; negative means the larger the worse -``` - -### 添加job YAML - -一般我们需要主要跑一个type=workload的program,同时再跑一些type=monitor/setup/daemon的programs,加上它们的参数,构成一个完整的测试用例。 我们用一个个的job YAML来描述这些测试用例。 - -所以预定义job YAML大体上可以按workload来组织,放在路径下 - -``` -programs/$workload/jobs/xxx.yaml -``` - -当然也可以按更大粒度来组织,比如场景、测试类型等分类,此时可以放在路径下 - -``` -jobs/$test_scene/xxx.yaml -jobs/$test_class/xxx.yaml -``` - -以上预定义jobs的搜索路径,lkp框架代码都支持。具体path glob pattern是 - -``` -programs/*/jobs/*.yaml -jobs/**/*.yaml -``` - -### 添加程序 - -Job YAML中引用的programs,需要您预先写好,lkp会在如下路径搜索其文信息/脚本: - -``` -1st search path 2nd search path -programs/$program/meta.yaml programs/**/meta-$program.yaml -programs/$program/{run,parse} programs/**/{run,parse}-$program -programs/$package/PKGBUILD programs/**/PKGBUILD-$package -``` - -程序一般添加到 programs/$program/ 目录下,具体添加以下几个脚本 - -``` -programs/$program/meta.yaml # 描述文件 -programs/$program/run # 接收/转换环境变量传过来的参数,运行目标程序 -programs/$program/parse # 解析结果(一般是run的stdout),输出metrics (YAML key/val) -programs/$program/PKGBUILD # 下载编译安装run调用的目标程序 -tests/$program => ../programs/$program/run # 创建符号链接 保持兼容 -``` - -其中PKGBUILD仅必要时添加。parse一般在program type=monitor/workload时才需要。 - -一般一个program一个目录。但有时候client/server类型的测试,把workload+daemon programs放在一起比较方便。 此时可以参照sockperf,把sockperf-server daemon以如下方式添加到sockperf workload目录下: - -``` -programs/sockperf/meta-sockperf-server.yaml -programs/sockperf/run-sockperf-server -``` - -### 添加依赖 - -一个program的依赖表述为 - -``` - programs/$program/meta.yaml - depends: - debian@10: - - $package1 - - $package2 - pkgmap: - debian@10..centos@8: # centos 8不自带$package2,映射为空 - $package2: - - programs/$program/PKGBUILD-$package1 - programs/$program/PKGBUILD-$package2 -``` - -这里定义了两类依赖 1) OS自带的包 2) 需要从源码下载编译的包 当OS包含package1/package2时,lkp框架可自动安装对应的rpm/deb; 如果没有,再使用PKGBUILD-xxx构建出包。 - -例如,在debian 10中,lkp install会执行 - -``` -apt-get install $package1 $package2 -``` - -在在centos 8中,lkp install会执行 - -``` -yum install $package1 -makepkg PKGBUILD-$package2 # 从源码下载编译 -``` - -如您希望强制从源码编译下载,无论所在OS是否包含RPM/DEB包,那么可以通过指定PKGBUILD依赖 - -``` -depends: - PKGBUILD: - - $package1 -``` - -那么lkp install会无条件编译$package1 - -注意,PKGBUILD语义上对应一个package,而不是对应 -program。 这两者语义上不同,虽然很多时候两者内容是一样的。当内容一样时,比如 - -``` -programs/$program/PKGBUILD-$package -``` - -也可以写为简化形式 - -``` -programs/$program/PKGBUILD # when $package=$program -``` - -注意,PKGBUILD文件名及其内部depends/makedepends字段里的$package使用的是archlinux包名。 所以其它OS缺失此包,或者有此包,但是名字不一样的话,需要配置对应的pkgmap包名映射,或者加上OS后缀,比如 - -``` -makedepends_debian_11=(lam4-dev libopenmpi-dev libmpich-dev pvm-dev) -``` - -### 示例-云测工具(compatibility-test) - -1. 在programs 文件夹下创建compatibility-test文件夹,里面至少要包含以下几个文件,其余文件可以根据需求自行决定是否添加 - programs/compatibility-test/jobs/compatibility-test.yaml # 预定义compatibility-test的job,需要与文件夹名字一致 - programs/compatibility-test/meta.yaml # compatibility-test描述文件 - programs/compatibility-test/run # compatibility-test运行脚本 - -2. 文件内容详情 - programs/compatibility-test/jobs/compatibility-test.yaml: - -``` -suite: compatibility-test # 项目介绍 -category: functional # 项目类型(functional是只跑run脚本不会同时拉monitor监控应用,如果想同时使用monitor请写benchmark) - -file_path: /home/lj/test/compatibility_testing/Chinese # run 脚本的输入参数,如果有多个请写在下面compatibility-test:后 -compatibility-test: # run 脚本的输入参数, -# 如果同一参数有多个不同值需要运行,可以按照以下方式参考 -xxx: - parameter1: - - value1 - - value2 - - parameter2: - - value1 - - value2 -``` - -programs/compatibility-test/meta.yaml: - -``` -metadata: - name: compatibility-test # 名字 - summary: A program can run some basic tests # 这个项目的总结 - description: run compatinility test and generate the report # 这个项目的介绍 - homepage: https://gitee.com/openeuler/devkit-pipeline # 项目的网址 -type: workload # 项目类型 -depens: # 项目依赖 -params: # 需要的参数 -results: # 需要对结果进行处理 -``` - -programs/compatibility-test/run: - -``` -# 这个文件是shell脚本,当使用lkp test命令去运行指定yaml的时候会把yaml的参数传入到run 文件中,请根据各自项目自行写此文件 -#!/bin/bash - -set -e -ct_sh_path=${HOME}/.local/compatibility_testing/Chinese/compatibility_testing.sh -cloud_jar=${HOME}/.local/compatibility_testing/cloudTest.jar - -cd ${HOME}/.local/compatibility_testing/Chinese/ -#sh $ct_sh_path - -#java -jar $cloud_jar & -#sleep 15 -#jar_pid=$! -#curl --location --request GET 'http://127.0.0.1:10037/api/v1/report?savePath=/'${HOME}'/.local/compatibility_testing/Chinese/log.json&file=/'${HOME}'/.local/compatibility_testing/Chinese/log.tar.gz' -#kill -9 $jar_pid -cp -rf ${HOME}/.local/compatibility_testing/template.html.bak ${HOME}/.local/compatibility_testing/template.html -cd ${HOME}/.local/compatibility_testing/ -python3 ${HOME}/.local/compatibility_testing/json2html.py -``` - -3. 必要步骤 - 在完成此文件夹的创建后,依然还需要两步操作去让lkp命令找到指定的运行文件 - -``` -# 第一步 运行lkp slpit 命令去分隔jobs里面写的yaml文件,他会根据run文件以来的每个参数不同的输入值分成多个可执行的yaml文件, -例如 -lkp split programs/compatibility-test/jobs/compatibility-test.yaml -# 云测工具会得到输出 programs/compatibility-test/jobs/compatibility-test.yaml => ./compatibility-test-defaults.yaml,当我们每次更新jobs下面的yaml文件的输入参数后都需要重新运行 lkp split命令 -# 当我们lkp run的时候就要运行这个分隔后的yaml文件(在云测工具就是compatibility-test-defaults.yaml) -# 第二步 需要增加一个软连接 - -ln -s xxx/lkp-tests/programs/compatibility-test/run xxx/lkp-tests/tests/compatibility-test -``` - -## 七、FAQ - -### lkp install 遇到的问题 - -1. 报错,系统不支持 - ![](./images/10.PNG) - [解决方式]: - 环境变量中增加 LKP_SRC,路径和$LKP_PATH 一样 - export PATH=$PATH:/home/lj/lkp-tests/sbin:/home/lj/lkp-tests/bin:/home/lj/lkp-tests/sbin:/home/lj/lkp-tests/bin - export LKP_PATH=/home/lj/lkp-tests - export LKP_SRC=/home/lj/lkp-tests \ No newline at end of file diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\270\216gitlab\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.pdf" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\270\216gitlab\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.pdf" deleted file mode 100644 index dacd8febfcbc82e359d3daa7ffbc5d194a447dbd..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\270\216gitlab\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.pdf" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\270\216jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.md" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\270\216jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.md" deleted file mode 100644 index f8d986b1e1f2b96d5dcabc9f443c4df2e87e159b..0000000000000000000000000000000000000000 --- "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\270\216jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.md" +++ /dev/null @@ -1,616 +0,0 @@ -
《devkit 测试平台安装使用以及与Jenkins集成部署指导手册》
- -[TOC] - ------- - -测试平台使用的是lkp test 工具,以下均已lkp test描述测试平台 - -## 一. 云测工具介绍 - -lkp test是运行云测工具描述验证应用在鲲鹏服务器上的运行情况的必要依赖 - -云测工具是用来运行兼容性测试和可靠性测试的应用 - -| 兼容性测试 | 通过待测试应用软件在鲲鹏环境启动前后资源波动异常检测、验证应用软件启动和停止,自动检测应用软件在鲲鹏平台上的可运行性、兼容性问题。 | -| ----- | ---------------------------------------------------------------------- | -| 可靠性测试 | 通过待测试应用软件在稳定运行期间的系统资源内存的波动异常检测、在异常终止测试场景检测应用运行,自动评估应用软件在鲲鹏平台上的稳定性和可靠性。 | - -## 二. 安装指导 - -可以使用一键部署工具去部署,如果只想单独部署测试平台可以按照以下操作(请用有root权限的用户去安装) - -### 1. 下载依赖 - -请前往发行版,下载gem_dependencies.zip, lkp-tests.tar.gz以及compatibility_testing.tar.gz 三个压缩包并将其上传到服务器上 - -### 2. 安装yum 依赖,gems依赖以及编译lkp tests - -### (1)yum源配置 - -请配置everything的yum源 -[https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/ISO/aarch64/](https://repo.huaweicloud.com/openeuler/openEuler-20.03-LTS/ISO/aarch64/) - -运行 - -``` -yum install -y git wget rubygems -``` - -### (2) 安装gems和编译lkp tests - -请去代码仓拷贝 component/LkpTests/install.sh到服务器上 - -``` -# 第14,15 行 - lkp_tar=/tmp/devkitdependencies/lkp-tests.tar.gz - gem_zip=/tmp/devkitdependencies/gem_dependencies.zip - -# 请修改为这两个文件上传后的绝对路径地址 -``` - -运行这个脚本执行安装 - -### (3) 安装后校验 - -``` -which lkp -``` - -看是否能找到lkp应用 - -### (4)测试是否安装成功 - -```shell -lkp help -lkp install -``` - -### 3.安装云测工具 - -直接解压缩compatibility_testing.tar.gz到${HOME}/.local就行 - -## 三. 添加项目至lkp tests测试平台(云测工具已完成添加,无需再次添加,以下仅用来介绍如何再lkp tests里面添加项目) - -如果想要添加别的项目请按照下方指导,无需重安云测工具 - -### (1) 极简版项目添加,示例-云测工具(compatibility-test已完成添加) - -以下所有文件夹在安装完lkp-tests 文件夹下面,如果使用一键部署工具则在${HOME}/.local下面 - -1. 在programs 文件夹下创建compatibility-test文件夹,里面要包含以下几个文件,其余文件可以根据需求自行决定是否添加 - -programs/compatibility-test/jobs/compatibility-test.yaml # 预定义compatibility-test的job,需要与文件夹名字一致 - -programs/compatibility-test/meta.yaml # compatibility-test描述文件 - -programs/compatibility-test/run # compatibility-test运行脚本 - -2. 文件内容详情 - -programs/compatibility-test/jobs/compatibility-test.yaml: - -``` -suite: compatibility-test # 项目介绍 -category: functional # 项目类型(functional只跑用户自己写的run脚本) - -compatibility-test: # run 脚本的输入参数,此为极简版,默认用户的run脚本里面写了从哪里接收参数,无需通过 lkp 命令读取,只需保留与文件件相同的名字(compatibility-test:)即可 -``` - -programs/compatibility-test/meta.yaml: - -``` -metadata: - name: compatibility-test # 名字 - summary: A program can run some basic tests # 这个项目的总结 - description: run compatinility test and generate the report # 这个项目的介绍 - homepage: https://gitee.com/openeuler/devkit-pipeline # 项目的网址 -type: workload # 项目类型,极简版保持一直就行 -depends: # 项目依赖,极简版默认用户知道自己运行脚本需要哪些依赖已经安装好,无需在运行lkp命令时安装,为空即可 -params: # 需要的参数极简版默认用户在run脚本里处理参数,为空即可 -results: # 需要对结果进行处理,默认用户在run脚本里处理结果,为空即可 -``` - -programs/compatibility-test/run: - -``` -# 这个文件是run脚本本质是一个shell脚本,此示例是用来运行云测平台的脚本,因为项目依赖,参数读取和结果处理均在run脚本里处理了,所以无需上面的文件中无任何添加 - -#!/bin/bash - -set -e -ct_sh_path=${HOME}/.local/compatibility_testing/Chinese/compatibility_testing.sh -cloud_jar=${HOME}/.local/compatibility_testing/cloudTest.jar - -cd ${HOME}/.local/compatibility_testing/Chinese/ -sh $ct_sh_path - -java -jar $cloud_jar & -sleep 15 -jar_pid=$! -curl --location --request GET 'http://127.0.0.1:10037/api/v1/report?savePath=/'${HOME}'/.local/compatibility_testing/Chinese/log.json&file=/'${HOME}'/.local/compatibility_testing/Chinese/log.tar.gz' -kill -9 $jar_pid -cp -rf ${HOME}/.local/compatibility_testing/template.html.bak /${HOME}/.local/compatibility_testing/template.html -cd ${HOME}/.local/compatibility_testing/ -python3 ${HOME}/.local/compatibility_testing/json2html.py -``` - -3. 必要步骤 - 在完成此文件夹的创建后,依然还需要两步操作去让lkp命令找到指定的运行文件 - -``` -# 第一步 运行lkp slpit 命令去分隔jobs里面写的yaml文件,他会根据run文件以来的每个参数不同的输入值分成多个可执行的yaml文件, -例如 -lkp split programs/compatibility-test/jobs/compatibility-test.yaml -# 云测工具会得到输出 programs/compatibility-test/jobs/compatibility-test.yaml => ./compatibility-test-defaults.yaml,当我们每次更新jobs下面的yaml文件的输入参数后都需要重新运行 lkp split命令 -# 当我们lkp run的时候就要运行这个分隔后的yaml文件(在云测工具就是compatibility-test-defaults.yaml) -# 第二步 需要增加一个软连接 - -ln -s xxx/lkp-tests/programs/compatibility-test/run xxx/lkp-tests/tests/compatibility-test -``` - -### (2) 带参数版项目添加,示例-云测工具(compatibility-test已完成添加) - -1. 在programs 文件夹下创建compatibility-test文件夹,里面要包含以下几个文件,其余文件可以根据需求自行决定是否添加 - -programs/compatibility-test/jobs/compatibility-test.yaml # 预定义compatibility-test的job,需要与文件夹名字一致 - -programs/compatibility-test/meta.yaml # compatibility-test描述文件 - -programs/compatibility-test/run # compatibility-test运行脚本 - -2. 文件内容详情 - -programs/compatibility-test/jobs/compatibility-test.yaml: - -``` -suite: compatibility-test # 项目介绍 -category: functional # 项目类型(functional只跑用户自己写的run脚本) - -compatibility-test: # run 脚本的输入参数 - parameter1: - - value1 - - value2 - - parameter2: - - value1 - - value2 - # 示例 - file_path: ${HOME}/.local/compatibility_testing/Chinese/compatibility_testing.sh -``` - -programs/compatibility-test/meta.yaml: - -``` -metadata: - name: compatibility-test # 名字 - summary: A program can run some basic tests # 这个项目的总结 - description: run compatinility test and generate the report # 这个项目的介绍 - homepage: https://gitee.com/openeuler/devkit-pipeline # 项目的网址 -type: workload # 项目类型,极简版保持一直就行 -depends: # 项目依赖,极简版默认用户知道自己运行脚本需要哪些依赖已经安装好,无需在运行lkp命令时按照为空即可 -params: # 需要的参数 - file_path: -results: # 需要对结果进行处理,默认用户在run脚本里处理结果,为空即可 -``` - -programs/compatibility-test/run: - -``` -#!/bin/bash - -set -e -ct_sh_path=${file_path} -cloud_jar=${HOME}/.local/compatibility_testing/cloudTest.jar - -cd ${HOME}/.local/compatibility_testing/Chinese/ -sh $ct_sh_path - -java -jar $cloud_jar & -sleep 15 -jar_pid=$! -curl --location --request GET 'http://127.0.0.1:10037/api/v1/report?savePath=/'${HOME}'/.local/compatibility_testing/Chinese/log.json&file=/'${HOME}'/.local/compatibility_testing/Chinese/log.tar.gz' -kill -9 $jar_pid -cp -rf ${HOME}/.local/compatibility_testing/template.html.bak /${HOME}/.local/compatibility_testing/template.html -cd ${HOME}/.local/compatibility_testing/ -python3 ${HOME}/.local/compatibility_testing/json2html.py -``` - -3. 必要步骤 - 在完成此文件夹的创建后,依然还需要两步操作去让lkp命令找到指定的运行文件 - -``` -# 第一步 运行lkp slpit 命令去分隔jobs里面写的yaml文件,他会根据run文件以来的每个参数不同的输入值分成多个可执行的yaml文件, -例如 -lkp split programs/compatibility-test/jobs/compatibility-test.yaml -# 云测工具会得到输出 programs/compatibility-test/jobs/compatibility-test.yaml => ./compatibility-test-defaults.yaml,当我们每次更新jobs下面的yaml文件的输入参数后都需要重新运行 lkp split命令 -# 当我们lkp run的时候就要运行这个分隔后的yaml文件(在云测工具就是compatibility-test-defaults.yaml) -# 第二步 需要增加一个软连接 - -ln -s xxx/lkp-tests/programs/compatibility-test/run xxx/lkp-tests/tests/compatibility-test -``` - -## 四、 如何配置以及使用兼容性测试工具-云测工具 - -要运行云测平台需要配置参数,在安装目录${HOME}/.local/compatibility_testing/Chinese/compatibility_testing.conf - -```abap -################################################################################## -#功能描述: 提供给用户进行兼容性测试、性能测试的指标日志采集工具 -#版本信息: 华为技术有限公司,版权所有(C) 2020-2022 -#修改记录: 2022-08-17 修改 -#使用方法:自动化采集开始前,请用户先配置compatibility_testing.conf, -# 填写待测试应用名称application_names, -# 待测试应用启动命令start_app_commands, -# 待测试应用停止命令stop_app_commands -# 被测应用软件的压力测试工具启动命令start_performance_scripts, -# 确认填写后 -# CentOS/中标麒麟/SUSE/openEuler:使用root用户执行,sh compatibility_testing.sh。 -# Ubuntu/银河麒麟/UOS:使用root用户执行,bash compatibility_testing.sh。 -# 多节点集群部署,在每台节点服务器上配置对自身节点和其他所有节点的SSH免密登录。并在控制节点(主节点)执行脚本。 -################################################################################### - - -# 可通过ps或者docker top 命令CMD所在列查找后台进程名称, Kubernetes集群环境下填写Pod名称。 -application_names= test1 # 待测试应用软件进程名称,多个应用名称以逗号隔开。(必填) -# 待测试应用软件启动命令,多个应用的启动命令以逗号隔开。 -start_app_commands= nohup python3 xxx/test1.py & # 如果是多行命令请写到脚本里,由脚本拉起,如果命令不是后台运行,请添加nohup参数变成后台运行(必填) -# 空载采集时间 -idle_performance_time=1 # 在应用运行前后会对当前环境进行性能采集,填写采集时间(整数最小为1,必填,不要加空格,) -# 待测试应用软件停止命令,多个应用的停止命令以逗号隔开。 -stop_app_commands= # 如果应用有停止命令可以写上去,如果没有会根据进程名杀掉进程(非必填) -# 被测应用软件的压力测试工具启动命令。 -start_performance_scripts= nohup python3 xxx/test3.py & # -# 被测应用软件的压力测试工具运行时间(分钟)。 -start_performance_time=1 # 如果写了压力测试工具启动命令,那么这个运行时间是必填的,用户要根据自己的压力测试工具能运行多久或者想测试多久去写时间(不要加空格, 整数最小为1) -# Kubernetes集群填写"Y"。其他环境可置空。 -kubernetes_env= - -# 以下为多节点集群部署填写,单机(单节点)部署不需要填写。 -# 集群环境的IP地址列表,多个IP地址以逗号隔开,列表不应包括当前脚本所在服务器IP地址,请勿增加。 -cluster_ip_lists= - -# 以下为Validated认证测试填写,Compatible认证测试不需要填写。 -# CVE漏洞扫描目录,多个目录以逗号隔开,Validated认证测试有自己的CVE漏洞检查工具不需要填写。 -# 集群环境下, 非当前脚本所在服务器的目录填写为"IP:目录", 如192.168.2.2:/root/tomcat -cve_scan_path= -# clamav防病毒扫描目录,多个目录以逗号隔开,Validated认证测试有自己的商用杀毒软件不需要填写。 -# 集群环境下, 非当前脚本所在服务器的目录填写为"IP:目录", 如192.168.2.2:/root/tomcat -clamav_scan_path= - -# 以下为HPC应用方案认证填写,HPC应用测试填写"Y",其他应用认证测试可置空。 -hpc_certificate= - -# 以下为C/C++编译的应用填写,请填写待测试应用二进制文件的绝对路径。 -binary_file= -``` - -之后如何运行请看pipeline实例代码 - -## 五、Jenkins Pipeline 中集成lkp test (以云测工具(compatibility-test)为示例) - -请确保运行的用户有root权限 - -### 1 groovy 代码 - -```groovy -stage('lkp test') { - steps { - script{ - echo '====== lkp test ======' - sh ''' - CURDIR=$(pwd) - cp -rf /xxx/compatibility_testing/template.html.bak /xxx/compatibility_testing/template.html - sudo lkp run /xxx/lkp-tests/programs/compatibility-test/compatibility-test-defaults.yaml - cp -rf /xxx/compatibility_testing/compatibility_report.html $CURDIR - ''' - sh(script: "sudo bash /xxx/compatibility_testing/report_result.sh", returnStdout:true).trim() # 这个是用于判断lkp 命令后生成的结果是否符合预期,需要根据不同的run脚本生成的结果文件去做不同的结果判断结果 - - } - } - post { - always { - publishHTML(target: [allowMissing: false, - alwaysLinkToLastBuild: false, - keepAll : true, - reportDir : '.', - reportFiles : 'compatibility_report.html', - reportName : 'compatibility test Report'] - ) - } - } - } -``` - -### 2 创建流水线 - -![创建Pipeline任务01](./images/创建Pipeline任务01.png)![创建Pipeline任务02](./images/创建Pipeline任务02.png)![创建Pipeline任务03](./images/lkp-test适配jenkins流水线添加代码.png) ----- - -### 3. 执行任务 - -![执行任务](./images/lkp-test立即构建.png) - ----- - -### 4. 查看任务执行状态 - - ![传统方式查看任务执行状态](./images/lkp-test查看任务状态.png) - ----- - -### 5. 查看报告 - -![传统方式查阅报告](./images/lkp-test查看报告.png) - -### 6. lkp test报告内容(以云测工具(compatibility-test)为示例) - - ![源码迁移报告](./images/lkp-test报告内容.png) - ----- - -## 六、lkp test 添加测试用例全部功能介绍 - -### 样例 - -如下目录中的文件,完整的添加了一个典型的测试用例memtier: - -``` -programs/memtier/jobs/memtier-dcpmm.yaml # 在job YAML里指定想跑的programs/params -programs/memtier/jobs/memtier.yaml # 可以预定义很多的jobs -programs/memtier/meta.yaml # memtier描述文件 -programs/memtier/PKGBUILD # memtier下载编译 -programs/memtier/run # memtier运行脚本 -programs/memtier/parse # memtier结果解析 -``` - -如果加的program type属于monitor/setup脚本,则需要放到对应的monitors/, setup/目录下,而非programs/目录。 集中存放monitor/setup脚本,有利于他人查找和复用。 - -其中jobs/下的YAML文件,定义了memtier的各种常见运行参数、及与其它脚本的组合。 用户要跑其中的一个测试组合,典型步骤如下 - -``` -# 把job YAML从矩阵描述形式分解为一系列原子任务 -$ lkp split memtier-dcpmm.yaml -jobs/memtier-dcpmm.yaml => ./memtier-dcpmm-1-cs-localhost-0-8-1-1-65535-never-never.yaml -jobs/memtier-dcpmm.yaml => ./memtier-dcpmm-1-cs-localhost-0-24-1-1-65535-never-never.yaml - -# 安装依赖,包括安装meta.yaml里depends字段描述的软件包,以及调用PKGBUILD -$ lkp install ./memtier-dcpmm-1-cs-localhost-0-8-1-1-65535-never-never.yaml - -# 运行任务,会调用其中指定的各run脚本,结果保存到/lkp/result/下一个新建的目录里 -# 结束后自动运行各parse脚本,提取各结果指标并汇集到stats.json -$ lkp run ./memtier-dcpmm-1-cs-localhost-0-8-1-1-65535-never-never.yaml -``` - -### 概述 - -一个测试用例一般涉及如下部分 - -``` -1) 基本信息说明 # meta.yaml metadata部分 -2) 安装哪些依赖 # meta.yaml depends字段 -3) 下载编译一些程序 # PKGBUILD脚本 -4) 对所在环境做哪些设置 # run脚本 (type=setup) -5) 监控系统的一些状态 # run脚本 (type=monitor) -6) 运行哪些程序,以什么参数运行 # run脚本 (type=workload) -7) 怎么解析结果,抽取度量指标 # parse脚本 -``` - -为了实现最大的灵活性、可复用性,我们以job-program-param三层模型来组织测试用例。 一个job YAML的典型内容为 - -``` -monitor_program1: -monitor_program2: -... -setup_program1: - param1: - param2: -setup_program2: - param1: -... -workload_program1: - param1: -workload_program2: - param1: - param2: -``` - -其中每个脚本只做一件事,这样组合起来会很灵活和强大。monitor/setup programs的可复用性就很好。 - -用户跑一个用例的入口是job,可以自己书写job,也可以使用jobs/目录下预定义的job。 当运行一个job时,lkp会找到job中指定的各类programs,以指定的params key/val为环境变量,执行各program。 确切的规则如下 - -``` -# job YAML 内容 - - $program: - param1: val1 - param2: val2 - -# lkp install job 执行的伪代码 - - find programs/$program/meta.yaml or - programs/**/meta-$program.yaml - - for each package in meta YAML's depends field: - check install package RPM/DEB - if OS has no such package: - find programs/$package/PKGBUILD or - programs/**/PKGBUILD-$package - makepkg for the first found one - -# lkp run job 执行的 shell 伪代码 - - # run - export param1=val1 - export param2=val2 - find programs/$program/run or - programs/**/run-$program - run the first found one, redirecting stdout/stderr to $RESULT_ROOT/$program - # parse - run its parse script < $RESULT_ROOT/$program | dump-stat to $RESULT_ROOT/$program.json - unite all $RESULT_ROOT/$program.json to $RESULT_ROOT/stats.json -``` - -### 添加meta.yaml描述文件 - -一个meta.yaml文件描述一个program,其结构如下 - -``` -metadata: - name: # 程序名 - summary: # 单行描述 - description: # 多行/多段详细描述 - homepage: # 脚本所调用程序的上游项目的主页URL -type: # monitor|setup|daemon|workload -monitorType: # one-shot|no-stdout|plain -depends: - gem: # ruby gem 依赖 - pip: # python pip 依赖 - ubuntu@22.04: # ubuntu 22.04的DEB包依赖 - openeuler@22.03: # openeuler 22.03的RPM包依赖 -pkgmap: # 各OS之间的包名映射,这样我们可以在depends里指定一个OS的完整依赖列表,通过少量包名映射来支持其它OS - archlinux..debian@10: - debian@10..openeuler@22.03: # 以下为两个样例 - dnsutils: bind-utils - cron: cronie -params: # run脚本可以接受的环境变量参数,以下为样例 - runtime: - type: timedelta - doc: length of time, with optional human readable time unit suffix - example: 1d/1h/10m/600s - ioengine: - type: str - values: sync libaio posixaio mmap rdma -results: # parse脚本可以从结果中提取的metrics,以下为样例 - write_bw_MBps: - doc: average write bandwidth - kpi: 1 # weight for computing performance index; negative means the larger the worse -``` - -### 添加job YAML - -一般我们需要主要跑一个type=workload的program,同时再跑一些type=monitor/setup/daemon的programs,加上它们的参数,构成一个完整的测试用例。 我们用一个个的job YAML来描述这些测试用例。 - -所以预定义job YAML大体上可以按workload来组织,放在路径下 - -``` -programs/$workload/jobs/xxx.yaml -``` - -当然也可以按更大粒度来组织,比如场景、测试类型等分类,此时可以放在路径下 - -``` -jobs/$test_scene/xxx.yaml -jobs/$test_class/xxx.yaml -``` - -以上预定义jobs的搜索路径,lkp框架代码都支持。具体path glob pattern是 - -``` -programs/*/jobs/*.yaml -jobs/**/*.yaml -``` - -### 添加程序 - -Job YAML中引用的programs,需要您预先写好,lkp会在如下路径搜索其文信息/脚本: - -``` -1st search path 2nd search path -programs/$program/meta.yaml programs/**/meta-$program.yaml -programs/$program/{run,parse} programs/**/{run,parse}-$program -programs/$package/PKGBUILD programs/**/PKGBUILD-$package -``` - -程序一般添加到 programs/$program/ 目录下,具体添加以下几个脚本 - -``` -programs/$program/meta.yaml # 描述文件 -programs/$program/run # 接收/转换环境变量传过来的参数,运行目标程序 -programs/$program/parse # 解析结果(一般是run的stdout),输出metrics (YAML key/val) -programs/$program/PKGBUILD # 下载编译安装run调用的目标程序 -tests/$program => ../programs/$program/run # 创建符号链接 保持兼容 -``` - -其中PKGBUILD仅必要时添加。parse一般在program type=monitor/workload时才需要。 - -一般一个program一个目录。但有时候client/server类型的测试,把workload+daemon programs放在一起比较方便。 此时可以参照sockperf,把sockperf-server daemon以如下方式添加到sockperf workload目录下: - -``` -programs/sockperf/meta-sockperf-server.yaml -programs/sockperf/run-sockperf-server -``` - -### 添加依赖 - -一个program的依赖表述为 - -``` - programs/$program/meta.yaml - depends: - debian@10: - - $package1 - - $package2 - pkgmap: - debian@10..centos@8: # centos 8不自带$package2,映射为空 - $package2: - - programs/$program/PKGBUILD-$package1 - programs/$program/PKGBUILD-$package2 -``` - -这里定义了两类依赖 1) OS自带的包 2) 需要从源码下载编译的包 当OS包含package1/package2时,lkp框架可自动安装对应的rpm/deb; 如果没有,再使用PKGBUILD-xxx构建出包。 - -例如,在debian 10中,lkp install会执行 - -``` -apt-get install $package1 $package2 -``` - -在在centos 8中,lkp install会执行 - -``` -yum install $package1 -makepkg PKGBUILD-$package2 # 从源码下载编译 -``` - -如您希望强制从源码编译下载,无论所在OS是否包含RPM/DEB包,那么可以通过指定PKGBUILD依赖 - -``` -depends: - PKGBUILD: - - $package1 -``` - -那么lkp install会无条件编译$package1 - -注意,PKGBUILD语义上对应一个package,而不是对应 -program。 这两者语义上不同,虽然很多时候两者内容是一样的。当内容一样时,比如 - -``` -programs/$program/PKGBUILD-$package -``` - -也可以写为简化形式 - -``` -programs/$program/PKGBUILD # when $package=$program -``` - -注意,PKGBUILD文件名及其内部depends/makedepends字段里的$package使用的是archlinux包名。 所以其它OS缺失此包,或者有此包,但是名字不一样的话,需要配置对应的pkgmap包名映射,或者加上OS后缀,比如 - -``` -makedepends_debian_11=(lam4-dev libopenmpi-dev libmpich-dev pvm-dev) -``` - -## 七、FAQ - -### lkp install 遇到的问题 - -1. 报错,系统不支持 - ![](./images/10.PNG) - [解决方式]: - 环境变量中增加 LKP_SRC,路径和$LKP_PATH 一样 - export PATH=$PATH:/home/lj/lkp-tests/sbin:/home/lj/lkp-tests/bin:/home/lj/lkp-tests/sbin:/home/lj/lkp-tests/bin - export LKP_PATH=/home/lj/lkp-tests - export LKP_SRC=/home/lj/lkp-tests diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\270\216jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.pdf" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\270\216jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.pdf" deleted file mode 100644 index 64b88cba6fd6e66fefd1b4091d734773349d261f..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/devkit\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262\344\270\216jenkins\351\233\206\346\210\220\351\203\250\347\275\262\346\214\207\345\257\274\346\211\213\345\206\214.pdf" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/1.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/1.png" deleted file mode 100644 index 943fe91dbb4cec2ba8005088e33db05eb530613d..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/1.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/10.PNG" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/10.PNG" deleted file mode 100644 index 25391052206466be6e8fe429a56ec184bab35a58..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/10.PNG" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/2.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/2.png" deleted file mode 100644 index 0de8034bd5a350cfdf62a080568286d40618ce24..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/2.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/3.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/3.png" deleted file mode 100644 index 474c186fb04465bdcb4e719dea9d5fd63305b9f0..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/3.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/4.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/4.png" deleted file mode 100644 index 1c99fe49e97ed27881dd39f49433753b57ce2455..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/4.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/5.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/5.png" deleted file mode 100644 index 09b4306427e19c11e283feceb0818ecd8e0061ad..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/5.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/6.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/6.png" deleted file mode 100644 index 3a372b7a909e79e82ece86a360364a8ba2da71df..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/6.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/7.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/7.png" deleted file mode 100644 index f392c8fe0dcae7a9d08e3b06a6997336ba052d16..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/7.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/8.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/8.png" deleted file mode 100644 index f392c8fe0dcae7a9d08e3b06a6997336ba052d16..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/8.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/9.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/9.png" deleted file mode 100644 index c3831bbae08c59c0d79e456537a30663bc00dd43..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/9.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\256.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\256.png" deleted file mode 100644 index 615b146abe2dcc85d872d9314fbff84074b866e0..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\256.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2562.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2562.png" deleted file mode 100644 index 96a2cb8d5d83ae93b8c1ff3cff01f5bf7291d08f..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2562.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2563.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2563.png" deleted file mode 100644 index 47ad73400149fdfc2334f9eab9d46198a5136ce8..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2563.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2564.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2564.png" deleted file mode 100644 index 9f6f67001db7faeb51f93abd7d4ffcc77188ef17..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2564.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2565.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2565.png" deleted file mode 100644 index 6fc5ac3e780ffb249a8fc1aae1a4b315674a25ba..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/gitlab\345\210\233\345\273\272\351\241\271\347\233\2565.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/image.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/image.png" deleted file mode 100644 index 8f7927e1471e7f0f2d7bbc2f31884cc06438ab8a..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/image.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/lkp-test\346\212\245\345\221\212\345\206\205\345\256\271.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/lkp-test\346\212\245\345\221\212\345\206\205\345\256\271.png" deleted file mode 100644 index c00d53b857b8f6ad5bc9ca83dde9473293143050..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/lkp-test\346\212\245\345\221\212\345\206\205\345\256\271.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/lkp-test\346\237\245\347\234\213\344\273\273\345\212\241\347\212\266\346\200\201.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/lkp-test\346\237\245\347\234\213\344\273\273\345\212\241\347\212\266\346\200\201.png" deleted file mode 100644 index c439426324eb66f413fea47095b883629f78d868..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/lkp-test\346\237\245\347\234\213\344\273\273\345\212\241\347\212\266\346\200\201.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/lkp-test\346\237\245\347\234\213\346\212\245\345\221\212.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/lkp-test\346\237\245\347\234\213\346\212\245\345\221\212.png" deleted file mode 100644 index a79e1b245327f8c7826bed52f8f5c39177f6c9b5..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/lkp-test\346\237\245\347\234\213\346\212\245\345\221\212.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/lkp-test\347\253\213\345\215\263\346\236\204\345\273\272.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/lkp-test\347\253\213\345\215\263\346\236\204\345\273\272.png" deleted file mode 100644 index 795abdef9237b26336088bc642d2bce642b1541b..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/lkp-test\347\253\213\345\215\263\346\236\204\345\273\272.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/lkp-test\351\200\202\351\205\215jenkins\346\265\201\346\260\264\347\272\277\346\267\273\345\212\240\344\273\243\347\240\201.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/lkp-test\351\200\202\351\205\215jenkins\346\265\201\346\260\264\347\272\277\346\267\273\345\212\240\344\273\243\347\240\201.png" deleted file mode 100644 index b0a05cbb72bb386a83f755fcbfc6bc317a3cf634..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/lkp-test\351\200\202\351\205\215jenkins\346\265\201\346\260\264\347\272\277\346\267\273\345\212\240\344\273\243\347\240\201.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24101.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24101.png" deleted file mode 100644 index 68322ea0bd37c61eda6f4d24fad1a9588878188a..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24101.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24102.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24102.png" deleted file mode 100644 index d59c9c50f5eebef0ac575e98cbcffa152c3c1a9f..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24102.png" and /dev/null differ diff --git "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24103.png" "b/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24103.png" deleted file mode 100644 index ff9bf5aa0a936e30d9e42e39d69624eb0850a4e4..0000000000000000000000000000000000000000 Binary files "a/document/\346\265\213\350\257\225\345\271\263\345\217\260\345\256\211\350\243\205\351\203\250\347\275\262/images/\345\210\233\345\273\272Pipeline\344\273\273\345\212\24103.png" and /dev/null differ diff --git "a/document/\347\216\257\345\242\203\345\207\206\345\244\207.pdf" "b/document/\347\216\257\345\242\203\345\207\206\345\244\207.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..177ffa105de6fce6a4c25acb1b93112805997a1f Binary files /dev/null and "b/document/\347\216\257\345\242\203\345\207\206\345\244\207.pdf" differ diff --git "a/document/\351\203\250\347\275\262\345\267\245\345\205\267.pdf" "b/document/\351\203\250\347\275\262\345\267\245\345\205\267.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..23eb7bbadcf0c9e106bae00adaf39e02e59419d9 Binary files /dev/null and "b/document/\351\203\250\347\275\262\345\267\245\345\205\267.pdf" differ diff --git "a/document/\351\231\204\345\275\225.pdf" "b/document/\351\231\204\345\275\225.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..a3ca29c654effea83ce2076d27ea7372ef09fa5f Binary files /dev/null and "b/document/\351\231\204\345\275\225.pdf" differ