name: Build on: push: branches: ["master"] jobs: upload: name: Upload to production runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Python 3.13 uses: actions/setup-python@v5 with: python-version: '3.13' - name: Install dependencies run: | pip install --root-user-action ignore -r requirements.txt pip install --root-user-action ignore pyinstaller - name: Build binary run: pyinstaller --onefile main.py - name: Set up SSH key run: | install -m 600 -D /dev/null ~/.ssh/id_ed25519 echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_ed25519 ssh-keyscan -H -p $SSH_PORT $SSH_HOST > ~/.ssh/known_hosts shell: bash env: SSH_PRIVATE_KEY: ${{secrets.SSH_PRIVATE_KEY}} SSH_PORT: ${{secrets.SSH_PORT}} SSH_HOST: ${{secrets.SSH_HOST}} - 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 binary run: scp -P $SSH_PORT dist/main $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_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}}