Advertisement
gray_beard

yamdb_workflow

Apr 18th, 2022
1,209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.59 KB | None | 0 0
  1. name: Yamdb workflow
  2.  
  3. on: [push]
  4.  
  5. jobs:
  6.   tests:
  7.     runs-on: ubuntu-latest
  8.     steps:
  9.     - uses: actions/checkout@v2
  10.     - name: Set up Python
  11.       uses: actions/setup-python@v2
  12.       with:
  13.         python-version: 3.7
  14.  
  15.     - name: Install dependencies
  16.       run: |
  17.         python -m pip install --upgrade pip
  18.         pip install flake8 pep8-naming flake8-broken-line flake8-return flake8-isort
  19.         pip install -r api_yamdb/requirements.txt
  20.     - name: Test with flake8 and django tests
  21.       run: |
  22.         python -m flake8
  23.         pytest
  24.  
  25.   build_and_push_to_docker_hub:
  26.     name: Push Docker image to Docker Hub
  27.     runs-on: ubuntu-latest
  28.     needs: tests
  29.     steps:
  30.       - name: Check out the repo
  31.         uses: actions/checkout@v2
  32.       - name: Set up Docker Buildx
  33.         uses: docker/setup-buildx-action@v1
  34.       - name: Login to Docker
  35.         uses: docker/login-action@v1
  36.         with:
  37.           username: ${{ secrets.DOCKER_USERNAME }}
  38.           password: ${{ secrets.DOCKER_PASSWORD }}
  39.       - name: Push to Docker Hub
  40.         uses: docker/build-push-action@v2
  41.         with:
  42.           context: api_yamdb/
  43.           push: true
  44.           tags: olegpletnev/yamdb_final:latest
  45.  
  46.   deploy:
  47.     runs-on: ubuntu-latest
  48.     needs: build_and_push_to_docker_hub
  49.     if: github.ref == 'refs/heads/master'
  50.     steps:
  51.       - name: executing remote ssh commands to deploy
  52.         uses: appleboy/ssh-action@master
  53.         with:
  54.           host: ${{ secrets.HOST }}
  55.           username: ${{ secrets.USER }}
  56.           key: ${{ secrets.SSH_KEY }}
  57.           script: |
  58.             sudo docker-compose stop
  59.             sudo docker-compose rm web
  60.             sudo rm .env
  61.             touch .env
  62.             echo DB_ENGINE=${{ secrets.DB_ENGINE }} >> .env
  63.             echo DB_NAME=${{ secrets.DB_NAME }} >> .env
  64.             echo POSTGRES_USER=${{ secrets.POSTGRES_USER }} >> .env
  65.             echo POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }} >> .env
  66.             echo DB_HOST=${{ secrets.DB_HOST }} >> .env
  67.             echo DB_PORT=${{ secrets.DB_PORT }} >> .env
  68.             sudo docker-compose up -d --build
  69.             sudo docker-compose exec -T web python manage.py migrate
  70.             sudo docker-compose exec -T web python manage.py collectstatic --no-input
  71.  
  72.   send_message:
  73.     runs-on: ubuntu-latest
  74.     needs: deploy
  75.     steps:
  76.     - name: send message
  77.       uses: appleboy/telegram-action@master
  78.       with:
  79.         to: ${{ secrets.TELEGRAM_TO }}
  80.         token: ${{ secrets.TELEGRAM_TOKEN }}
  81.         message: ${{ github.workflow }} успешно выполнен!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement