最近、Travis CI を使用して記事を更新した後、投稿時間が更新時間に変わることに気づきました。この問題について考えた結果、Travis CI の自動デプロイに問題があると仮定しました。なぜなら、自動デプロイ後の時間がデプロイ時の時間と一致しているからです。
仮説の検証#
ステップ 1:従来の hexo g および hexo d メソッドを使用してデプロイする#
デプロイが完了した後、投稿時間と更新時間が変化していることがわかりました。投稿時間は Travis CI の自動デプロイが設定された時間であり、更新時間はこの変更後の従来のデプロイ後の時間です。したがって、問題は Travis CI の自動デプロイにあると確認しました。
ステップ 2:Travis CI の自動デプロイファイルを確認する#
Travis CI の自動デプロイファイル .travis.yml
を開いて確認します:
language: node_js
node_js: stable
cache:
directories:
- node_modules
before_install:
- export TZ='Asia/Shanghai' # タイムゾーンを変更
- npm install hexo-cli -g
install:
- npm install
- npm install hexo-deployer-git --save
script:
- hexo clean
- hexo generate
after_script:
- cd ./public
- git init
- git config user.name "xuezheng-wei"
- git config user.email "[email protected]"
- git add .
- git commit -m "Travis CI Auto Updated"
- git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:master
branches:
only:
- hexo
env:
global:
- GH_REF: github.com/xuezheng-wei/xuezheng-wei.github.io.git
hexo generate
の後に直接 hexo deploy
を実行せず、hexo ブランチの public ディレクトリに移動して更新されたファイルを master ブランチに強制的にコミットするため、投稿時間と更新時間を区別できない可能性があります。
ステップ 3:解決策#
.travis.yml
ファイルにhexo deploy
を追加して自動デプロイ時にこのコマンドを実行できるようにする。ただし、hexo deploy
を追加するとアクセスの接続エラーが発生し、トークンの秘密鍵が漏洩するリスクがあるため、処理が複雑になるため、この解決策は採用しません。- 記事を更新する際に、
front-matter
にdate
を追加して投稿日を固定する。 - Travis CI の自動デプロイをキャンセルし、従来の
hexo g
、hexo d
メソッドを使用してアップロードとデプロイを行う。
結論#
Travis CI を使用した Hexo ブログの自動デプロイは、アップロードとデプロイの手順を一部簡略化するものの、hexo clean
、hexo g
、hexo d
などの従来のアップロードとデプロイのコマンドを置き換えるだけであり、効果は限定的です。また、Travis CI の自動デプロイに対する理解が不足しているため、使用に障害がある可能性があります。そのため、元の従来のアップロードとデプロイ手段に戻すことを検討しています。