3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

FreeBSD-STABLEをJenkins使って追いかける(Git対応)

Posted at

FreeBSDのソースがGitへ移行

先日、FreeBSD開発ソースの管理システムがsubversionからgitへ変更になりました。
これを機にJenkinsを使って、毎晩勝手にソースを更新してビルドしておき、いつでも最新にアップデートできるようにしたいと思いたち、これを書いています。

FreeBSDのソースコードリポジトリの確認

詳しい情報は以下からたどっていき、
https://wiki.freebsd.org/git
こちらの方に記載されています。
https://github.com/bsdimp/freebsd-git-docs/blob/main/URLs.md

一通り目は通しておきましょう。
この記事はstable/12ブランチを使いますが、CURRENTやstable/11を参照する場合は上記のURLを参照してください。

Jenkinsの準備

Jenkinsをインストールします。
pkgがお手軽です。


\# pkg install jenkins

jenkins自体は本題ではないので、細かいところは省略します。
きっと他にいい記事があると思います(他力本願)。
あと、Gitが使えるようにプラグインを入れておきます。

ジョブを作成する

新規ジョブ作成でフリースタイルのジョブを作成して、以下のように設定します。
リポジトリURL: https://git.freebsd.org/src.git
ブランチ: stable/12
また、ワークスペース直下にソースがあるとこの後面倒なので、Checkout to a sub-directoryを追加してサブディレクトリにソースをチェックアウトします。ここではsrcを指定してます。

jenkins-freebsd-git-1.PNG

さらにビルドのスクリプトとして以下を指定します。

jenkins-freebsd-git-2.PNG

export MAKEOBJDIRPREFIX=${WORKSPACE}/obj
HW_NCPU=$(sysctl -n hw.ncpu)
cd ${WORKSPACE}/src
make -j ${HW_NCPU} clean
make -j ${HW_NCPU} buildworld
make -j ${HW_NCPU} buildkernel

CPUコアをフルに使って並列ビルドしたいので、-jオプションでCPUの数を渡します。
ここではsysctlコマンドを使っています。使っているマシンは4コア8スレッドのタイプなので、ここでは8になりますが、sysctlを使うことで、環境に合わせて自動的に並列数が指定できます。

環境変数MAKEOBJDIRPREXでワークスペースの下にビルドしたオブジェクトの出力先ディレクトリを指定します。

MAKEOBJDIRPREXはmakeのオプションとして指定することもできるのですが、それでやるとビルド途中でエラーになることがあるため、環境変数で指定しました。

ビルド

通常通りJenkinsでビルドを実行します。
時間をおいて何度か実行すると以下のように変更点が見えて便利。

jenkins-freebsd-git-3.PNG

うまくビルドできたら1日1回など適度な間隔で定期実行しましょう。
これでいつでも最新を追えますね。


初めて記事書いてみたけどこれでいいのかな...?


3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?