ようへいの日々精進XP

よかろうもん

2022 年 01 月 19 日 (水)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

ランオフ。仕事が早朝からだったので、ヘトヘトで何も出来なかった。

レアジョブ

お休み。明日は、7:30 から val 先生。

歯医者

5 年振りくらいに歯医者に歯石取りに行った。生まれてから歯医者に行くのは通算で 5 〜 6 回くらい。虫歯は見られない感じ、歯石はそれなりに溜まっていたらしく、歯科衛生士さんに頑張ってもらって除去して頂いた。色々とカウンセリング的なものもやっていて好印象な歯医者さんだった。

夕飯

2022 年 01 月 18 日 (火)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

ランオフ。仕事の息抜きで YouTube で学んだ内転筋やら股関節周りを鍛える補強をやったりした。走ってもいないのに右のお尻周りや股関節に痛みがあって辛い。

レアジョブ

val 先生が 19 時から取れたので急遽レッスン。間が空いてしまったので、復習で以前に学んだレッスンをリクエストしたら、val 先生がイラッとした感じだったのが気になった。そして、ディスカッションではグダグダだった 😳

夕飯

2022 年 01 月 17 日 (月)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

ランオフ。今日も内転筋やら股関節周りを鍛える筋トレとストレッチを YouTube を見ながらやってみた。

レアジョブ

ブックマークに登録した先生がなかなか予約が取れない。辛い。

夕飯

2022 年 01 月 16 日 (日)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

今日もランオフ。ちょっと内転筋やら股関節周りを鍛える筋トレとストレッチを YouTube を見ながらやってみた。

レアジョブ

今日は二人の新しい先生でレッスン。プロフィール写真が郷ひろみ似の JAY 先生と常に笑顔な Kevin 先生。郷先生 (JAY 先生) はトークが早すぎてついていけず...アタフタしてしまった。Kevin 先生は正蔵先生と似た感じで雑談を交えたレッスンがとても楽しかった。

夕飯

今宵も鍋。豆腐を入れ過ぎて湯豆腐とお鍋くらいの量になってしまって、最後はオエッとなってしまうくらい食べた。おごちそうさまでした。

renovate と composer を使って WordPress プラグインを管理

について、週末試した内容を簡単にまとめてブログに認めた。

inokara.hateblo.jp

renovate と composer を用いて、WordPress のプラグイン運用をモダンにしたい 〜 モダンっていったい何だろう 〜

追記

WordPress 本体やプラグインは、管理画面で設定 (有効化) することで自動的に更新させることが出来る。

inokara.hateblo.jp

プラグインの場合には、Enable auto-updates をクリックすることで自動更新を有効化出来る。(WordPress 5.8.3 にて確認)

f:id:inokara:20220117082908p:plain

WordPress 本体の場合には、Switch to automatic updates for maintenance and security releases only. をクリックすることで、自動更新を有効化出来る。(WordPress 5.8.3 にて確認)

f:id:inokara:20220117083238p:plain

はじめに

YAMAP では、WordPress で構築されたサイトをいくつか運用している。WordPressWordPress 本体とその機能を拡張するプラグインで構成されており、これらのバージョンアップ等の運用をどのように簡素化していくかが課題となっていた。(WordPress だけで自動更新を有効化することが出来るが、勝手にバージョンアップされるのは怖いし、WordPress やそのプラグインは Dockerfile で管理されている為、自動更新の機能は利用しない前提)

この課題に対して、自前のシェルスクリプトと CircleCI のスケジュールビルドを利用した WordPress 本体やプラグインの最新バージョンリリースを自動的に検知して通知する仕組みが稼働している。この仕組みにより、最新のバージョンがリリースされたことを認知し、アップデートの作業を行うことが出来ている。

一方で、この仕組みは、独自のシェルスクリプトで実装されている為、このシェルスクリプトのメンテナンスが必要になり、近い将来、「負の遺産」となってしまうことから、もっと、メンテナンスフリーな実装が無いかを調査を進めていたところ、 mizzy さんより、renovate という、各種言語やライブラリを自動でアップデートしてくれるツールを教えて頂いた。

この renovate と PHP のパッケージ管理システムである composer を組み合わせて WordPressWordPress プラグインの管理を自動化してみることにした。尚、ここでの「自動化」とは、最新のバージョンがリリースされた際に、対象のリポジトリにて、バージョン更新のプルリクエストを作成されるまでを「自動化」とする。

