name: Deploy website run-name: ${{ gitea.actor }} is deploying update on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - name: Setup SSH run: | mkdir -p ~/.ssh echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa ssh-keyscan ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts - name: Deploy run: | ssh ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} << 'EOF' set -e APP_DIR=/var/www/alfieking.dev RELEASES_DIR=$APP_DIR/releases TIMESTAMP=$(date +%Y%m%d%H%M%S) NEW_RELEASE=$RELEASES_DIR/$TIMESTAMP KEEP_RELEASES=5 echo "Creating release directory..." mkdir -p $NEW_RELEASE echo "Cloning public repository..." git clone --depth 1 -b main \ https://git.alfieking.dev/acetheking987/alfieking.dev.git \ $NEW_RELEASE echo "Installing dependencies..." source $APP_DIR/venv/bin/activate pip install -r $NEW_RELEASE/requirements.txt echo "Switching symlink..." ln -sfn $NEW_RELEASE $APP_DIR/current echo "Changing ownership..." chown -R www-data:www-data /var/www/alfieking.dev/releases/$TIMESTAMP chown -R www-data:www-data /var/www/alfieking.dev/current echo "Restarting Gunicorn (downtime incomming XD)..." systemctl restart alfieking.dev.service echo "Cleaning old releases..." CURRENT_TARGET=$(readlink -f $APP_DIR/current) cd $RELEASES_DIR for dir in $(ls -dt */ | tail -n +$((KEEP_RELEASES+1))); do FULL_PATH="$RELEASES_DIR/${dir%/}" if [ "$FULL_PATH" != "$CURRENT_TARGET" ]; then rm -rf "$FULL_PATH" fi done echo "Deployment successful." EOF