摘要
暑期参与了在树莓派上部署compass-CI的开源项目,该项目可被拆解为4个子任务,分别是:
- 测试机pxe启动
- 服务器端部署
- 串口日志收集
- power reset
目前已经完成了第一个子任务,现在准备完成第二个子任务:compass-CI的服务器端部署。
本文主要描述在服务前端部署过程中遇到的问题以及解决方案。
部署结果:
在基于raspbian的树莓派上部署compass-CI失败!
原因是运行compass-ci/ sparrow /4-docker/buildall脚本构建容器的过程中遇到类似于下图红框中的问题,求助未果卡壳。
为了完成中期报告(留一点时间整理文档)不得不停止在运行raspbian的树莓派上的部署compass-CI的工作,既:宣告第二步“服务器端部署”失败。
注意:本文档只针对使用raspbian lit 系统的树莓。
- Compass-CI服务端部署文档阅读
Compass-CI是一个开源项目,可以通过compass-CI/sparrow/install-tiny进行部署,首先阅读其内容针对树莓派的特点进行针对性的修改。
其内容为:
#!/bin/bash
# SPDX-License-Identifier: MulanPSL-2.0+
# Copyright (c) 2020 Huawei Technologies Co., Ltd. All rights reserved.
# For your reference only.
# It's better to run the below scripts step by step.
[[ $CCI_SRC ]] || export CCI_SRC=$(cd $(dirname $(realpath $0)); git rev-parse --sho$
cd $CCI_SRC/sparrow || exit
. 0-package/read-config
0-package/install
1-storage/tiny
1-storage/permission
2-network/br0
2-network/br1
2-network/iptables
2-network/nfs
2-network/cifs
3-code/git
3-code/dev-env
. /etc/profile.d/compass.sh
4-docker/buildall
5-build/ipxe
5-build/os-ready
5-build/register-account
7-systemd/systemd-setup
8-testbox/multi-docker
8-testbox/multi-qemu
-
- 缺少docker和ruby
如果你使用的是Raspberry Pi OS Lite(32-bit)版本的系统,直接运行compass-ci/ sparrow/install-tiny脚本会遇到:缺少docker和rwby环境的问题。
导致这个问题的原因是:
在0-package / install脚本中:
#!/bin/bash
# SPDX-License-Identifier: MulanPSL-2.0+
# Copyright (c) 2020 Huawei Technologies Co., Ltd. All rights reserved.
source /etc/os-release
. $(dirname ${BASH_SOURCE[0]})/os/${ID}
. $(dirname ${BASH_SOURCE[0]})/common
其中的${ID}在树莓派中的raspbian系统下是:raspbian
也就是说,在使用raspbian的树莓派上,这个脚本会去到0-package / os/文件夹下运行名为raspbian的脚本,而在原始的compass-CI的代码中,这个脚本不存在。
0-package / os/中默认的文件有:
图 1 XXX/os/文件夹下的默认文件
这意味着,后续的代码会在依赖没有装全的情况下运行!输出了大量异常报错。
从程序正确性的角度考虑,既然在/os/目录下没有找到部署所必须的系统依赖表,程序应该直接报错并终止运行,而不是让后面的代码继续运行,给出大量没有意义又具有迷惑性的输出结果。
因此文末后续的内容都主要是逐个运行脚本,确定到底缺少那些依赖,并在0-package /os/文件下编写raspbian脚本为运行raspbian的树莓派补全缺少的依赖。
由于直接运行compass-ci/ sparr