LoginSignup
8
1

More than 3 years have passed since last update.

GitlabとDockerでTOPPERSカーネルのデイリービルドを作ろう

Last updated at Posted at 2020-12-20

もともと

 以前の職場ではデイリービルドの環境が整っていたのですが、いざそうじゃないところに放り込まれると、環境構築ってどうやるのかから始まり、ツールチェーンの組合せをどうするかとか、いろいろ悩みます。
またローカルPCでビルドや動作確認しても、他に展開すると、「○○ Not Foundって言ってきます~」とか言われてしまいます。そんなわけで、環境構築としてのDockerコンテナが魅力を感じシフトしていったわけなのですが、CI・CDの環境としても使えるよねってことで始めました。
 コンテナー環境へシフトする前からJenkinsを使っていたのですが、Jenkins環境もコンテナ化したかったのと、いまの職場にGitlabを導入したのでJenkinsからGitlab runnerに移行しました。

CI/CDの良いところ

OK,NGがはっきりしていて、その結果が通知されることです。
Slackに投げるように設定していますが、さぼってここ数か月Failedで放置していました…
エラーが出たらすぐに直すようにしないと段々腰が重くなります。

image.png

デイリービルドの対象

TOPPERSの第3世代カーネル(ASP3,FMP3,HRP3,HRMP3)のビルドを行います。
すべてがビルドできるターゲット環境はZynq-7000になります。
Gitlab runnerの構築については書きませんので、別途調べてください。Gitlab使わなくてもDocker環境をローカルPCでインストールしても使えます。

Dockerイメージ

ビルド環境のDockerイメージはtoppersjp/armgcc-ubuntuを使います。
すべてを確認していませんが、TOPPERS第3世代のARM系ターゲットの開発環境に対応できていると思います。
QEMUも入れています。(athrillは開発スピードが速いので別パッケージにしています)
DockerファイルはGithubにありますので、カスタマイズしたい方はこちらかForkして使ってください。

.gitlab-ci.yml

こんな感じで書きます。(実際に使用しているファイルから一部変更しています)
gitlab-ciのコマンドはシェルスクリプトとかなり近いので比較的楽に取り掛かれると思います。

image: toppersjp/armgcc-ubuntu:7-2018-q2

stages:
    - build

daily build_asp3:
    stage: build
    tags:
        - ci-asp
    script:
        - wget https://www.toppers.jp/download.cgi/asp3_zybo_z7_gcc-20191009.zip
        - unzip asp3_zybo_z7_gcc-20191009.zip
        - mv asp3_3.5 asp3
        - wget https://www.toppers.jp/download.cgi/tecsgen-1.7.0.tgz
        - tar xfz tecsgen-1.7.0.tgz
        - cp -rf tecsgen-1.7.0/tecsgen/ asp3/.
        - cp -rf cfg asp3/.
        - mkdir -p /home/asp3/obj; cd /home/asp3/obj
        - ../configure.rb -T zybo_z7_gcc
        - make

これで実行するとビルドの確認ができます。

image.png

パイプラインのパスのバッジをREADME.mdにつけてゲットしましょう!

gitlab-ciの場合はmdファイルにこんな感じで記述します。

[![build status](https://(gitlabリポジトリ)/badges/master/pipeline.svg)](https://(gitlabリポジトリ)/commits/master)

image.png

8
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1