私は最近、GitHub の Action を利用して、安定して存在し続けるブログを GitHub 上に構築することを決定しました。国内からのアクセスは必ずしも速くはありませんが、常に存在しています。
しかし、従来の方法でブログを GitHub サイトリポジトリにプッシュする場合、これはブログを更新するたびに再度 Git プッシュを行う必要があることを意味します。
もちろん、これはローカル md ファイルでブログを書く人にとってはそれほど問題ではありません。しかし不幸なことに、私はオンラインエディタとして Qexo を自作しており、明らかに従来のデプロイ方法ではうまくいきませんでした。以前はこの問題に悩んでいました。
その後、GitHub Action を使用して Microsoft E5 を更新しているときに、これがまだあることを思い出し、それを使って完全自動デプロイの GitHub ホスティングサイトを構築しました。
ステップ 1 ローカル実行チェック#
デプロイを行う前に、まずサイトがローカルで正常に動作し、正常な静的サイトファイルを生成できることを確認する必要があります。
Hexo ブログをデプロイする(Hexo のデプロイについては Hexo.io の公式ドキュメントを参照してください)
デプロイが完了したら、サイトのルートディレクトリで以下のコマンドを実行します(コマンドは hexo s と省略できます)。
hexo server
http://localhost:4000 にアクセスし、サイトが正常にコンテンツを表示し、正常に動作していることを確認した後、以下のコマンドを実行してサイトの静的ファイルが正常に生成されているかを確認します(hexo clean は省略できませんが、hexo generate は hexo g と省略できます)。
hexo clean && hexo generate
正常に生成できた場合、再度 hexo clean を実行して静的ファイルをクリアし、ローカル実行チェックのステップは完了です。
ステップ 2 設定ファイル#
リポジトリを GitHub にアップロードする方法については、自分で資料を調べてください。ここではアップロード後の関連設定のみを紹介します。
まず、Hexo の設定ファイル config.yml に以下の設定があることを確認してください。
deploy:
type: git
repository: [email protected]:yzsong06/Demo.git
branch: main
ここでの Repository は自分の GitHub Pages リポジトリに設定してください。例えば xxx.github.io、SSH アドレスを使用することに注意してください!
ステップ 3 秘密鍵の生成#
一部のユーザー向け……
- Windows10 ユーザーは、Store で Ubuntu をインストールできます。
- Android ユーザーは、Termux をインストールし、OpenSSH をインストールできます。
- Linux ユーザーは、ええと……Linux を使っているなら理解しているはずです(Doge)。
ssh-keygen -t rsa -b 4096 -C "Hexo Deploy Key" -f github-deploy-key -N ""
これにより、現在のディレクトリに 2 つのファイルが生成されます:
github-deploy-key —— 秘密鍵
github-deploy-key.pub —— 公開鍵
私たちは秘密鍵を Hexo の元ファイルを保存しているコードリポジトリに置き、Actions をトリガーする際に使用します。
公開鍵は GitHub Pages に対応するリポジトリに置き、Action の書き込み権限を有効にして、Hexo デプロイ時の書き込み作業に使用します。
秘密鍵の設定:
- GitHub で Hexo を保存しているリポジトリを開き、Settings -> Secrets -> New secretにアクセスします。
- 次に、名前(Name)の部分にHEXO_DEPLOY_KEYと入力します。
大文字と小文字に注意してください。この後のGitHub Actionsで使用されるため、間違えないようにしてください。 - 次に、Valueの部分にgithub-deploy-keyの内容を入力します。
公開鍵の設定:
- 次に、ウェブページを保存しているリポジトリ、つまり Hexo デプロイ後のリポジトリにアクセスします。例えば:Username.github.io のようなものです。Settings -> Deploy keysにアクセスします。
- Add deploy keyをクリックして新しい公開鍵を追加します。
- タイトルにHEXO_DEPLOY_PUBと入力します。もちろん、他のカスタム名を入力しても構いません。ここはただのメモです。
- キーにgithub-deploy-key.pub ファイルの内容を貼り付けます。
- Allow write accessにチェックを入れて書き込み権限を開きます。そうしないと、リポジトリに書き込めず、デプロイに失敗します。
ステップ 4 ワークフローの作成#
まず、Hexo のリポジトリに新しいファイル **.github/workflows/push.ymlを作成します。
ファイル名は自分で決められますが、必ず.github/workflows** ディレクトリに置いてください。また、Actionの新規作成機能を使用してファイルを作成することもできます。ファイル内容は以下の通りです。
name: サイトデプロイ
on:
push:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [16.x]
steps:
- uses: actions/checkout@v1
- name: Node.js ${{ matrix.node-version }}に設定
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- name: 環境変数の設定
env:
HEXO_DEPLOY_PRI: ${{secrets.HEXO_DEPLOY_PRI}}
run: |
mkdir -p ~/.ssh/
echo "$HEXO_DEPLOY_PRI" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.name "yzsong06"
git config --global user.email "[email protected]"
- name: デプロイ時の実行環境をインストール
run: |
npm i -g hexo-cli
npm i hexo-deployer-git --save
npm i
- name: サイト静的ファイルを生成
run: |
hexo clean && hexo generate
- name: hexo-deployerを使用してサイトをデプロイ
run: |
hexo deploy
ステップ 5 完了#
次にファイルを保存すると、一般的にリポジトリの Action ページでフィードバック結果が表示されます。ジョブに緑のチェックマークが表示されれば、デプロイは成功です!