タイトルのまんまなんですが、一応備忘録として残しておきます。
やったこと
- Hugoで生成したプロジェクトのリポジトリ ( https://github.com/yyYank/memo )の変更を検知して
- GitHub Pages ( https://github.com/yyYank/yyYank.github.io ) にビルドした成果物をデプロイするという
- GitHub Actionsの設定を書いた ( https://github.com/yyYank/memo/blob/master/.github/workflows/deploy.yml )
やりかた
- リポジトリにおもむろに .github/workflowsというディレクトリを作ります
- このディレクトリ内に任意の名前のymlを追加するとGitHub Actionsのタスクスクリプトとして認識されるはずです
使ったマーケットプレースのプラグイン
GitHub Actionsにはマーケットプレースというやつがあります。これで、欲しいものをちょいちょいと選べるのと、GitHubのサイトとフレンドリーでポチポチと進めていけるところがGitHub Actionsのちょっとしたいいところですね。ymlで病むることもあまりない。
今回は
- https://github.com/actions/checkout というリポジトリチェックアウトするベタなaction
- https://github.com/peaceiris/actions-hugo というhugo用のaction
- https://github.com/peaceiris/actions-gh-pages という hugoをGitHub Pagesにデプロイする用のaction
を使いました。頑張る必要もなく、これ見つけた時点で大体イケるだろうなってなりました。
設定の詳細
ymlに書いた通りなので端折りたいとこですが、一応書いてみると
- on で起動タイミングを定義
- 今回はpushがトリガー
- jobsでjobとして動いて欲しいものをそれぞれ書いていく
- 今回はactions/checkoutとactions-hugoとactions-gh-pagesが動いてくれればok
といった感じです。
ハマりどころ
ほぼハマるところはないんですが、
ビルド側に秘密鍵、デプロイ側にデプロイキーとして公開鍵を設定してあげる必要があります。
(secrets.ACTIONS_DEPLOY_KEY という形で記述されてるあたりの話)
ssh-keygen -t rsa -b 4096 -C "$(git config user.email)" -f gh-pages -N ""
って感じで秘密鍵と公開鍵の組み合わせを作ります。
ビルド側、今回でいうと https://github.com/yyYank/memo に秘密鍵を設定します
リポジトリのページのSettings > Secretsで「New Secret」 をポチッとし、 ACTIONS_DEPLOY_KEYという名前にして cat gh-pages | pbcopy
の内容を貼り付けて保存してください。
デプロイ側、今回でいうと https://github.com/yyYank/yyYank.github.io に公開鍵を設定します。 リポジトリのページのSettings > Deploy keysで「Add deploy key」をポチッとし、 (名前適当でいいと思うんですが) Public key of ACTIONS_DEPLOY_KEYという名前にして cat gh-pages.pub | pbcopy
の内容を貼り付けて保存してください。この際に Allow write access
にチェックを入れるのが必須です。デプロイ先に書き込めないからです。
まとめ
ということで、めでたくhugoのドキュメント書いたら自動でデプロイしてgithub.io上で見れるようになるやーつが完成しました。
結構前にこれいじって作ったんですが、備忘録としてブログ書いておきました。
当時のツイート
GitHub Actionsでbuildとdeployできるようになったぞ
— やんく (@yy_yank) July 23, 2020
やった〜
0 件のコメント:
コメントを投稿