From 9f9ff93c97b9b85fc327fee97ddb2d73fefd2807 Mon Sep 17 00:00:00 2001 From: mctaylors Date: Wed, 6 Nov 2024 22:46:10 +0300 Subject: [PATCH] Add automatic deployment Signed-off-by: mctaylors --- .forgejo/workflows/push.yml | 91 +++++++++++++++++++++++++++++++++++++ .gitignore | 6 ++- main.py | 1 + 3 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 .forgejo/workflows/push.yml diff --git a/.forgejo/workflows/push.yml b/.forgejo/workflows/push.yml new file mode 100644 index 0000000..94c9b3d --- /dev/null +++ b/.forgejo/workflows/push.yml @@ -0,0 +1,91 @@ +name: Update production + +on: + push: + branches: + - master + +jobs: + build-upload-artifact: + name: Build and upload Lurker as artifact + runs-on: docker + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup virtual environment + run: python -m venv .venv/ + + - name: Install necessary packages using pip + run: ./.venv/bin/pip install $PIP_PACKAGES + env: + PIP_PACKAGES: ${{vars.PIP_PACKAGES}} + + - name: Build binary + run: ./.venv/bin/pyinstaller $PYINSTALLER_FLAGS main.py + env: + PYINSTALLER_FLAGS: ${{vars.PYINSTALLER_FLAGS}} + + - name: Upload artifact + uses: actions/upload-artifact@v3 + with: + name: lurker-bin + path: dist/ + + update-production: + name: Update Lurker on production + runs-on: docker + + steps: + - name: Download artifact + uses: actions/download-artifact@v4 + with: + name: lurker-bin + + - name: Copy SSH key + run: | + install -m 600 -D /dev/null ~/.ssh/id_ed25519 + echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_ed25519 + shell: bash + env: + SSH_PRIVATE_KEY: ${{secrets.SSH_PRIVATE_KEY}} + + - name: Generate SSH known hosts file + run: | + ssh-keyscan -H -p $SSH_PORT $SSH_HOST > ~/.ssh/known_hosts + shell: bash + env: + SSH_HOST: ${{secrets.SSH_HOST}} + SSH_PORT: ${{secrets.SSH_PORT}} + + - name: Stop currently running instance + run: | + ssh -p $SSH_PORT $SSH_USER@$SSH_HOST $STOP_COMMAND + shell: bash + env: + SSH_PORT: ${{secrets.SSH_PORT}} + SSH_USER: ${{secrets.SSH_USER}} + SSH_HOST: ${{secrets.SSH_HOST}} + STOP_COMMAND: ${{vars.STOP_COMMAND}} + + - name: Upload artifact + run: | + scp -r -P $SSH_PORT $UPLOAD_FROM $SSH_USER@$SSH_HOST:$UPLOAD_TO + shell: bash + env: + SSH_PORT: ${{secrets.SSH_PORT}} + SSH_USER: ${{secrets.SSH_USER}} + SSH_HOST: ${{secrets.SSH_HOST}} + UPLOAD_FROM: ${{vars.UPLOAD_FROM}} + UPLOAD_TO: ${{vars.UPLOAD_TO}} + + - name: Start new instance + run: | + ssh -p $SSH_PORT $SSH_USER@$SSH_HOST $START_COMMAND + shell: bash + env: + SSH_PORT: ${{secrets.SSH_PORT}} + SSH_USER: ${{secrets.SSH_USER}} + SSH_HOST: ${{secrets.SSH_HOST}} + START_COMMAND: ${{vars.START_COMMAND}} diff --git a/.gitignore b/.gitignore index 3e8ecb4..a56dfdd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,6 @@ .idea/ -.venv/ \ No newline at end of file +.venv/ +build/ +dist/ +__pycache__/ +*.spec \ No newline at end of file diff --git a/main.py b/main.py index 1a480c1..5a71573 100644 --- a/main.py +++ b/main.py @@ -4,6 +4,7 @@ import client import asyncio from next.ext.commands import DefaultHelpCommand +from sys import exit async def main():