DeployerでmacからはデプロイできるのにLinuxで実行したら死んだ
業務で使っているDeployerで普段ローカルからデプロイしていたものを
AWSのEC2に乗っけて動かそうとしたら思わぬエラーが出たのでメモ
デプロイ手順(こんな手順を踏まないといけない経緯は悲しいので書かない)
- デプロイサーバー(EC2)で不要なファイル以外を圧縮 ←ここで死んだ
- デプロイ先(EC2)へ転送
- デプロイ先(EC2)で解凍
- 以降はDeployerの動作に任せる
エラー内容
[RuntimeException] tar: ./proj.tar.gz: 読み込んだファイルが変更されています Exception trace: () at phar:///home/deploy-user/deploy/deployer.phar/src/functions.php:335 runLocally() at /home/deploy-user/deploy/include/tasks.php:27 {closure}() at n/a:n/a call_user_func() at phar:///home/deploy-user/deploy/deployer.phar/src/Task/Task.php:79 Deployer\Task\Task->run() at phar:///home/deploy-user/deploy/deployer.phar/src/Executor/SeriesExecutor.php:43 Deployer\Executor\SeriesExecutor->run() at phar:///home/deploy-user/deploy/deployer.phar/src/Console/TaskCommand.php:82 Deployer\Console\TaskCommand->execute() at phar:///home/deploy-user/deploy/deployer.phar/vendor/symfony/console/Command/Command.php:256 Symfony\Component\Console\Command\Command->run() at phar:///home/deploy-user/deploy/deployer.phar/vendor/symfony/console/Application.php:791 Symfony\Component\Console\Application->doRunCommand() at phar:///home/deploy-user/deploy/deployer.phar/vendor/symfony/console/Application.php:186 Symfony\Component\Console\Application->doRun() at phar:///home/deploy-user/deploy/deployer.phar/vendor/symfony/console/Application.php:117 Symfony\Component\Console\Application->run() at phar:///home/deploy-user/deploy/deployer.phar/src/Deployer.php:101 Deployer\Deployer->run() at phar:///home/deploy-user/deploy/deployer.phar/bin/dep:63 require() at /home/deploy-user/deploy/deployer.phar:4 deploy [-p|--parallel]
原因
圧縮しようとしている中にtarファイルを作っている
prj/配下を圧縮している最中にprj/[圧縮ファイル].tar.gzを置けるか置けないかの違いでした
なぜ今まで(mac)は行けたの?
macはtarの提供元が違った
# mac bsdtar 2.8.3 - libarchive 2.8.3
FreeBSDっていうところが提供しているbsdtarっていうのが入ってる
https://www.freebsd.org/cgi/man.cgi?query=bsdtar&sektion=1
# Amazon Linux $ tar --version tar (GNU tar) 1.26 Copyright (C) 2011 Free Software Foundation, Inc. 使用許諾 GPLv3+: GNU GPL version 3 またはそれ以降 <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. [参考訳] これはフリーソフトウェアです. 変更と再配布は自由です. 法律で認められる範囲で「無保証」です. 作者: John Gilmore, Jay Fenlason.
対処
prj/配下に圧縮ファイルを置かない
入ってるものが違うからそりゃエラー変わるよね!