Upgrade to Pro — share decks privately, control downloads, hide ads and more …

それ makeで出来るよ / PHPerKaigi2021-LT-Make

take_3
March 28, 2021

それ makeで出来るよ / PHPerKaigi2021-LT-Make

PHPerKaigi2021 LT資料です。
https://fortee.jp/phperkaigi-2021/proposal/95e16a49-35f9-47ac-85bb-cc390d324c56

皆さん、開発・運用では様々なツール、コマンドを駆使していると思います。
また、利用者もエンジニア、デザイナ、QAなど多様で、環境もローカル開発用PC、ステージング/本番サーバなど用途に応じてOS、プラットフォームを使い分けていることと思います。
そこで、makeコマンド(Makefile)で開発・運用をもっと楽にするための幾つかのノウハウを紹介いたします。

* 複雑な操作、一連の処理をまとめてタスク名をつける
* 必要なことだけをやる (依存関係、タイムスタンプ)
* 環境の違いを吸収する (開発/本番, Mac/Windows/Linux, etc)

※ phpに限定しない、汎用的に活用できるテーマです。

take_3

March 28, 2021
Tweet

More Decks by take_3

Other Decks in Programming

Transcript

  1. インストール • Linux • Mac • Windows ◦ Git for

    Windowsで Bash環境がセット アップされる (unix系基本コマンド) ◦ → make は同梱されない
  2. Windows用(MinGW/MSYS環境)make インストール方法 1. ezwinports から make-4.3-without-guile-w32-bin.zip をダウンロード ◦ [ezwinports -

    Browse Files at SourceForge.net] (https://sourceforge.net/projects/ezwinports/files/) ◦ 参考: [Git\mingw64\] (https://gist.github.com/evanwill/0207876c3243bbb686 3e65ec5dc3f058) 2. zipを展開 3. bin/make.exe を C:\Program Files\Git\mingw64\bin\ にコピーする
  3. ### 煩わしい長いコマンド群 $ cd laradock $ docker-compose exec -w /var/www/api

    workspace php artisan migrate ### Makefileでタスクを定義しておく $ make migrate エイリアス的 シェル実行例
  4. 環境の違いを吸収する(1) ### 環境変数で test task1: @[ "$(USER)" != "root" ]

    # チェック ... # やりたいこと ### .envファイルの値で task2: @grep -qE '^APP_ENV=local$$' .env # チェック ... # やりたいこと
  5. 環境の違いを吸収する(2) ### Windowsのときだけ、winpty用の変数セット ifeq ($(shell uname),Windows) WINPTY = 'winpty' WINPTY_PATH_PREFIX

    = '/' endif tinker: $(WINPTY) docker-compose exec \ -w $(WINPTY_PATH_PREFIX)/var/www/api \ workspace php artisan tinker
  6. 中間ファイル ### dump-autoloadが重いのでファイルが変更されたときだけ FORCE: ls-files.app.md5: FORCE $(eval hash = $(shell

    git ls-files app | md5sum | cut -f1 -d' ')) # ソースファイル名の一覧のハッシュ [ -e ls-files.app.md5 ] && \ [ $$(cat ls-files.app.md5) = "$(hash)" ] || \ echo $(hash) > ls-files.app.md5 # ファイルの増減があったときだけ更新する tmp/dump-autoload: ls-files.app.md5 docker-compose exec workspace composer dump-autoload # コストが高い touch > tmp/dump-autoload # 終わったら時刻を保存しておく dump-autoload: tmp/dump-autoload # エイリアス