Laminarとは
Laminarはシンプルかつ軽量なCIツールです。機能が最小限に抑えられておりLaminarを使うために覚えることはほとんどありません。LaminarはWebUIなどを提供するデーモンであるlaminard
とジョブをキックするためのlaminarc
コマンドの2つから構成されます。
WebUIはジョブの実行状況や履歴の表示だけであり一切の設定は行えず、ジョブの実行はlaminarc
コマンドからしか行えないというとても尖った設計ですが、個人レベルや小規模なプロジェクトで使う分にはシンプルでよさそうということで、今回Raspberry Pi 4Bにインストールしてみました。
Laminarのインストール
FedoraのパッケージにLaminarは含まれていないので、今回はGitからソースコードをダウンロードしてきて自前でコンパイルしました。Fedora Serverでは開発ツールがデフォルトで入っていないので、最初にgit
とcmake
をインストールしておきました。
$ sudo dnf install git
$ sudo dnf install cmake
gitのインストールが出来たら下記のようにソースコードをダウンロードします。
$ git clone https://github.com/ohwgiles/laminar.git
この時点で依存しているライブラリがいろいろと不足している気がしますが、一旦cmake
を実行してみます。
$ cd laminar
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..
すると、そもそもコンパイラが入っていなくて怒られてしまうのでgcc
とg++
をインストールします。
$ sudo dnf install gcc gcc-c++
再度cmake
を実行すると今度はライブラリ等が不足していて怒られてしまうので、エラーメッセージを見ながら都度下記のようにライブラリ等をインストールしました。
$ sudo dnf install capnproto-devel
$ sudo dnf install capnproto
$ sudo dnf install sqlite-devel
$ sudo dnf install zlib-ng-compat-devel
再度cmake
を実行すると成功してMakefile
が生成されました。make
してみますが、CMakefilesにかかれていなかった依存関係があるようで、さらに下記のようにライブラリを追加でインストールしました。
$ sudo dnf install boost-devel
$ sudo dnf install rapidjson-devel
再度make
を実行し、コンパイルが完了しました。laminarのインストールとサービスの起動を行います。
$ sudo make install
$ sudo systemctl start laminar
ここでも失敗しました。今回はソースからのインストールなのでlaminar
ユーザの作成とLaminar用のディレクトリの作成も必要なようです。下記のように作成しました。
$ sudo useradd laminar
$ sudo mkdir /var/lib/laminar
再度サービスの起動を行います。また、サービスの自動起動設定も行っておきます。
$ sudo systemctl start laminar
$ sudo systemctl enable laminar
ポート8080でWebUIにアクセスできます。外部からもアクセスできるようにポートを開放しておきます。
$ sudo firewall-cmd --add-port=8080/tcp --permanent
$ sudo firewall-cmd --reload
外部からもWebUIにアクセスできるようになりました。ジョブ用のディレクトリも作成しておきます。
$ cd /var/lib/laminar
$ mkdir -p cfg/jobs
/var/lib/laminar/cfg/jobs以下に実行権限を付与したシェルスクリプトなどを置くことでジョブを作成することが出来ます。あとはlaminarc
コマンドでジョブを実行するだけです。
少し使ってみた感想
別記事で書こうと思っていますが、感想を少しだけ書いておきます。以前はJenkinsをRaspberry Pi 4Bにインストールして運用していましたが、Raspberry Pi 4Bだと力不足なのかWebUIの反応がいまいちでした。Laminarはシンプルで軽量なのでWebUIもきびきび動いています。また、Jenkinsだと実現方法に迷うことが多々ありましたが、LaminarはLinuxの知識でどうとでもできるのでほとんど迷うことがありません。Laminarが面倒を見てくれる部分は少ないですが、個人や小規模プロジェクトにはよいのではないかと思っています。
まとめ
本記事ではFedora 40 Serverを搭載したRaspberry Pi 4BにLaminarをインストールした際の流れを記載しました。Laminarを使った事例なども今後書いていきたいと思います。
コメント