デザインを Git と CI で管理する
テンプレートは、レビューできる形にしておくと事故が減ります。 管理画面で直接編集すると、誰がいつ何を変えたのかが MT の更新履歴にしか 残らず、元に戻す作業も手作業になります。
どの経路を採るか
| 向いている場面 | |
|---|---|
templates pull / push | サーバのファイルにアクセスできない。共用・マネージド環境 |
linkToFile | サーバに rsync できる。デプロイ経路が既にある |
| テーマ | サイトを丸ごと作る。同じ設計を複数のサイトに展開する |
以下は pull / push の形です。
1. リポジトリに取り込む
bash
mtb sites templates pull 4 --dir ./templates --profile stg
git add templates && git commit -m "MT のテンプレートを取り込む"templates/
├── mtb-templates.json 種別・出力ファイル名・archiveMaps
├── メインページ.mtml
├── スタイルシート.mtml
└── ...pull は手元のファイルを上書きします
先に commit するか --dry-run で確かめてください。
2. 編集してレビューする
通常のコードと同じく、差分でレビューできます。MT タグの書き方は /mt-template-tags スキル(614タグ・48モディファイア)に任せられます。
反映する前に試せます。 テンプレートを保存せずに評価できるので、使い捨ての テンプレートもサンドボックスも要りません。
bash
mtb sites templates preview 4 --set template.text=@templates/メインページ.mtml \
--set template.type=index --raw 1 --extract preview3. 反映する
bash
mtb sites templates push 4 --dir ./templates --profile stg --yes
mtb sites templates publish 4 76 --profile stg- 変更の無いテンプレートは送信しません。 1つ直しただけで全件にリビジョンが 追加されると、MT の更新履歴が役に立たなくなります
- MT にあって手元に無いテンプレートは変更しません(名前を報告するだけ)
- アーカイブマッピングも pull と push の対象です。マッピングは URL の設計そのものなので、 本文が同じでもマッピングだけ変わっていれば送ります
CI から動かす
CI ではセッションを保存しないほうが簡単です。パスワードを標準入力から 渡してサインインし、そのセッションはその実行の中だけで使います。
yaml
# .github/workflows/deploy-templates.yml(例)
- name: Deploy MT templates
env:
MTB_BASE_URL: ${{ secrets.MTB_BASE_URL }}
MTB_PASSWORD: ${{ secrets.MTB_WEBSERVICE_PASSWORD }}
run: |
mtb auth login --username "${{ secrets.MTB_USERNAME }}" --password-stdin <<< "$MTB_PASSWORD"
mtb sites templates push 4 --dir ./templates --yes
mtb sites templates publish 4 76--password-stdinで渡したパスワードはどこにも残りません。--passwordはプロセス一覧に 残るので、他に方法が無いときだけ使ってください(認証)--yesが要ります。 端末でない環境では確認の入力を受け付けられないので、付けないと 実行せずにエラーになります- 失敗の理由は終了コードで分かります。 3(権限不足)はリトライしても解決しません
静的アセットも一緒に
CSS の画像やフォントは、アセットとしてまとめてアップロードできます。
bash
mtb assets upload --site-id 4 --dir ./dist/theme-images --path /theme-images --replace --yesJavaScript と HTML はアセットにできません
MT の慣例では、スタイルシートと JavaScript はインデックステンプレートです。
bash
mtb sites templates create --site-id 4 \
--set template.name=テーマJS --set template.type=index \
--set template.outputFile=theme.js --set template.text=@dist/theme.js反映の確認まで CI に入れる
bash
mtb sites templates publish 4 76 --verify-publish保存できたことと、サイトに出たことは別です。 --verify-publish は MT のログを見比べ、書き出せていなければ終了コード 8 で失敗します。 CI にこの確認まで入れておくと、誤りのあるテンプレートが見過ごされません。