· 4 years ago · May 04, 2021, 12:16 PM
1name: foodgram_project
2
3on:
4 push:
5 branches: [ master ]
6
7jobs:
8 tests:
9 runs-on: ubuntu-latest
10 steps:
11 - uses: actions/checkout@v2
12 - name: Set up Python
13 uses: actions/setup-python@v2
14 with:
15 python-version: 3.8
16 - name: Install dependencies
17 run: |
18 python -m pip install --upgrade pip
19 pip install flake8 pytest
20 pip install -r requirements.txt
21 - name: Lint with flake8
22 run: flake8 --exclude=dishes/migrations/,venv/,users/migrations/,foodgram_project/settings.py
23
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: Change script permissions
33 run: |
34 sudo chmod u+x entrypoint.sh
35 ls -la
36 - name: Set up Docker Buildx
37 uses: docker/setup-buildx-action@v1
38 - name: Login to Docker
39 uses: docker/login-action@v1
40 with:
41 username: ${{ secrets.DOCKER_USERNAME }}
42 password: ${{ secrets.DOCKER_PASSWORD }}
43 - name: Push to Docker Hub
44 uses: docker/build-push-action@v2
45 with:
46 push: true
47 tags: azeron/foodgram:latest
48
49
50 deploy:
51 runs-on: ubuntu-latest
52 needs: build_and_push_to_docker_hub
53 # if: github.ref == 'refs/heads/master'
54 steps:
55 - name: ssh commands to deploy
56 uses: appleboy/ssh-action@master
57 with:
58 host: ${{ secrets.HOST }}
59 username: ${{ secrets.USER }}
60 key: ${{ secrets.SSH_KEY }}
61 passphrase: ${{ secrets.PASSPHRASE }}
62 script: |
63 sudo apt update
64 sudo apt full-upgrade
65 sudo pip install docker-compose
66 sudo docker pull ${{ secrets.DOCKER_USERNAME }}/foodgram:latest
67 id=$(sudo docker create ${{ secrets.DOCKER_USERNAME }}/foodgram:latest)
68 sudo docker cp $id:code/docker-compose.yaml docker-compose.yaml
69 sudo docker rm -v $id
70
71 rm .env
72 touch .env
73 sudo chown azeron:azeron .env
74 echo DB_ENGINE=${{ secrets.DB_ENGINE }} >> .env
75 echo DB_NAME=${{ secrets.DB_NAME }} >> .env
76 echo POSTGRES_USER=${{ secrets.POSTGRES_USER }} >> .env
77 echo POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }} >> .env
78 echo DB_HOST=${{ secrets.DB_HOST }} >> .env
79 echo DB_PORT=${{ secrets.DB_PORT }} >> .env
80 echo SECRET_KEY=${{ secrets.SECRET_KEY }} >> .env
81 echo DJANGO_SUPERUSER_PASSWORD=${{ secrets.DJANGO_SUPERUSER_PASSWORD }} >> .env
82 echo DJANGO_SUPERUSER_EMAIL=${{ secrets.DJANGO_SUPERUSER_EMAIL }} >> .env
83 echo DJANGO_SUPERUSER_USERNAME=${{ secrets.DJANGO_SUPERUSER_USERNAME }} >> .env
84
85 sudo docker stop $(sudo docker ps -a -q)
86 sudo docker rm $(sudo docker ps -a -q)
87 docker system prune
88 docker volume prune -f
89
90 sudo docker-compose up -d --force-recreate --build
91
92 send_message:
93 runs-on: ubuntu-latest
94 needs: deploy
95 steps:
96 - name: send message
97 uses: appleboy/telegram-action@master
98 with:
99 to: ${{ secrets.TELEGRAM_TO }}
100 token: ${{ secrets.TELEGRAM_TOKEN }}
101 message: ${{ github.workflow }} успешно выполнен!
102
103