リンク切れを定期的にチェックする
読んでいるページに貼られているリンクが使えなくなっていると、 少なからず不快な気持ちになってしまうものです。 しかし、リンク切れの確認には時間も手間も掛かるものです。
Jekyllのビルド と リンク切れの確認 を GitLab schedulesで定期実行 することで、 面倒なリンク切れの確認を自動化できます。
現在、使用しているバージョンは下記のとおりです。
- jekyll (4.1.1)
- html-proofer (3.16)
HTML Proofer
Rubyライブラリの HTMLProofer は、 HTMLファイルを検証するためのオールインワンチェッカーです。 リンクの確認をはじめ、画像参照が正当か、ALTタグの確認などの テストが実行できます。
インストール
Gemfile
に以下を追記しbundle install
してインストールします。
# Gemfile
group :test do
gem 'html-proofer', '~> 3.16'
end
テストの実行
Jekyllのビルドを実行し、
bundle exec jekyll build --destination=./_site
生成されたサイトをテストします。
bundle exec htmlproofer ./_site --assume-extention
User-Agent
HTML Prooferのテスト時のUser-Agentです。
Mozilla/5.0 (compatible; HTML Proofer/3.15.3; +https://github.com/gjtorikian/html-proofer)
–typhoeus-configで User-Agentを変更できます。
オプション
HTML Prooferには様々な オプションが 用意されています。なかでも良く使いそうなものを挙げておきます。
--disable-external
: 外部リンクの確認をしないデフォルトではテストのたびに外部リンクの確認を行うので、 繰り返しテストをする時には指定した方が良い。
--allow-hash-href
:href="#"
を無視する<a href="#">Back to top</a>
などでhref="#"
を使用している場合--alt-ignore
:alt
属性の確認をしない (パターンで指定)alt
属性の確認をさせたい 1 が、 アフィリエイトなどのリンクで編集したくない場合--file-ignore
: 特定のパターンのファイルのテストを行わないエラーの修正ができないファイルがある場合。 例えばGoogle Site VerificationのHTMLファイルをテストから除外したいなど
--check-html
: HTMLの整合性のチェックを行う (デフォルトでは行わない)レイアウトの変更を頻繁に行っている場合
GitLab Suchedules
内部リンクなら、ページの名前を変更した時やサイトの構成を変更した時に リンクチェックをすれば良いのでしょうが、外部リンクのリンク切れについては 定期的に確認する他はありませんので、
GitLab Suchedules を使って HTML Prooferを定期的に実行します。
.gitlab-ci.yml
GitLab Suchedulesで実行するJobを.gitlab-ci.yml
に記載します。
image: jekyll/jekyll
variables:
JEKYLL_ENV: production
test:
stage: test
before_script:
- bundle install
- JEKYLL_ENV=$JEKYLL_ENV bundle exec jekyll build --destination=./_site
script:
- bundle exec htmlproofer ./_site --assume-extention
only:
- schedules
Job の登録
リポジトリ 2 のサイドメニューから CI / CD > Schedules を開き、 New schedule でJobの登録ができます。
テストは外部リンクへのアクセスを伴ないますので、他のサイト運営者様に迷惑を かけないように適切な頻度を設定します。
テストの結果
テストに失敗するとGitLabに登録しているメールアドレスに 下記のようなタイトルのメールが届きますので、内容を確認して対応します。
myblog | Pipeline #193175828 has failed for master | ad09b00b
すべてのテストの結果は、リポジトリのサイドメニューから CI / CD > Pipelines で確認できます。
Tag cloud
android (2), bash (1), bitbucket (2), chromebook (2), cifs (1), css (1), docker (1), git (1), gitlab (1), info (1), javascript (3), jekyll (13), markdown (1), nfs (1), nodejs (2), php (2), plugins (5), powerline (1), ruby (1), ssh (1), themes (1), vim (1), windows (1), wordpress (1), wsl (1), xrea (7)