ANewDawn/.github/workflows/ci.yml
2026-03-17 21:53:51 +01:00

43 lines
1.4 KiB
YAML

name: CI
on:
push:
pull_request:
workflow_dispatch:
jobs:
ci:
runs-on: self-hosted
env:
DISCORD_TOKEN: "0"
OPENAI_TOKEN: "0"
steps:
- uses: actions/checkout@v6
- name: Install dependencies
run: uv sync --all-extras --dev -U
- name: Lint the Python code using ruff
run: ruff check --exit-non-zero-on-fix --verbose
- name: Check formatting
run: ruff format --check --verbose
- name: Run tests
run: uv run pytest
# NOTE: The runner must be allowed to run these commands without a password.
# sudo EDITOR=nvim visudo
# forgejo-runner ALL=(lovinator) NOPASSWD: /usr/bin/git -C /home/lovinator/ANewDawn pull
# forgejo-runner ALL=(root) NOPASSWD: /bin/systemctl restart anewdawn.service
# forgejo-runner ALL=(lovinator) NOPASSWD: /usr/bin/uv sync -U --all-extras --dev --directory /home/lovinator/ANewDawn
- name: Deploy & restart bot (master only)
if: ${{ success() && github.ref == 'refs/heads/master' }}
run: |
# Keep checkout in the Forgejo runner workspace, whatever that is.
# actions/checkout already checks out to the runner's working directory.
sudo -u lovinator git -C /home/lovinator/ANewDawn pull
sudo -u lovinator uv sync -U --all-extras --dev --directory /home/lovinator/ANewDawn
sudo systemctl restart anewdawn.service