コンテンツにスキップ

バージョン管理とコンテンツの更新

バージョン管理

RaspberryPI4に FreeBSD13R を入れ ZFSで遊んでいる。
せっかくなので Gitlab-ceを試してみた。流石に raspi4になると それなりに動く。Gitlab上にSTLを置くとそのままレンダリングされて とても便利だなあと思った。

バージョン管理するには問題ないけれど、SAML認証がバグっていて Keycloakが 使えなくなってしまった。15になって駄目になっている。 DBを使って管理するようになると便利なるけど、引っ越しが大変だ。

そこでもっと軽いのを探したら Gitolite3 が良さげであった。 最初からWEBインターフェイスは考えていない。sshと gitolite3だけ動けば 使える。レポジトリ用のアカウントを作成してセットアップするだけ。

# adduser (gitoadmin)
# su - gitoadmin
$ gitolite setup -pk 管理用のid_rsa.pub 
gitoadmin 配下に

drwx------  6 gitoadmin  gitoadmin      6 Oct 31 10:59 .gitolite
-rw-------  1 gitoadmin  gitoadmin   7130 Oct 31 10:59 .gitolite.rc
-rw-------  1 gitoadmin  gitoadmin     24 Oct 31 11:49 projects.list
drwx------  5 gitoadmin  gitoadmin      5 Oct 31 11:21 repositories

が作成される。 .ssh/authorized_keys には、管理用のpubやコマンドが登録され、sshでアクセス時 実行される。

> ssh gitoadmin@server info

R W    gitolite-admin
R W    testing

こんな感じでリポジトリーが見える。 管理用のプロっジェクトとして gitolite-admin が作成されるので、 git clone して設定を進める。

> git clone gitadmin@server:gitolite-admin.git

>dir
2022/10/31  15:32    <DIR>          conf
2022/11/01  11:10    <DIR>          keydir
これ以降はもっと詳しく正確に書いているサイトがあちこちにあるので参照してもらうと良い。 基本的には、追加ユーザの username.pub を keydir に入れて git add and commit ユーザを追加し、conf/gitolite.confにプロジェクト(リポジトリー)の追加 と権限を書いて add と commit すればプロジェクトが作成される。

あとは、通常の gitと変わらないので使いやすい。

コンテンツの更新

このページのように静的ページの為に dokuwiki を入れてみた。 簡単に Markdown を貼り付けるだけなので便利で、多用していたが、 やっぱし止めた。

Wordpreessはは使ってるだけの人なので詳しくないが、直下にディレクトリー を作成して HTMLを吐き出すだけにした。 Wordpreess の設定は、メニューに カスタムリンクを追加しただけとなる。

吐き出すコンテンツは、 1度だけ git clone して後は、 git pull するだけ となる。

最後に venv で動かす mkdocs build すると、Wordpreessのディレクトリーに 吐き出される。

FreeBSD でも Windows でも同じ仕組みで動く。

mkdocs serve とやるとローカルサーバーが立ち上がって確認できるから 問題なければ、push すれば良い。

gitolite3 や Wordpreessはすべて FreeBSD の Jail上で動いている。   pandoc + TeX も便利だけど、HTMLを吐くのは Pythonの mkdocs + mkdocs-material がとても便利。

Note

と書いていたけど、この組み合わせはとんでもなく便利だった。

gitliteは元々 Gitlab の CI/COでも使われていたそう。今は使わなくなったようだけど。

この辺を読むとやりたいことが理解できるかもしれない。
https://passing.breeze.cc/mt/archives/2015/10/gitolite-hook.html
http://absolutearea.blogspot.com/2014/10/gitolite3-hook.html
https://qiita.com/satotka/items/29f1483f8921d2ecfeab

そう、ローカルでの確認が終わったら、 ローカルコミットして remote pushするだけ になった。
gitolite の post-receive がフックされて git pullしてくれる。
さらに、 venvに activateした後、 mkdocs build が走り、HTMLが自動生成される。

これによってもう一度フックされるが、mkdocsはスルーされ終了する。 gitoliteにはやりたいことが、全て詰まっていた。
作者のページは話題がクルクルしながら書いてあるが、参考になる。