欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 本地GitLab runner自动编译Airoha项目

本地GitLab runner自动编译Airoha项目

2024/10/24 3:26:54 来源:https://blog.csdn.net/yanlaifan/article/details/140928671  浏览:    关键词:本地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 the artifact 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

 

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com