Skip to content

tests2

tests2 #6

Workflow file for this run

name: CI/CD for Kittygram
on:
push:
branches:
- main
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install flake8
- name: Run PEP8 check
run: |
flake8 backend --count --max-complexity=10 --max-line-length=119 --show-source --statistics
test:
runs-on: ubuntu-latest
needs: lint
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install backend dependencies
run: |
python -m pip install --upgrade pip
pip install -r backend/requirements.txt
- name: Run backend tests
run: |
pytest tests/
- name: Run frontend tests
run: |
cd frontend && npm install && npm test
deploy:
runs-on: ubuntu-latest
needs: test
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Log in to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push backend image
run: |
docker build -t ${{ secrets.DOCKER_USERNAME }}/kittygram_backend:latest ./backend
docker push ${{ secrets.DOCKER_USERNAME }}/kittygram_backend:latest
- name: Build and push frontend image
run: |
docker build -t ${{ secrets.DOCKER_USERNAME }}/kittygram_frontend:latest ./frontend
docker push ${{ secrets.DOCKER_USERNAME }}/kittygram_frontend:latest
- name: Build and push gateway image
run: |
docker build -t ${{ secrets.DOCKER_USERNAME }}/kittygram_gateway:latest ./nginx
docker push ${{ secrets.DOCKER_USERNAME }}/kittygram_gateway:latest
- name: Deploy to Server
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USER }}
key: ${{ secrets.SSH_KEY }}
script: |
cd ~/kittygram
docker pull ${{ secrets.DOCKER_USERNAME }}/kittygram_backend:latest
docker pull ${{ secrets.DOCKER_USERNAME }}/kittygram_frontend:latest
docker pull ${{ secrets.DOCKER_USERNAME }}/kittygram_gateway:latest
docker-compose -f docker-compose.production.yml down
docker-compose -f docker-compose.production.yml up -d
docker exec backend python manage.py migrate
docker exec backend python manage.py collectstatic --noinput
docker restart gateway
notify:
runs-on: ubuntu-latest
needs: deploy
steps:
- name: Send Telegram Notification
run: |
curl -s -X POST "https://api.telegram.org/bot${{ secrets.TELEGRAM_BOT_TOKEN }}/sendMessage" \
-d "chat_id=${{ secrets.TELEGRAM_CHAT_ID }}" \
-d "text=🎉 Kittygram успешно задеплоен!"