GitHub Actions で Hexo デプロイの自動化

Uncategorized
606 words

GitHub ActionsHexo のデプロイを自動化します。

環境

  • Windows 11 Home 22H2
  • Node.js v18.16.0
  • hexo-cli: 4.3.1

はじめに

今回は2つのリポジトリが必要になります。

  • Hexo プロジェクト用のプライベートリポジトリ。GitHub Actions でデプロイの自動化を設定する。
  • GitHub Pages で公開する用のパブリックリポジトリ。ビルドされたブログが自動でプッシュされる。

準備

事前に Hexo でブログを作成しておきます。

1
2
3
4
5
npm install hexo-cli -g
hexo init blog
cd blog
npm install
hexo server

手順

個人用アクセストークン

Hexo から GitHub Pages にデプロイするため、個人用アクセストークンを取得します。このアクセストークンがあれば、パスワード不要でデプロイできるようになります。

GitHub > Settings > Developer Settings のページを開き、Generate new token で新規トークンを作成します。

  • Expiration: No expiration を選択。有効期限切れしないように。
  • Select scopes: repo を選択。プライベートリポジトリを操作するため。

作ったトークンわ後ほど使うのでメモしておきます。管理は厳重にして、絶対に公開しないでください。

プロジェクトのデプロイ設定

Hexo のプロジェクトに hexo-deployer-git パッケージを追加します。

1
npm install hexo-deployer-git --save

_config.yml に GitHub へのデプロイ情報を記載します。 *** の部分は先ほど取得したアクセストークンにを貼ってください。

1
2
3
4
5
6
7
8
# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:
type: git
repo: https://**********@github.com/noitaro/hexo-deploy-example.git
branch: main
name: noitaro
email: 52857466+noitaro@users.noreply.github.com

デプロイ先のリポジトリは事前に作っておきます。中身はカラで大丈夫。

ここまでのデプロイ設定ができたら、リポジトリはプライベートで GitHub にプッシュします。

GitHub Actions

GitHub Actions で自動化のワークフローを設定をします。

新規で deploy.yml を作成して、次のワークフローをコピペします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
name: Deploy

on: [push]

jobs:
build:
runs-on: ubuntu-latest
name: A job to deploy blog.
steps:
- name: Checkout
uses: actions/checkout@v2

# Caching dependencies to speed up workflows. (GitHub will remove any cache entries that have not been accessed in over 7 days.)
- name: Cache node modules
uses: actions/cache@v1
id: cache
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install Dependencies
if: steps.cache.outputs.cache-hit != 'true'
run: npm ci

- name: Configuration environment
run: |
sudo timedatectl set-timezone "Asia/Tokyo"
- name: Hexo deploy
run: |
npm install -g hexo-cli
npm install
npm run clean
npm run build
npm run deploy

このワークフローは、GitHubリポジトリ内でプッシュイベントが発生するたびに、ブログのビルドとデプロイを実行します。また、依存モジュールのキャッシュを利用することで作業の高速化を図っています。

GitHub Pages

最後に、デプロイされたリポジトリを GitHub Pages で公開します。