86 lines
2.0 KiB
YAML
86 lines
2.0 KiB
YAML
name: CI/CD
|
||
|
||
on:
|
||
pull_request:
|
||
types: [opened, synchronize, reopened]
|
||
branches:
|
||
- main
|
||
- test
|
||
workflow_dispatch:
|
||
|
||
jobs:
|
||
test-backend:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- name: Checkout code
|
||
uses: actions/checkout@v4
|
||
|
||
- name: Set up Python
|
||
uses: actions/setup-python@v5
|
||
with:
|
||
python-version: '3.11'
|
||
|
||
- name: Install dependencies
|
||
run: |
|
||
cd api
|
||
pip install -r requirements.txt
|
||
|
||
- name: Verify build
|
||
run: |
|
||
cd api
|
||
python -c "from main import app"
|
||
|
||
- name: Run tests
|
||
run: |
|
||
cd api
|
||
pytest tests/
|
||
|
||
# test-frontend:
|
||
# needs: test-backend
|
||
# runs-on: ubuntu-latest
|
||
# steps:
|
||
# - name: Checkout code
|
||
# uses: actions/checkout@v4
|
||
|
||
# - name: Set up Node.js
|
||
# uses: actions/setup-node@v4
|
||
# with:
|
||
# node-version: '20'
|
||
|
||
# - name: Install dependencies
|
||
# run: |
|
||
# cd web
|
||
# npm ci
|
||
|
||
# - name: Build frontend
|
||
# run: |
|
||
# cd web
|
||
# npm run build
|
||
|
||
create-archives:
|
||
needs: [test-backend, test-frontend]
|
||
runs-on: ubuntu-latest
|
||
if: success()
|
||
steps:
|
||
- name: Checkout code
|
||
uses: actions/checkout@v4
|
||
|
||
- name: Create archives
|
||
run: |
|
||
# Создаём архивы с исключением ненужных файлов
|
||
zip -r api.zip api/ -x "*.pyc" "*__pycache__*" "*.git*" "*.pytest_cache*"
|
||
zip -r web.zip web/ -x "node_modules/*" ".git*" "dist/*" "*.log"
|
||
|
||
# Создаём общий архив
|
||
zip -r full-build.zip api/ web/ -x "*/node_modules/*" "*__pycache__*" "*.pyc" "*.git*"
|
||
|
||
- name: Upload artifacts
|
||
uses: actions/upload-artifact@v4
|
||
with:
|
||
name: build-artifacts
|
||
path: |
|
||
api.zip
|
||
web.zip
|
||
full-build.zip
|
||
retention-days: 30 # сколько дней хранить артефакты
|