本地GitLab runner自动编译Airoha项目

0 Preface/Foreword

1 GitLab runner环境

具体情况如下:

  • Gitlab-ruuner运行在wsl 1中的++Ubuntu 18.04++ distro上
  • 专门为GitLab-runner分配了一个用户,名为++gitlab-runner++

2 自动编译

2.1 Permission denied

编译过程中,有两个文件出现权限不允许情况,一个是dsp/build.sh 文件,一个是mcu/build.sh文件。

++解决方法:++

  • 运行过程中通过chmod命令修改文件权限
  • 修改gitlab repo 中文件权限,使用命令++git update-index --chmod=+x FileName++

2.1.1 解决办法

修改仓库中文件权限。(可以通过脚本,一次性将所有的*.sh文件权限修改成可执行)

find ./ -name "*.sh" | xargs git update-index --chmod=+x

2.2 删除文件失败

第二次触发gitlab-runner时,会出现删除out/权限不够。

2.2.1 解决办法

在job完成之后,清除out/

sudo rm -rf ./out

2.3 编译工具链不正确

2.1和2.2中的问题解决后,出现了新的问题,最终编译还是失败,DSPMCU都没有编译通过。

2.3.1 DSP编译失败

失败案例中关键LOG

成功案例中关键LOG

开发环境搭建时候,编译工具链是安装在: /home/andy/airoha_sdk_toolchain 路径下。

2.3.2 MCU编译失败

失败案例LOG

成功案例LOG

2.4 解决工具链问题

2.4.1 MCU工具链

因为gitlab-runner instance使用的是用户gitlab-runner,而不是博主默认用户andy,Airoha的编译工具链安装,没有把安装路径暴露给环境变量PATH,并且工具安装时是使用andy用户安装。

尝试过的验证:

  1. 在gitlab-runner主目录下,用andy用户,编译工程,DSP & MCU都失败;
  2. 将gitlab-runner主目录下的项目,拷贝到andy的目录下,DSP&MCU编译成功;
  3. CI/CD yml,中,参考第二个实验的方式,DSP编译失败,MCU编译成功。DSP编译失败的原因,编译工具链路径不正确。

以下为第3个实验修改和编译结果:

2.4.2 DSP工具链

根据2.4.1可知道,切换项目build路径,MCU的工具链使用正确,但是DSP的工具链(是不是跟License有关?不确定???)还是不正确,那么只剩下一种可能,用户使用不当。

++解决方法:++

  • gitlab-runner服务安装时候,指定用户为Ubuntu distro默认用户,即andy。(为了消除其他因素干扰,uninstall Ubuntu distro,然后re-install Ubuntu distro。)
  • 指定andy为gilab-runner service用户方法为,sudo gitlab-runner install --user=andy --working-directory=/home/andy

Please see the below screenshot in more detail

++NOTE:++

  • 编译完成后,生成的目标文件approximate 400M bytes (0.4 G)
  • 整个编译时间approximate 2 mins (1min45s).

2.5 Miscellaneous (杂项)

2.5.1 gitlab-runner中下载的项目copy到其他文件夹

gitlab-runner中下载的项目:/home/andy/builds/VhvsZA15/0/Solgaard/Headphones/AB1571AM-Firmware (++提交代码后,触发gitlab-runner,自动下载项目代码++)

++正常编译的路径++:

  • /mnt/c/
  • /mnt/d/

++编译失败路径++:

  • /home/andy/Airoha_dev_env_setup (该路径也不能正常编译MCU,与预期有出入。/home/andy/Airoha_dev_env_setup/bta_sdk,默认的实例代码可以编译成功)
  • /home/andy/
  • /home/
  • /mnt/
  • /mnt/wsl/

2.5.2 d盘git clone下载下来的代码拷贝到其他文件夹

所有路径都能编译。

3 CI/CD yml异常汇总

3.1 打包文件失败

WARNING: out: no matching files. Ensure that theartifact path is relative to the working directory.

3.2 自定义包名替代异常

WARNING: invalid artifact name: unexpected command substitution at 1:20

++yml配置++:

++包名++:_CI_PROJECT_NAME-cat___BUILD_VERSION_FILENAME.zip

相关推荐
d3126975101 个月前
自建Gitlab和Gitlab runner并推送镜像到Harbor
docker·gitlab·harbor·cicd·gitlab-runner
IM魂影2 个月前
gitlab-runner安装部署CI/CD
ci/cd·gitlab-runner
流月up4 个月前
gitlab之cicd的gitlab-runner集成-dockerfile构建环境
ci/cd·gitlab·dockerfile·离线安装·cicd·gitlab-runner
柒君6 个月前
centos7.5安装gitlab-runner,配置CI/CD流水线
git·ci/cd·gitlab·gitlab-runner
最美dee时光9 个月前
在k8s中将gitlab-runner的运行pod调度到指定节点
kubernetes·gitlab-runner