0 Preface/Foreword
1 Gitlab-runner配置情况
具体情况如下:
- Gitlab-ruuner运行在wsl 1中的Ubuntu 18.04 distro上
- 专门为GitLab-runner分配了一个用户,名为gitlab-runner
2 自动编译
2.1 找不到编译工具链
根据错误提示,交叉编译工具链未找到。
在CI/CD yml中,
- 增加指令,查看当前用户名,
- 增加指令,显示当前环境变量 (PATH)包含路径
结果显示:
- 用户名:gitlab-runner
- 环境变量PATH没有包含交叉编译工具链路径,/usr/bin/gcc-arm-none-eabi-9-2019-q4-major/bin
原因:在配置交叉编译工具链路径时候,该路径(/usr/bin/gcc-arm-none-eabi-9-2019-q4-major/bin)只在默认用户名中导入(Ubuntu 18.04 distro安装时候,andy用户,路径是/home/andy;而未导入到gitlab-runner用户)
解决方法可以有以下几个:
- gitlab-runner用户中的PATH添加“交叉编译工具链”,(动态添加或者静态添加(在.profile中添加))
- gitlab-runner安装时候,指定用户为andy,而不是新用户gitlab-runner
- gitlab-runner安装时候,指定用户为root,而不是新用户gitlab-runner
2.2 导出编译工具链
如2.1介绍,解决方法有多个,以动态添加交叉编译工具链为例。
在CI/CD yml文件中,用命令添加交叉编译工具链。
#export cross-platform toolchain dynamically
- export PATH=/usr/bin/gcc-arm-none-eabi-9-2019-q4-major/bin:$PATH
- echo $PATH
如下pipeline,解决问题:
2.3 遇到问题时的一些其他思路
在遇到问题时,也有想过一些其他解决思路,即,绕开问题,称为workaround(变通方法)。
因为在本地可以编译成功,想法是,当gitlab-runner下载完成整个工程代码后,将整个工程拷贝到可以编译的路径,然后进行编译,编译完成后,将所需要的bin文件等统一拷贝到原始根目录,然后进行打包。