111 lines
3.6 KiB
YAML
111 lines
3.6 KiB
YAML
name: 'Deploy on push'
|
||
on: [push]
|
||
|
||
jobs:
|
||
deploy:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- name: Cloning repo
|
||
uses: actions/checkout@v4
|
||
with:
|
||
fetch-depth: 0
|
||
|
||
- name: Install uv
|
||
run: |
|
||
# Try multiple installation methods for uv
|
||
if curl -LsSf https://astral.sh/uv/install.sh | sh; then
|
||
echo "uv installed successfully via install script"
|
||
elif curl -LsSf https://github.com/astral-sh/uv/releases/latest/download/uv-installer.sh | sh; then
|
||
echo "uv installed successfully via GitHub installer"
|
||
else
|
||
echo "uv installation failed, using pip fallback"
|
||
pip install uv
|
||
fi
|
||
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
|
||
|
||
- name: Prepare Environment
|
||
run: |
|
||
uv --version
|
||
python3 --version
|
||
|
||
- name: Install Dependencies
|
||
run: |
|
||
uv sync --frozen
|
||
uv sync --group dev
|
||
|
||
- name: Run linting and type checking
|
||
run: |
|
||
echo "🔍 Запускаем проверки качества кода..."
|
||
|
||
# Ruff linting
|
||
echo "📝 Проверяем код с помощью Ruff..."
|
||
if uv run ruff check .; then
|
||
echo "✅ Ruff проверка прошла успешно"
|
||
else
|
||
echo "❌ Ruff нашел проблемы в коде"
|
||
exit 1
|
||
fi
|
||
|
||
# Ruff formatting check
|
||
echo "🎨 Проверяем форматирование с помощью Ruff..."
|
||
if uv run ruff format --check .; then
|
||
echo "✅ Форматирование корректно"
|
||
else
|
||
echo "❌ Код не отформатирован согласно стандартам"
|
||
exit 1
|
||
fi
|
||
|
||
# MyPy type checking
|
||
echo "🏷️ Проверяем типы с помощью MyPy..."
|
||
if uv run mypy . --ignore-missing-imports; then
|
||
echo "✅ MyPy проверка прошла успешно"
|
||
else
|
||
echo "❌ MyPy нашел проблемы с типами"
|
||
exit 1
|
||
fi
|
||
|
||
- name: Install Node.js Dependencies
|
||
run: |
|
||
npm ci
|
||
|
||
- name: Build Frontend
|
||
run: |
|
||
npm run build
|
||
|
||
- name: Setup Playwright (use pre-installed browsers)
|
||
env:
|
||
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
|
||
run: |
|
||
# Используем предустановленные браузеры в системе
|
||
npx playwright --version
|
||
|
||
- name: Run Tests
|
||
env:
|
||
PLAYWRIGHT_HEADLESS: "true"
|
||
run: |
|
||
uv run pytest tests/ -v
|
||
|
||
- name: Get Repo Name
|
||
id: repo_name
|
||
run: echo "::set-output name=repo::$(echo ${GITHUB_REPOSITORY##*/})"
|
||
|
||
- name: Get Branch Name
|
||
id: branch_name
|
||
run: echo "::set-output name=branch::$(echo ${GITHUB_REF##*/})"
|
||
|
||
- name: Push to dokku for main branch
|
||
if: github.ref == 'refs/heads/main'
|
||
uses: dokku/github-action@master
|
||
with:
|
||
branch: 'main'
|
||
git_remote_url: 'ssh://dokku@v2.discours.io:22/discoursio-api'
|
||
ssh_private_key: ${{ secrets.V2_PRIVATE_KEY }}
|
||
|
||
- name: Push to dokku for dev branch
|
||
if: github.ref == 'refs/heads/dev'
|
||
uses: dokku/github-action@master
|
||
with:
|
||
branch: 'dev'
|
||
git_remote_url: 'ssh://dokku@staging.discours.io:22/core'
|
||
ssh_private_key: ${{ secrets.STAGING_PRIVATE_KEY }}
|