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を指定してます。
さらにビルドのスクリプトとして以下を指定します。
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でビルドを実行します。
時間をおいて何度か実行すると以下のように変更点が見えて便利。
うまくビルドできたら1日1回など適度な間隔で定期実行しましょう。
これでいつでも最新を追えますね。
初めて記事書いてみたけどこれでいいのかな...?