はじめに
最近、自分が次に何をやるか、何を学ぶかって考えてる時に、やたら目に入ってきたのが「DevOps」って言葉。最初ちょっとググったら、載ってる技術スタックはだいたい知ってるやつばっかで、「あーこれは全栈エンジニアみたいなもんか」って思ってた(まぁ実際ちょっと似てる気もする)
でも興味がなかったから放置してた(というより開発熱が冷めてた)
んで最近、4ヶ月くらい寝転がってて「やば、さすがに動かなきゃ」ってなって、またこの言葉を思い出した。改めて調べてみると……いやこれ、巻き込み力すごくね?フロントエンドとバックエンド分けても人間は一緒だし、今度は開発と運用も分離してるのに人間はやっぱり一緒、みたいな
ただ思い返すと、GitHub Action で自動化できるって話を見た瞬間に、Jekyll の時代を思い出した。あの頃は自動デプロイあったんだよね。でも自分は他のブログから移行してきて、サブフォルダ分類のクセが抜けず、それが対応してなかったから深掘りしなかった。
でも今こそ、その Hugo ブログで自動デプロイできるか試してみたくなったわけ。毎回コンテナから pull してアップロードするの地味にめんどくさいしね
ワークフロー
ワークフローの作成は、Git リポジトリのルートにある .github/workflows/
フォルダに YAML ファイルを置く形で定義する。ファイル名は自由だけど、今回はデプロイだから deploy.yml
にした。
構成は大きく「名前」「トリガー」「ジョブ」の3つ。
名前
ここは適当でいい。とりあえず名前つけるだけ。
|
|
ジョブ
ジョブは複数定義できて、それぞれ並行で動く。今回は一個だけ。
まずジョブ名を決める。
|
|
次にどの OS 上で実行するかを指定。今回は Ubuntu。
|
|
そして具体的なステップ。まずリポジトリのチェックアウト。
|
|
続いて Hugo のセットアップ。
|
|
Hugo サイトのビルド。
|
|
最後に GitHub Pages 用リポジトリに push。
|
|
全部まとめるとこんな感じ:
|
|
トークン設定
他のリポジトリに push するにはトークンが必要。作り方は:
Settings -> Developer Settings -> Personal access tokens -> Fine-grained tokens
に進んで、対象リポジトリに書き込みできるトークンを生成。
そのあとソースリポジトリ(俺の場合は yexca/Blog-Source-Hugo
)の Settings -> Secrets and variables -> Actions
の Repository secrets
に追加。名前はワークフローに書いた通り PERSONAL_TOKEN
にする。
独自ドメインの設定
GitHub Pages を独自ドメインで使うには CNAME
ってファイルにドメインを書いておく必要がある。
でも GitHub Actions でデプロイするとき、既存のファイルが全部削除されて push されるから CNAME
も消える。だからワークフローでファイルを生成する必要がある。
方法は2つ:
- ワークフロー内で
CNAME
を作成:
|
|
- Hugo の
static
フォルダにCNAME
を入れておく(ビルド後そのまま出力される)
テーマモジュールの問題
使ってるテーマが Git SubModule 経由だったから、そのまま push してもリンクだけで中身がない。自分の変更は push されないってこと。
テーマをバックアップ
|
|
SubModule の削除
初期化:
|
|
Git から削除:
|
|
関連フォルダを削除:
|
|
.gitmodules
ファイルも削除:
|
|
テーマを復元
|
|
テストして問題なければバックアップ削除:
|
|
JS エラーの修正
昔書いたブログ稼働時間コードで、古い書き方の 8 進数を使ってたせいで、hugo -minify
したときにエラーが出た。
元のコード:
|
|
修正後:
|
|
結び
やっとローカルでの構築作業から解放された。Docker を使い始めた頃から、ローカル環境と開発環境は分けたいって思うようになって、ずっとコンテナで作業してた。
でも今回で完全にローカルどころかクラウドに全部任せるようになって、もはや “環境潔癖症” を克服したとも言えるかも。
で、改めて DevOps って考えてみると、これも結局、技術の進化が進みすぎた結果なのかもしれない。
昔は機械ごとに環境合わせて、アセンブリ書いて、それが高級言語になって、さらにコンテナで環境障壁が壊れて、どんどん簡単に効率良くなってきた。けど、そのたびに「入門ライン」も引き上がってんだよね。
確かに便利になったけど、同時に「ついていけなきゃ職失うスピード」も速くなってるってわけ。
まあでも、仕事は仕事、生活は生活。技術は早いけど、世界や業界の変化はそこまで速くない……はず。少しくらいは休む余裕もある、よね。