| name: Update Test Server | |
| on: | |
| workflow_run: | |
| workflows: ["Docker Dev Branch Images Build"] | |
| types: | |
| - completed | |
| workflow_dispatch: | |
| jobs: | |
| deploy: | |
| runs-on: ubuntu-latest | |
| if: | | |
| github.repository == 'danny-avila/LibreChat' && | |
| (github.event_name == 'workflow_dispatch' || | |
| (github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.head_branch == 'dev')) | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Install SSH Key | |
| uses: shimataro/ssh-key-action@v2 | |
| with: | |
| key: ${{ secrets.DO_SSH_PRIVATE_KEY }} | |
| known_hosts: ${{ secrets.DO_KNOWN_HOSTS }} | |
| - name: Run update script on DigitalOcean Droplet | |
| env: | |
| DO_HOST: ${{ secrets.DO_HOST }} | |
| DO_USER: ${{ secrets.DO_USER }} | |
| run: | | |
| ssh -o StrictHostKeyChecking=no ${DO_USER}@${DO_HOST} << EOF | |
| sudo -i -u danny bash << 'EEOF' | |
| cd ~/LibreChat && \ | |
| git fetch origin main && \ | |
| sudo npm run stop:deployed && \ | |
| sudo docker images --format "{{.Repository}}:{{.ID}}" | grep -E "lc-dev|librechat" | cut -d: -f2 | xargs -r sudo docker rmi -f || true && \ | |
| sudo npm run update:deployed && \ | |
| git checkout dev && \ | |
| git pull origin dev && \ | |
| git checkout do-deploy && \ | |
| git rebase dev && \ | |
| sudo npm run start:deployed && \ | |
| echo "Update completed. Application should be running now." | |
| EEOF | |
| EOF | |