[Laravel学習]laravel/envoyを使ってデプロイを自動化してみよう(Part6)

[Laravel学習]laravel/envoyを使ってデプロイを自動化してみよう(Part6)

手動でデプロイ(アップロード&設定)すると、作業忘れとかが起こって色々と心配。デプロイツールでコマンド一つでデプロイできたらば、問題があったときにそこを修正すれば安定しているということで、laravel用のデプロイツールがあるのでお手軽らしいから、使ってみることに。

[目次]

  • laravel/envoyをインストール
  • 設定
  • デプロイしてみた


laravel/envoyをインストール

まずはインストール

$ composer global require "laravel/envoy"

Changed current directory to /Users/〇〇/.composer
Using version ^1.3 for laravel/envoy
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 9 installs, 0 updates, 0 removals
  - Installing nategood/httpful (0.2.20): Downloading (100%)
  - Installing symfony/translation (v3.4.2): Downloading (100%)
  - Installing nesbot/carbon (1.22.1): Loading from cache
  - Installing psr/simple-cache (1.0.0): Loading from cache
  - Installing psr/container (1.0.0): Loading from cache
  - Installing illuminate/contracts (v5.5.17): Downloading (100%)
  - Installing doctrine/inflector (v1.2.0): Loading from cache
  - Installing illuminate/support (v5.5.17): Downloading (100%)
  - Installing laravel/envoy (v1.3.4): Downloading (100%)
symfony/translation suggests installing symfony/config ()
symfony/translation suggests installing symfony/yaml ()
illuminate/support suggests installing illuminate/filesystem (Required to use the composer class (5.2.*).)
illuminate/support suggests installing symfony/var-dumper (Required to use the dd function (~3.3).)
Writing lock file
Generating autoload files

globalをつけてるからユーザのホームディレクトリにインストールされるのかな?(あんまりわかってない)
さらに、composer.jsonに書いてcomposer updateしたらあかんのかな?(とりあえず置いといて、将来的にわかれば又記載しよう(汗))

で読んでると composer global require "laravel/envoy" をしたあとは composer global updateをしろと書いてあるのでやっとく。

$ composer global update
Changed current directory to /Users/tacky2k/.composer
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 5 updates, 0 removals
  - Updating symfony/process (v3.4.0 => v3.4.2): Downloading (100%)
  - Updating symfony/filesystem (v3.4.0 => v4.0.2): Downloading (100%)
  - Updating symfony/debug (v4.0.0 => v4.0.2): Downloading (100%)
  - Updating symfony/console (v3.4.0 => v3.4.2): Downloading (100%)
  - Updating laravel/installer (v1.4.1 => v1.5.0): Downloading (100%)
Writing lock file
Generating autoload files

幾つかのパッケージがバージョン上がるけどだいじょうぶなんかな?
特にlaravel/installerはv1.4.1からv1.5.0にメジャーバージョンアップしてるけど、、、、

設定

Envoy.blade.phpというファイルを作って設定を書くって書いてあるけど、どこに配置するの?ということで試しにresourcesのviewsなかに置いて実行してみる。

//project/resources/views/Envoy.blade.php

@servers(['tanba-events' => ['ユーザ名@IPアドレス']])

@task('foo', ['on' => 'tanba-events'])
    ls -la
@endtask

試しに実行

$ envoy run deploy

In TaskContainer.php line 328:

  Task "deploy" is not defined.


run [--continue] [--pretend] [--path PATH] [--] 

???あんまわからんけど –helpとかlistsとかつけて見ると、どうも@taskの中の最初の変数をデプロイするみたいだから、envoy run fooにするか @task('deploy’〜にするかしないといけないみたい。

$ envoy run foo
password: パスワード

これでls -alの内容が返ってきました。バッチシ!
ということで、デプロイできるように書いてみた

@servers(['tanba-events' => ['ユーザ名@IPアドレス']])

@setup
  $dir = "/var/www/tanba-events"
@endsetup

@macro('deploy')
  composer
  git
  artisan
  slack
@endmacro

@task('composer')
  cd $dir
  composer update -y
  // composer install --no-dev --optimize-autoloader
@endtask

@task('git')
  cd /var/www/
  git pull origin master
@endtask

@task('artisan')
  cd $dir
  php artisan down
  php artisan migrate
  php artisan cache:clear
  php artisan config:cache
  php artisan route:cache
  php artisan view:clear
  php artisan up
@endtask


デプロイしてみた

エラーが出ます、、、、

$ git config --global user.name "名前"
$ git config --global user.email username@gmail.com
$ git config --global push.default matching
$ git config --global alias.co checkout
$ git remote add origin https://tacky2k@bitbucket.org/tacky2k/hoge.git

laravel deproyの中でのartisan がうまく走りません。もう少し研究して、うまくいく方法を探したいと思います。
色々紆余曲折あります。また設定なんかは修正したいと思いますが、うまく行きません。

参考
https://qiita.com/bmf_san/items/61e29a7c20108df64bc7
https://laravel.com/docs/5.5/envoy