From 7a60ca468d449546804419194be4a27d96ac6664 Mon Sep 17 00:00:00 2001 From: Alfie King Date: Tue, 3 Mar 2026 15:00:11 +0000 Subject: [PATCH] deploy script --- .gitea/workflows/deploy.yaml | 56 ++++++++++++++++++++++++++++++++++++ requirements.txt | 3 +- 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index bd9bdf0..3e7f933 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -6,3 +6,59 @@ on: - 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://gitea.yourdomain.com/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 "Reloading Gunicorn gracefully..." + sudo systemctl reload alfieking.dev + + 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." \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 72af20f..0682591 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,4 +3,5 @@ python-dotenv flask-session requests flask -markdown \ No newline at end of file +markdown +gunicorn \ No newline at end of file