name: Development Deployment via Rsync on: push: branches: - master env: ENV_DEV: ${{ vars.ENV_DEV }} ENV_GITHUB: ${{ vars.ENV_GITHUB }} jobs: deployment: name: Development deployment runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: ref: ${{ github.head_ref }} fetch-depth: 2 - name: Use Node.js uses: actions/setup-node@v3 - name: Pull environment form variable run: | echo "$ENV_DEV" > .env echo "$ENV_GITHUB" > .env_github - id: dotenv_github name: Read dotenv file for github env uses: falti/dotenv-action@v1.0.4 with: path: '.env_github' export-variables: true log-variables: false mask-variables: true keys-case: 'bypass' - name: Install SSH Key uses: shimataro/ssh-key-action@v2 with: key: ${{ secrets.SSH_PRIVATE_KEY }} known_hosts: 'just-a-placeholder-so-we-dont-get-errors' - name: Adding Known Hosts run: | printenv ssh-keyscan -H $SERVER_IP >> ~/.ssh/known_hosts - name: Set Owner to Login User run: | ssh $SERVER_USERNAME@$SERVER_IP "sudo mkdir -p $PATH_DEPLOY" ssh $SERVER_USERNAME@$SERVER_IP "sudo chown -R $LOGIN_USER:$LOGIN_USER $PATH_DEPLOY" - name: Deploy to Server uses: easingthemes/ssh-deploy@main env: SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} ARGS: "-rlgoDzvc -i --delete" SOURCE: "./" REMOTE_HOST: $SERVER_IP REMOTE_USER: $SERVER_USERNAME TARGET: $PATH_DEPLOY EXCLUDE: "/vendor/, /node_modules/, /storage/, /.github/, /thunder-tests/, /docker/, /.fly/, /.dockerignore, /.env.example " - name: Setup Application run: | ssh $SERVER_USERNAME@$SERVER_IP "sudo mkdir -p $PATH_DEPLOY/storage/framework/views" ssh $SERVER_USERNAME@$SERVER_IP "cd $PATH_DEPLOY; composer install;" ssh $SERVER_USERNAME@$SERVER_IP "php $PATH_DEPLOY/artisan migrate --force" ssh $SERVER_USERNAME@$SERVER_IP "php $PATH_DEPLOY/artisan optimize:clear" ssh $SERVER_USERNAME@$SERVER_IP "php $PATH_DEPLOY/artisan optimize" ssh $SERVER_USERNAME@$SERVER_IP "php $PATH_DEPLOY/artisan cache:clear" - name: Setup Security run: | ssh $SERVER_USERNAME@$SERVER_IP "rm -rf $PATH_DEPLOY/.git" ssh $SERVER_USERNAME@$SERVER_IP "sudo chown -R $NGINX_USER:$NGINX_USER $PATH_DEPLOY" ssh $SERVER_USERNAME@$SERVER_IP "sudo chmod -R 777 $PATH_DEPLOY/storage/framework/" ssh $SERVER_USERNAME@$SERVER_IP "sudo chmod -R 777 $PATH_DEPLOY/storage/logs/"