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\267devkitpipeline/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\267devkitpipeline/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" new file mode 100644 index 0000000000000000000000000000000000000000..ffbc39b7964c947f41f387d5e8f62f3aa926682c Binary files /dev/null and "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\267devkitpipeline/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" 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\267devkitpipeline/image-\345\234\250windows\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\267devkitpipeline/image-\345\234\250windows\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" new file mode 100644 index 0000000000000000000000000000000000000000..41cca5e612b9f35fe27bc63602d42eb6dee47e05 Binary files /dev/null and "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\267devkitpipeline/image-\345\234\250windows\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" 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\267devkitpipeline/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\267devkitpipeline/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" new file mode 100644 index 0000000000000000000000000000000000000000..df456730223ff45d99966f8a204f26743a49b1d6 Binary files /dev/null and "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\267devkitpipeline/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" 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\267devkitpipeline/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\267devkitpipeline/image-\346\226\207\344\273\266\345\210\227\350\241\250.png" new file mode 100644 index 0000000000000000000000000000000000000000..36d600b3635d38169451fa2f72a0635ebf2a9d37 Binary files /dev/null and "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\267devkitpipeline/image-\346\226\207\344\273\266\345\210\227\350\241\250.png" 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\267devkitpipeline/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\267devkitpipeline/image-\347\273\204\344\273\266\345\214\205\346\224\276\347\275\256\344\275\215\347\275\256.png" new file mode 100644 index 0000000000000000000000000000000000000000..aac737510da07d1ff8ce045bffadded2a7f9ea83 Binary files /dev/null and "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\267devkitpipeline/image-\347\273\204\344\273\266\345\214\205\346\224\276\347\275\256\344\275\215\347\275\256.png" 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\267devkitpipeline.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\267devkitpipeline.md" new file mode 100644 index 0000000000000000000000000000000000000000..749d6a3f11012c17bb33d8715bbec910d6004957 --- /dev/null +++ "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\267devkitpipeline.md" @@ -0,0 +1,182 @@ +# 批量部署工具devkitpipeline + +获取release包之后,上传至linux服务器并解压,获取文件列表如下图: + +![image-文件列表](image/批量部署工具devkitpipeline/image-文件列表.png) + + + +其中 **`devkitpipeline`** 为一键批量部署工具,与本项目仓库名称相同。`machine.yaml`文件为该工具倚赖的配置文件,具体填写内容说明见下文。`component` 文件夹为各组件包的安装和校验文件,从本项目源码仓库直接复制而来。在无网络环境下 **`download`** 一键下载工具为其提供所需组件包下载能力,windows版本 `download` 工具支持在windows机器上下载组件包。 + + + +## machine.yaml 配置文件 + +源码仓提供该配置文件模板为 + +```yaml +user: root +pkey: /root/.ssh/id_rsa +scanner: + - 192.168.0.1 + - 192.168.0.2 + - 192.168.0.3 +builder: + - 192.168.0.1 +executor: + - 192.168.0.1 +``` + +其中,**`user`**需填写本结点至其他结点配置免密的用户名,**`pkey`**为配置免密所用公钥对应的私钥路径。 + +**`scanner`**,**`builder`**,**`executor`**分别对应用户的扫描机,构建机,执行机,需以yaml列表的形式输入各角色机器对应的ip。 + +- 生成公私钥对的命令为: + +> ```shell +> ssh-keygen [-b bits] [-t dsa | ecdsa | ed25519 | rsa] [-C comment] [-f output_keyfile] +> ``` +> +> 以rsa公私钥对为例,如下即为在当前路径下生成rsa公私钥对的命令: +> +> ```shell +> ssh-keygen -t rsa +> ``` +> +> 在命令行输入上述命令后,命令回显会提示用户输入生成公私钥对所用密码,此处建议用户不输入密码,直接确认。若输入密码则后续批量部署工具在运行时需要用户手动输入密码。 + +- 配置本结点至其他结点免密的命令为: + +> ```shell +> ssh-copy-id USER@REMOTE_HOST +> ``` +> +> USER 替换为远程服务器的用户名,REMOTE_HOST 替换为远程服务器的ip地址。执行完该命令后,会提示输入远程服务器的密码。 +> +> 输入远程服务器的密码后,公钥就会被复制到远程服务器的 authorized_keys 文件中,这样就可以实现无密码登录远程服务器的功能。 + + + +## devkitpipeline 批量部署工具 + +在命令行进入工具所在的文件夹路径,输入如下命令,可以查看该工具的使用提示。 + +```shell +./devkitpipeline -h +``` + +![image-批量部署工具使用提示](image/批量部署工具devkitpipeline/image-批量部署工具使用提示.png) + + + +除 **`-h`** 使用提示参数外,**`devkitpipeline`**批量部署工具还提供 **`-f`**, **`--debug`** 两个参数。 + +- 使用`-f`参数,指定所需yaml配置文件为后续输入的路径。若不使用`-f`参数,批量部署工具会从当前路径下读取名为`machine.yaml`的文件作为yaml配置文件。 `-f`参数别名为`--config`。 +- 使用 `--debug`参数,可以打开批量部署工具的debug日志信息,方便根据命令行日志输出确认哪个环节出现了问题。 + +注:本批量部署工具将标准输出作为日志输出地址,没有生成单独的日志文件。 + + + +#### 使用批量部署工具常用的命令为: + +```shell +./devkitpipeline -f ./machine.yaml --debug +``` + + + +#### 批量部署工具目前支持批量部署 GCCforOpenEuler,BiShengCompiler,BiShengJDK8,BiShengJDK17。 + +各工具下载版本为2024年2月各工具官网提供的最新版,可查看本项目源代码download_dependency工具目录下的 `download_config.py` 文件查看具体下载链接。 + +BiShengJDK8 和 BiShengJDK17 均使用 `update-alternatives` 工具进行配置。默认BiShengJDK8版本优先。 + +部署安装过程中会使用目标结点机器的**`/tmp`**目录作为临时文件所在目录,部署完成后将会删除**`/tmp`**目录下的临时文件。若目标结点机器**`/tmp`**目录磁盘空间不足,则会导致安装失败。 + + + +## download 一键下载工具 + +当批量部署工具所在结点网络不通时,可以使用**`download`** 一键下载工具在有网络环境的机器上先行将所需的组件安装包及校验文件下载下来并打包成 **`devkitdependencies.tar.gz`** 文件,供用户上传至批量部署工具所在结点,供批量部署工具在默认路径加载使用。 + + `devkitdependencies.tar.gz` 文件上传路径为`devkitpipeline` 批量部署工具所在路径。上传完成后目录文件列表如下: + +![image-组件包放置位置](image/批量部署工具devkitpipeline/image-组件包放置位置.png) + +#### 一键下载工具linux版本 + +在有网络环境的linux服务器上,一键下载工具所在路径,执行如下命令,即可在linux机器当前路径下下载组件包。 + +```shell +./download +``` + + + +#### 一键下载工具windows版本 + +一键下载工具提供windows版本,可在windows机器上下载组件包。 + +![image-windows版本一键下载工具](image/批量部署工具devkitpipeline/image-windows版本一键下载工具.png) + +双击该`download.exe` 文件即可在当前目录下下载组件包。下载完成后结果如下: + +![image-在windows机器上下载组件包](image/批量部署工具devkitpipeline/image-在windows机器上下载组件包.png) + + + + + +## 部署结果 + +批量部署工具将各组件安装至用户家目录下的compilers文件夹下(后续会考虑将该文件夹更名为 .local,在用户家目录下隐藏该文件夹)。 + +#### `GCCforOpenEuler` 安装方式: + +批量部署工具将`GCCforOpenEuler`安装包解压至用户家目录下的compilers文件夹下,并在用户的 `~/.bashrc` 文件中新增如下两行命令。用户重新登录服务器后即可查询当前环境所用`gcc`版本。 + +```shell +export GCC_HOME=${HOME}/compilers/gcc-10.3.1-2023.12-aarch64-linux/bin +export PATH=${GCC_HOME}:${PATH} +``` + + + +#### `BiShengCompiler`安装方式: + +批量部署工具将`BiShengCompiler`安装包解压至用户家目录下的compilers文件夹下,并在用户的 `~/.bashrc` 文件中新增如下两行命令。用户重新登录服务器后即可查询当前环境所用`clang`版本。 + +```shell +export BISHENG_COMPILER_HOME=${HOME}/compilers/BiShengCompiler-3.2.0-aarch64-linux/bin +export PATH=${BISHENG_COMPILER_HOME}:${PATH} +``` + + + +#### `BiShengJDK8`安装方式 + +批量部署工具将`BiShengJDK8`安装包解压至用户家目录下的compilers文件夹下,并使用`alternatives`中`install`命令配置java版本。用户重新登录服务器后即可使用如下命令查询或更改当前环境所用`java`版本。 + +```shell +update-alternatives --config java +``` + +```shell +java -version +``` + + + +#### `BiShengJDK17`安装方式 + +批量部署工具将`BiShengJDK17`安装包解压至用户家目录下的compilers文件夹下,并使用`alternatives`中`install`命令配置java版本。用户重新登录服务器后即可使用如下命令查询或更改当前环境所用`java`版本。 + +```shell +update-alternatives --config java +``` + +```shell +java -version +``` +