renovate とは

github.com

renovate とは、ドキュメントの冒頭に以下のように解りやすく書かれているので、そのまま引用させて頂く。

Renovate (通称: Renovate Bot)は、自動化するためのオープンソースツールです。

* リポジトリ (Public/Private 問わず) 内の依存関係の検出
* アップデート可能な新しいバージョンがあるかどうかのチェック
* 変更を適用するためのコミットや Merge/Pull Request を作成し、リリースノートを表示する

Github Apps やコマンドラインツール、Docker イメージ等で提供されており、簡単に手元で試すことが出来る。

尚、renovate の datasource 以下に、各種パッケージの情報を取得する為の実装が収められており、サポートされていないパッケージがあれば独自に追加することが出来る。(はず)

composer とは

composer とは、PHP のライブラリマネージャである。

getcomposer.org

composer.json という定義ファイルに依存関係等を記載する。デフォルトのリポジトリ (https://packagist.org) 以外にもサードパーティ製のリポジトリを登録することが出来る。今回、WordPressプラグインやテーマを扱っている https://wpackagist.org といるリポジトリを利用することになる。

簡単に検証

WordPress

Dockerfile

WordPress は、Docker を利用して構築するものとして、まず、以下のような Dockerfile を利用した。

FROM wordpress:5.8.3

# 依存するコマンドをインストール
RUN apt-get update && apt-get -y install wget unzip

# composer.json で管理しているプラグインをインストールする
# composer のインストールについては省略
WORKDIR /usr/src
ADD composer.json /usr/src/composer.json
RUN composer install

尚、Docker イメージのタグについても、renovate によって検知することが可能なので、WordPress の Docker イメージがリリースされると renovate によって Pull Request (以後、PR) が作成される。

composer.json

WordPressプラグインについては、composer.json に定義する。

{
    "name": "example/example-wordpress",
    "description": "Example WordPress site",
    "repositories":[
        {
            "type":"composer",
            "url":"https://wpackagist.org",
            "only": [
                "wpackagist-plugin/*",
                "wpackagist-theme/*"
            ]
        }
    ],
    "require": {
        "wpackagist-plugin/classic-editor":"1.6.0"
    },
    "extra": {
        "installer-paths": {
            "/usr/src/wordpress/wp-content/plugins/{$name}/": ["type:wordpress-plugin"]
        }
    },
    "config": {
        "allow-plugins": {
            "composer/installers": true,
            "wpackagist-plugin/*": true
        }
    }
}

これらをリポジトリに push しておく。

renovate 側

Docker (docker-compose)

renovate は Docker イメージとしても提供されている為、以下のような docker-compose.yml を作成した。

version: "3.9"
    
services:
  renovate-development:
    image: renovate/renovate 
    tty: true
    command: bash

これを、以下のように実行して Docker 環境を起動する。

$ docker-compose up -d

renovate のバージョン番号を確認する。

$ docker-compose exec renovate-development renovate --version
31.26.1

プラグインの更新

renovate を以下のように実行する。

$ export PLATFORM=github
$ export GITHUB_COM_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
$ export GITHUB_REPO=your-account/repo
$ docker-compose exec renovate-development renovate \
  --platform $PLATFORM \
  --token $GITHUB_COM_TOKEN \
  $GITHUB_REPO

以下のように出力される。

 INFO: Repository started (repository=your-account/repo)
       "renovateVersion": "31.26.1"
 INFO: Dependency extraction complete (repository=your-account/repo)
       "baseBranch": "master",
       "stats": {
         "managers": {
           "composer": {"fileCount": 1, "depCount": 1},
           "dockerfile": {"fileCount": 1, "depCount": 1}
         },
         "total": {"fileCount": 2, "depCount": 2}
       }
 INFO: Branch created (repository=your-account/repo, branch=renovate/wpackagist-plugin-classic-editor-1.x)
       "commitSha": "2755501"
 INFO: PR created (repository=your-account/repo, branch=renovate/wpackagist-plugin-classic-editor-1.x)
       "pr": 9,
       "prTitle": "Update dependency wpackagist-plugin/classic-editor to v1.6.2"
 INFO: Repository finished (repository=your-account/repo)
       "durationMs": 31138

composerdockerfile が検出されており、今回は、WordPress プラグインclassic-editor のバージョンが最新のバージョンではない (最新バージョンは 1.6.2) 為、PR が作成されていることが分かる。

リポジトリを見ると、以下のような PR が作成されている。

f:id:inokara:20220116194416p:plain

Package 列の wpackagist-plugin/classic-editor をクリックすると classic-editor の公式サイトにアクセスされる。このあたりの情報収集は、renovate がよしなにやってくれている。

あとは、この PR を確認して、必要に応じてマージして、CI/CD 環境等で composer update することでプラグインが更新される。

また、今回は、WordPress の Docker イメージを利用しており、この Docker イメージの最新タグがリリースされると、先のプラグインと同様に、下図の通り、PR が作成される。

f:id:inokara:20220116194443p:plain

ということで

renovate を使うことで、リポジトリ内の各種パッケージの最新バージョンを検知して、必要な情報を収集し、プルリクエスト作成までを自動化出来ること解った。また、WordPressプラグインについても、従来は、パッケージマネージャを利用しておらず、一つずつ取得して unzip で展開ということをやっていたが、composer というエコシステムの肩に乗っかることで、プラグイン自体をコードで管理することが出来るようになり、更に renovate でバージョンを適切に管理出来るようになったのはとても良い体験だった。

最後に

「モダン」っていったい何だろう?

2022 年 01 月 15 日 (土)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

以前に一度だけ診てもらった病人に駆け込んだ。レントゲンやら MRI を撮ってもらって、結局は右足の股関節の炎症 (水が溜まっている) とのことで、とりあえず、30 日間はランオフすることにした。医師からは、走る頻度と距離を落とせと言われたけど、そんなん今までも試行錯誤してきた結果がこれなので、思い切って休む感じ。しゃあない、しゃあない。

下図は、MRI の画像を写メしてきたもの。

f:id:inokara:20220116000157p:plain

f:id:inokara:20220116000220p:plain

レアジョブ

今日はお休み。

夕飯

今宵も鍋。胡麻豆乳鍋で、シメの雑炊まで美味しゅうございました。

2022 年 01 月 14 日 (金)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

走りはじめから右足が以前のように痛くなってしまって 40 分で止めた。その後、ダウン代わりのエアロバイク。明日、病院に行こうかなと思う。

レアジョブ

今日はお休み。最近、val 先生やら正蔵先生の予約が取れないのが辛い。

夕飯

2022 年 01 月 13 日 (木)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

朝、エアロバイクを 70 分ほど。タバタ式を入れようと思ったけど、3 セット目で止めてしまった。

レアジョブ

今朝、7 時から val 先生だった。なんだか会話が噛み合わない感じで辛かった。

夕飯

美味しゅうございました。

JAWS-UG 福岡もくもく会

jaws-ug-kyushu.doorkeeper.jp

AWS 関係ないけど、mizzy さんに教えて頂いた renovate について、どうやって、各ライブラリのバージョンを収集しているのか気になっていたので、ソースコードリーディングをしてた。

https://github.com/renovatebot/renovate/tree/main/lib/datasource 以下に、各ライブラリバージョンの情報収集に関する実装が詰まってた。しかも、TypeScript で。TypeScript の時点で個人的に詰んでいる状況なんだけど、良い勉強になった。

2022 年 01 月 12 日 (水)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

完全休養。股関節周りの筋トレをやってお茶を濁した。

レアジョブ

更に今日もおやすみ、明日は 7 時から val 先生。

夕飯

今夜は鍋。俺たちの Sunny PB 商品である坦々鍋汁を使ったけど、これがまたシメまで最高な美味しさだった。リピート確定。

美味しゅうございました。

連日の頭痛

今日も頭痛が続いていて辛い。右の背中から肩にかけて頭が引っ張られているような痛み。なんだかななあ。

2022 年 01 月 11 日 (火)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている。色が濃くなれば濃くなる程強度が高い (歩行、走行距離が長い) ということで。実装の詳細はこちら

ジョギング

休養エアロバイク 60 分。

ちょっち、左膝が気になる。右足も痛いけど。

レアジョブ

今日もおやすみ。

夕飯