もともと
以前の職場ではデイリービルドの環境が整っていたのですが、いざそうじゃないところに放り込まれると、環境構築ってどうやるのかから始まり、ツールチェーンの組合せをどうするかとか、いろいろ悩みます。
またローカルPCでビルドや動作確認しても、他に展開すると、「○○ Not Foundって言ってきます~」とか言われてしまいます。そんなわけで、環境構築としてのDockerコンテナが魅力を感じシフトしていったわけなのですが、CI・CDの環境としても使えるよねってことで始めました。
コンテナー環境へシフトする前からJenkinsを使っていたのですが、Jenkins環境もコンテナ化したかったのと、いまの職場にGitlabを導入したのでJenkinsからGitlab runnerに移行しました。
CI/CDの良いところ
OK,NGがはっきりしていて、その結果が通知されることです。
Slackに投げるように設定していますが、さぼってここ数か月Failedで放置していました…
エラーが出たらすぐに直すようにしないと段々腰が重くなります。
デイリービルドの対象
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
これで実行するとビルドの確認ができます。
パイプラインのパスのバッジをREADME.mdにつけてゲットしましょう!
gitlab-ciの場合はmdファイルにこんな感じで記述します。
[![build status](https://(gitlabリポジトリ)/badges/master/pipeline.svg)](https://(gitlabリポジトリ)/commits/master)