name: AI Service CI/CD on: push: branches: [production] paths: - '**' - '.gitea/workflows/ai.yml' pull_request: branches: [production] paths: - '**' - '.gitea/workflows/ai.yml' jobs: test: name: Lint & Test runs-on: ubuntu-latest strategy: fail-fast: true matrix: python-version: ['3.11'] steps: - name: Checkout repository uses: actions/checkout@v4 - name: Setup Ubuntu apt mirrors run: | sudo tee /etc/apt/sources.list > /dev/null <<'EOF' deb [trusted=yes] https://mirror2.chabokan.net/ubuntu jammy main restricted universe multiverse deb [trusted=yes] https://mirror2.chabokan.net/ubuntu jammy-updates main restricted universe multiverse deb [trusted=yes] https://mirror2.chabokan.net/ubuntu jammy-security main restricted universe multiverse EOF sudo apt-get update - name: Set up Python uses: actions/setup-python@v5 with: python-version: 3.11 - name: Setup Python pip mirrors run: | pip config --user set global.index-url https://package-mirror.liara.ir/repository/pypi/simple pip config --user set global.extra-index-url https://mirror.cdn.ir/repository/pypi/simple pip config --user set global.trusted-host "package-mirror.liara.ir mirror.cdn.ir mirror2.chabokan.net" - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt pip install pytest flake8 - name: Run lint run: flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics - name: Run tests run: pytest -q deploy: name: Deploy AI Service needs: test if: gitea.event_name == 'push' && gitea.ref == 'refs/heads/production' runs-on: ubuntu-latest steps: - name: Deploy via SSH uses: appleboy/ssh-action@v1 with: host: ${{ secrets.SSH_HOST }} username: ${{ secrets.SSH_USER }} port: ${{ secrets.SSH_PORT }} key: ${{ secrets.SSH_PRIVATE_KEY }} script: | git pull origin production docker compose up -d --build