メモ
遅ればせながら(?)、Circle CIからGitHub ActionsにHexo使ったブログのビルド・公開を移行する、と思い立ち、 このブログ生成ではPandocなどを利用していることから、独自のコンテナ環境があるとよいかと思い、調査。 Pandocインストールを含むDockerfileを準備し利用することにした。
◆理由
- Pandoc環境を含む、GitHub Actionがなさそうだった
- デプロイまで含めたActionがほとんどだったが、ビルドとデプロイを分けたかった(デプロイ部分は他の取り組みと共通化したかった)
Docker コンテナのアクションを作成する を参考にアクションを作成し、登録する。 またHexo環境の作成については、 heowc/action-hexo が参考になった。
GitHub Actionで用いられるDockerfile等の作成
Docker コンテナのアクションを作成する を参考に以下のファイルを作成する。 なお、 dobachi/hexo-pandoc-action に該当するファイルを置いてある。
1 | [dobachi@home HexoPandocDocker]$ ls -1 |
Dockerfile
Dockerファイル内では依存するパッケージのインストール、Pandocのインストールを実施。 NPMの必要パッケージインストールは、entrypoint側で実施するため、ここでは不要。
1 | [dobachi@home HexoPandocDocker]$ cat Dockerfile |
action.yml
最低限の設定のみ使用。
1 | [dobachi@home HexoPandocDocker]$ cat action.yml |
entrypoint.yml
npmパッケージの依存パッケージをインストールし、HTMLを生成する。
1 | [dobachi@home HexoPandocDocker]$ cat entrypoint.sh |
GitHub Actionの設定
パーソナルトークンの生成
予め、GitHubの設定からパーソナルトークンを生成しておく。後ほど使用する。
GitHub Actionを動かしたいレポジトリのAction用トークンを設定する。
ここでは PERSONAL_TOKEN という名前で設定した。
内容は、先に作っておいたもの。
ワークフローの設定ファイル作成
GitHub Actionを使ってビルドするHexoブログのレポジトリにて、
.github/workflows/gh-pages.yml を生成する。
ここではプライベートのレポジトリで作成したHexo原稿をビルドし、 パブリックなGitHub Pages用レポジトリにpushする例を示す。
1 | [dobachi@home memo-blog-text]$ cat .github/workflows/gh-pages.yml |