diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..5a8b2ec --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,32 @@ +name: deploy + +on: + release: + types: [released] + +concurrency: production_environment + +jobs: + production: + runs-on: ubuntu-latest + environment: Production + + steps: + - uses: actions/checkout@v3 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + tools: composer + extensions: bcmath, ctype, fileinfo, json, odbc, mbstring, openssl, pdo, pdo_mysql, pdo_odbc tokenizer, xml, soap, redis, igbinary + php-version: "8.2" + + - name: Install dependencies + run: composer install --no-interaction --no-scripts --prefer-dist + + + - name: Deploy + uses: deployphp/action@v1 + with: + private-key: ${{ secrets.DEPLOY_KEY }} + dep: deploy production diff --git a/composer.json b/composer.json index ba0c6a7..086f945 100644 --- a/composer.json +++ b/composer.json @@ -15,6 +15,7 @@ }, "require-dev": { "barryvdh/laravel-ide-helper": "^2.13", + "deployer/deployer": "^7.3", "fakerphp/faker": "^1.9.1", "laravel/breeze": "^1.24", "laravel/pint": "^1.0", diff --git a/composer.lock b/composer.lock index 9dfa19f..d4ec390 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "feae295eec753591e7cf70bf21f57924", + "content-hash": "6f613b80fde0f91b5425be61accfc51f", "packages": [ { "name": "brick/math", @@ -6158,6 +6158,49 @@ ], "time": "2022-11-17T09:50:14+00:00" }, + { + "name": "deployer/deployer", + "version": "v7.3.1", + "source": { + "type": "git", + "url": "https://github.com/deployphp/deployer.git", + "reference": "c5c5e79d4e57445918ed24a9cdd3d85b0f261de3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/deployphp/deployer/zipball/c5c5e79d4e57445918ed24a9cdd3d85b0f261de3", + "reference": "c5c5e79d4e57445918ed24a9cdd3d85b0f261de3", + "shasum": "" + }, + "bin": [ + "dep" + ], + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Anton Medvedev", + "email": "anton@medv.io" + } + ], + "description": "Deployment Tool", + "homepage": "https://deployer.org", + "support": { + "docs": "https://deployer.org/docs", + "issues": "https://github.com/deployphp/deployer/issues", + "source": "https://github.com/deployphp/deployer" + }, + "funding": [ + { + "url": "https://github.com/sponsors/antonmedv", + "type": "github" + } + ], + "time": "2023-04-05T09:24:30+00:00" + }, { "name": "doctrine/cache", "version": "2.2.0", @@ -9758,5 +9801,5 @@ "php": "^8.1" }, "platform-dev": [], - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/deploy.php b/deploy.php new file mode 100644 index 0000000..b2201c2 --- /dev/null +++ b/deploy.php @@ -0,0 +1,48 @@ +set('hostname', 'vps.benjamyn.love') + ->set('port', '22') + ->set('remote_user', 'root') + ->set('deploy_path', '/opt/PriceyBotPanel'); + + +// Tasks +task('npm:build', function () { + $command = match (get('alias')) { + 'production' => 'production', + 'staging' => 'development', + default => 'production' +}; +run("cd {{release_path}} && {{bin/npm}} run {$command}"); +}); + +task('perm:fix', function () { + run("chown -R nginx:nginx /opt/PriceyBotPanel"); +}); + + +// Hooks +after('deploy:vendors', 'npm:install'); +after('npm:install', 'npm:build'); +after('npm:build', 'perm:fix'); +after('deploy:failed', 'deploy:unlock');