プライバシーポリシーをちゃんと整備しようと思って作業を始めた。

  • MkDocsを使う
  • リモートリポジトリとしてBitBucketを使う
  • CircleCIでビルド
  • 自分のサーバにデプロイ

という環境を構築した。

MkDocsは特にこだわりがあったわけではないが、まあプライバシーポリシーをmarkdownで書けてHTMLで公開できれば何でも良かった。
軽く触ったところ マテリアルデザインなテーマを簡単に組み込めるのがよい。
デザインに脳みそを割かなくていいのは楽だ。

苦労したのはCircleCIの設定だ。
ローカルではmkdocs serveでレンダリングの確認だけして(おそらく最終的にはそれすらしなくなるだろうけれど)、リモートリポジトリにpush、CircleCIでmkdocs buildして、最後にビルドされたHTMLをscpを使って自分のサーバにアップロードするという方針。

私のサーバはユーザ名+パスワードによる認証は許可していないので、公開鍵認証を使うのだが、この設定がうまくいかなくて困った。

そもそもscpで転送するのに使う鍵のファイルを指定するのにハマった。
add_ssh_keysでCircle CIに登録したSSH認証鍵のフィンガープリントを追加してやる必要があった。
これをしないと、deploy用のスクリプトから認証に使う鍵が参照できない。

そこをクリアしたら今度は別の問題でハマる。
Circle CIからscpで自分のサーバに接続する際に、Are you sure you want to continue connecting (yes/no)?で止まってしまうのである。
known_hostsにないからというのは分かるが、どうやってそれを登録するのかというのがわからなかった。
なんとも頭のわるいやり方ではあるが、以下の方法で乗り越えた。

  1. ssh経由のデバッグを利用してCircle CIにログイン
  2. sshコマンドを使って手動でログインを行いknown_hostsに登録
  3. 登録される文字列をCircle CIの環境変数に保存
  4. 該当文字列をknown_hostsに追記するスクリプトをscpコマンド実行前に追加

何かもっとちゃんとしたやり方があるような気がするのだが、私の英語力では解決策を見つけることができなかった。
まあデプロイは無事にできるようになったので、文書の中身を練るとしよう。

ご意見はこちらまで