I have used a simple github action workflow for over one year to deploy my code to my server. Suddenly it gives me composer errors when i have not touched the composer file. Have not even run composer update.
PHP Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 7.3.0". You are running 7.1.33-47+ubuntu18.04.1+deb.sury.org+1. in phar:///home/runner/.composer/vendor/deployer/deployer/dep/vendor/composer/platform_check.php on line 24
I use deployer.org with laravel recipe for deployment tool. And this is the deployer.php file
namespace Deployer;
require 'recipe/laravel.php';
require 'recipe/rsync.php';
set('application', 'Projsite Web App');
set('ssh_multiplexing', true);
set('rsync_src', function () {
return __DIR__;
});
set('shared_dirs', ['/public/delivery_management_api/public/apd_attachments',
'/public/delivery_management_api/public/waste_supplier_logos',
'/public/delivery_management_api/public/rental_images',
'/public/delivery_management_api/public/request_images',
'/public/delivery_management_api/public/logistic_images',
'/public/delivery_management_api/public/organization_logos']);
set('shared_files', ['.env',
'public/delivery_management_api/.env',
'public/delivery_management_api/storage/logs/laravel.log']);
set('writable_dirs', ['bootstrap/cache',
'storage',
'storage/app',
'storage/app/public',
'storage/framework',
'storage/framework/cache',
'storage/framework/sessions',
'storage/framework/views',
'storage/logs',
'public/delivery_management_api/bootstrap/cache',
'public/delivery_management_api/storage',
'public/delivery_management_api/storage/app',
'public/delivery_management_api/storage/app/public',
'public/delivery_management_api/storage/framework',
'public/delivery_management_api/storage/framework/cache',
'public/delivery_management_api/storage/framework/sessions',
'public/delivery_management_api/storage/framework/views',
'public/delivery_management_api/storage/logs']);
add('rsync', [
'exclude' => [
'.git',
'/.env',
'/storage/',
'/vendor/',
'/node_modules/',
'.github',
'deploy.php',
],
]);
task('deploy:secrets', function () {
file_put_contents(__DIR__ . '/.env', getenv('DOT_ENV'));
upload('.env', get('deploy_path') . '/shared');
file_put_contents(__DIR__ . '/.env', getenv('API_DOT_ENV'));
upload('.env', get('deploy_path') . '/shared/public/delivery_management_api');
});
host('app.projsite.com')
->hostname('94.46.44.17')
->stage('production')
->user('root')
->set('deploy_path', '/var/www/app');
host('dev.projsite.com')
->hostname('94.46.44.17')
->stage('staging')
->user('root')
->set('deploy_path', '/var/www/dev');
host('demo.projsite.com')
->hostname('94.46.44.17')
->stage('demo')
->user('root')
->set('deploy_path', '/var/www/demo');
after('deploy:failed', 'deploy:unlock');
desc('Deploy the application');
task('deploy', [
'deploy:info',
'deploy:prepare',
'deploy:lock',
'deploy:release',
'rsync',
'deploy:secrets',
'deploy:shared',
'deploy:vendors',
'deploy:writable',
'artisan:storage:link',
'artisan:view:cache',
'artisan:config:cache',
'artisan:queue:restart',
'deploy:symlink',
'deploy:unlock',
'cleanup',
]);
The github action yml file that gives me error and has been working for long time
name: Deploy Project to STAGING Server
runs-on: ubuntu-18.04
needs: [build-js-staging, app-tests]
if: github.ref == 'refs/heads/staging'
steps:
- uses: actions/checkout@v1
- name: Fetch built assets from Artifacts
uses: actions/download-artifact@v1
with:
name: assets
path: public
- name: Setup PHP
uses: shivammathur/setup-php@master
with:
php-version: 7.1.25
coverage: xdebug
- name: Composer install
run: composer install --ignore-platform-reqs
- name: Composer install in API
run: (cd public/delivery_management_api && composer install --ignore-platform-reqs)
- name: Setup Deployer
uses: atymic/deployer-php-action@master
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
ssh-known-hosts: ${{ secrets.SSH_KNOWN_HOSTS }}
- name: Deploy to Prod
env:
DOT_ENV: ${{ secrets.DOT_ENV_STAGING }}
API_DOT_ENV: ${{ secrets.API_DOT_ENV_STAGING }}
run: dep deploy staging --tag=${{ env.GITHUB_REF }} -vvv
This is the composer.json file. I just added the "platform_check: false" under config but did not work
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": [
"framework",
"laravel"
],
"license": "MIT",
"type": "project",
"require": {
"php": "^7.1.25",
"ext-curl": "*",
"akaunting/language": "^1.0",
"deployer/deployer": "^6.7",
"deployer/recipes": "^6.2",
"emarref/jwt": "^1.0",
"fideloper/proxy": "^4.0",
"guzzlehttp/guzzle": "^6.5",
"jenssegers/mongodb": "^3.4",
"laravel/framework": "5.6.*",
"laravel/tinker": "^1.0"
},
"require-dev": {
"filp/whoops": "^2.0",
"fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^2.0",
"phpunit/phpunit": "^7.0"
},
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"extra": {
"laravel": {
"dont-discover": []
}
},
"scripts": {
"post-root-package-install": [
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"@php artisan key:generate"
],
"post-autoload-dump": [
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
"@php artisan package:discover"
]
},
"config": {
"platform-check": false,
"preferred-install": "dist",
"sort-packages": true,
"optimize-autoloader": true,
"platform": {
"php": "7.1.25",
"ext-mongodb": "1.5.3"
},
"allow-plugins": {
"kylekatarnls/update-helper": true
}
},
"minimum-stability": "dev",
"prefer-stable": true
}
2 days later:
I decided to upgrade the php on my server to 7.4.13. And also updated the yaml file php-version parameter to that version. I also upgraded the deployer version in composer file to 7.0 from 6.7 and followed these instructions
::group::task deploy:info
task deploy:info
::group::task deploy:info
task deploy:info
::group::task deploy:setup
task deploy:setup
::group::task deploy:lock
task deploy:lock
::group::task deploy:release
task deploy:release
::group::task deploy:update_code
task deploy:update_code
[*****] /usr/bin/php7.4 /home/runner/.composer/vendor/deployer/deployer/dep worker --port 36839 --task deploy:update_code --host ***** --tag staging -vvv
[*****] ssh '-A' '-o' 'ControlMaster=auto' '-o' 'ControlPersist=60' '-o' 'ControlPath=/dev/shm/root@*****' 'root@*****' ': *****; bash -ls'
[*****] run command -v 'git' || which 'git' || type -p 'git'
[*****] mesg: ttyname failed: Inappropriate ioctl for device
[*****] /usr/bin/git
[*****] ssh '-A' '-o' 'ControlMaster=auto' '-o' 'ControlPersist=60' '-o' 'ControlPath=/dev/shm/root@*****' 'root@*****' ': *****; bash -ls'
[*****] run [ -d /var/www/dev/.dep/repo ] || mkdir -p /var/www/dev/.dep/repo
[*****] mesg: ttyname failed: Inappropriate ioctl for device
[*****] ssh '-A' '-o' 'ControlMaster=auto' '-o' 'ControlPersist=60' '-o' 'ControlPath=/dev/shm/root@*****' 'root@*****' ': *****; bash -ls'
[*****] run export GIT_TERMINAL_PROMPT='0' GIT_SSH_COMMAND='ssh -o StrictHostKeyChecking=accept-new'; [ -f /var/www/dev/.dep/repo/HEAD ] || /usr/bin/git clone --mirror /var/www/dev/.dep/repo 2>&1
[*****] mesg: ttyname failed:
[*****] Inappropriate ioctl for device
[*****] fatal: repository '/var/www/dev/.dep/repo' does not exist
[*****] error in update_code.php on line 90:
[*****] exit code 128 (Invalid exit argument)
::group::task deploy:failed
task deploy:failed
[*****] /usr/bin/php7.4 /home/runner/.composer/vendor/deployer/deployer/dep worker --port 36839 --task deploy:failed --host ***** --tag staging -vvv
done on *****
::endgroup::
::group::task deploy:unlock
task deploy:unlock
[*****] /usr/bin/php7.4 /home/runner/.composer/vendor/deployer/deployer/dep worker --port 36839 --task deploy:unlock --host ***** --tag staging -vvv
[*****] ssh '-A' '-o' 'ControlMaster=auto' '-o' 'ControlPersist=60' '-o' 'ControlPath=/dev/shm/root@*****' 'root@*****' ': *****; bash -ls'
[*****] run rm -f /var/www/dev/.dep/deploy.lock
[*****] mesg: ttyname failed: Inappropriate ioctl for device
done on *****
::endgroup::
Error: Process completed with exit code 128.
Updated deployer file:
<?php
namespace Deployer;
require 'recipe/laravel.php';
require 'contrib/rsync.php';
require 'recipe/common.php';
//require 'vendor/deployer/deployer/recipe/common.php';
set('application', 'Projsite Web App');
set('ssh_multiplexing', true);
set('rsync_src', function () {
return __DIR__;
});
set('shared_dirs', ['/public/delivery_management_api/public/apd_attachments',
'/public/delivery_management_api/public/waste_supplier_logos',
'/public/delivery_management_api/public/rental_images',
'/public/delivery_management_api/public/request_images',
'/public/delivery_management_api/public/logistic_images',
'/public/delivery_management_api/public/organization_logos']);
set('shared_files', ['.env',
'public/delivery_management_api/.env',
'public/delivery_management_api/storage/logs/laravel.log']);
set('writable_dirs', ['bootstrap/cache',
'storage',
'storage/app',
'storage/app/public',
'storage/framework',
'storage/framework/cache',
'storage/framework/sessions',
'storage/framework/views',
'storage/logs',
'public/delivery_management_api/bootstrap/cache',
'public/delivery_management_api/storage',
'public/delivery_management_api/storage/app',
'public/delivery_management_api/storage/app/public',
'public/delivery_management_api/storage/framework',
'public/delivery_management_api/storage/framework/cache',
'public/delivery_management_api/storage/framework/sessions',
'public/delivery_management_api/storage/framework/views',
'public/delivery_management_api/storage/logs']);
add('rsync', [
'exclude' => [
'.git',
'/.env',
'/storage/',
'/vendor/',
'/node_modules/',
'.github',
'deploy.php',
],
]);
task('deploy:secrets', function () {
file_put_contents(__DIR__ . '/.env', getenv('DOT_ENV'));
upload('.env', get('deploy_path') . '/shared');
file_put_contents(__DIR__ . '/.env', getenv('API_DOT_ENV'));
upload('.env', get('deploy_path') . '/shared/public/delivery_management_api');
});
host('app.projsite.com')
->setHostname('94.46.44.17')
->set('labels', ['stage' => 'production'])
->set('remote_user', 'root')
->set('deploy_path', '/var/www/app');
host('dev.projsite.com')
->setHostname('94.46.44.17')
->set('labels', ['stage' => 'staging'])
->set('remote_user', 'root')
->set('deploy_path', '/var/www/dev');
host('demo.projsite.com')
->setHostname('94.46.44.17')
->set('labels', ['stage' => 'demo'])
->set('remote_user', 'root')
->set('deploy_path', '/var/www/demo');
after('deploy:failed', 'deploy:unlock');
desc('Deploy the application');
task('deploy', [
'deploy:info',
'deploy:prepare',
'deploy:lock',
'deploy:release',
'rsync',
'deploy:secrets',
'deploy:shared',
'deploy:vendors',
'deploy:writable',
'artisan:storage:link',
'artisan:view:cache',
'artisan:config:cache',
'artisan:queue:restart',
'deploy:symlink',
'deploy:unlock',
'deploy:cleanup'
]);