Jenkins 持续集成国产嵌入式操作系统 RT-Thread 的CI

48c4f1d19a8343675b92eb23a9a09591.png

    我们直接在Jenkins的镜像基础上进行集成RT-Thread 的编译环境, 这样直接使用Shell 命令 最直接了当, 通过 第三方docker等插件, 尝试了计重方案, 没有找到理想中的感觉, 如果其他人有想法可以告知一二。 

我们有现成的镜像, 在文尾会贴出, 但步骤, 我们先讲述一下。

首先 我们建立一个dockerfile , 基于jenkins/jenkins 并将用户设置为root

FROM jenkins/jenkins
USER root
LABEL author maikebing <mysticboy@live.com>
ENV DEBIAN_FRONTEND noninteractive

第二补 , 安装交叉编译环境 以及python , python 不能是 3.x的, 这点务必确保。 同事 git  cppcheck 也需要要。 

RUN apt-get update -y &&  \
    apt-get  install git  scons  wget bzip2 \
    build-essential  libncurses-dev  cppcheck   \
    gcc-arm-none-eabi gdb-arm-none-eabi binutils-arm-none-eabi  qemu-system-arm  python -y &&  \
    apt-get clean -y

试过多种方案, 都无法正常的使用apt 安装 2.7 的pip , 纠结了半个星期, 可以用下面的方式安装。 

RUN   curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py && python2 get-pip.py &&  \
      pip install requests && rm get-pip.py

这一步就是是安装交叉编译环境。 

RUN cd /tmp/ &&  wget -q https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/6-2016q4/gcc-arm-none-eabi-6_2-2016q4-20161216-linux.tar.bz2 && \
    tar xf ./gcc-arm-none-eabi-6_2-2016q4-20161216-linux.tar.bz2 && \
    mv gcc-arm-none-eabi-6_2-2016q4/ /opt/ && \
    rm ./gcc-arm-none-eabi-6_2-2016q4-20161216-linux.tar.bz2 && \
    /opt/gcc-arm-none-eabi-6_2-2016q4/bin/arm-none-eabi-gcc --version 
ENV RTT_EXEC_PATH /opt/gcc-arm-none-eabi-6_2-2016q4/bin/

  stm32刷机程序, 你可以不安装。 

RUN git clone https://git.code.sf.net/p/stm32flash/code stm32flash-code && \
    cd /stm32flash-code && make && mv stm32flash /usr/bin/  && \
    cd / && rm /stm32flash-code  -rf && \
    stm32flash -h

  这里是安装rt-thread的基本环境, evn很烦人, 必须是 %HOME目录下,而且写死的。 其实跟jenkins 的 home目录映射到外面。所以, 我们只能 吧env放在跟目录下。 

RUN git clone https://gitee.com/RT-Thread-Mirror/env.git  /env/tools/scripts && \
    git clone https://gitee.com/RT-Thread-Mirror/packages.git  /env/packages/packages 
RUN  sed -i -e 's/CONFIG_SYS_PKGS_DOWNLOAD_ACCELERATE=y/CONFIG_SYS_PKGS_DOWNLOAD_ACCELERATE=n/g'  /env/tools/scripts/cmds/.config    
ENV  PATH=$PATH:/env/tools/scripts

用户继续改为 jenkins

USER jenkins

构成镜像后, 

下面是docker-compose 的配置信息, 我们构建成功的镜像是 maikebing/rt-thread_linux_env:jenkinsci 

jenkins:
    container_name: jenkins
    hostname: jenkins
    restart: always
    image:  maikebing/rt-thread_linux_env:jenkinsci
    environment:
      TZ: "Asia/Shanghai"
      AVA_OPTS: "-Xmx3g -Xms2G"
    ports:
      - "9095:8080"
      - "50000:50000"
    volumes:
      - ./data/jenkins:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock

 由于jenkins的默认用户home目录是 挂载在外面的, 所以, 每次我们第一个Build Step 要重新连接,并链接env工具路径,并加入路径当中, 最大的原因其实是rt-thread 的 env 工具 写死了 home路径, 而不是某个安装路径。 

rm $HOME/.env
ln  /env $HOME/.env  -s
export PATH=$PATH:$HOME/.env/tools/scripts
ls /var/jenkins_home/.env/tools/scripts

d0eef4b29d968b3ad4072f70deaa9b97.png

第二个Build Step

pkgs --update

edf111f25669bee90e34c01bf0839695.png

第三Build Step 

scons --target=mdk5

423539da09be70241799d21e84f16977.png

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值