diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..e69a83b --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,33 @@ +name: deploy + +on: + push: + tags: + - 'v*' + +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 e84244c..71fec1b 100644 --- a/composer.json +++ b/composer.json @@ -16,6 +16,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/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');