From 4d86b06120466c2e298f301a1e12b4fc2d6a13e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=9C=D0=BE?= =?UTF-8?q?=D1=81=D0=BA=D0=B0=D0=BB=D1=8F=D0=BD=D0=BE=D0=B2?= Date: Wed, 30 Aug 2023 17:16:47 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=20=D0=BD?= =?UTF-8?q?=D0=B0=D1=87=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=B2=D0=BE?= =?UTF-8?q?=D1=80=D0=BA=D1=84=D0=BB=D0=BE=D1=83=20=D0=B4=D0=BB=D1=8F=20Git?= =?UTF-8?q?Hub=20Actions.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/main.yml | 176 +++++++++++++++++++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..893957b --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,176 @@ +name: Main Foodgram workflow + +on: push + +jobs: + tests: + runs-on: ubuntu-latest + # services: + # postgres: + # image: postgres:13.10 + # env: + # POSTGRES_USER: django_user + # POSTGRES_PASSWORD: django_password + # POSTGRES_DB: django_db + # ports: + # - 5432:5432 + # options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 + steps: + - name: Check out the repo + uses: actions/checkout@v3 + - name: Print project tree + run: tree . + # - 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==6.0.0 flake8-isort==6.0.0 + # pip install -r ./backend/requirements.txt + # - name: Test with flake8 and django tests + # env: + # POSTGRES_USER: django_user + # POSTGRES_PASSWORD: django_password + # POSTGRES_DB: django_db + # SECRET_KEY: ${{ secrets.SECRET_KEY }} + # DB_HOST: 127.0.0.1 + # DB_PORT: 5432 + # run: | + # python -m flake8 backend/ + # cd backend/ + # python manage.py test + + # build_backend_and_push_to_docker_hub: + # name: Push Docker image to DockerHub + # runs-on: ubuntu-latest + # needs: tests + # if: github.ref == 'refs/heads/main' + # steps: + # - name: Check out the repo + # uses: actions/checkout@v3 + # - name: Set up Docker Buildx + # uses: docker/setup-buildx-action@v2 + # - name: Login to Docker + # uses: docker/login-action@v2 + # with: + # username: ${{ secrets.DOCKER_USERNAME }} + # password: ${{ secrets.DOCKER_PASSWORD }} + # - name: Push to DockerHub + # uses: docker/build-push-action@v4 + # with: + # context: ./backend/ + # push: true + # tags: ${{ secrets.DOCKER_USERNAME }}/kittygram_backend:latest + + # frontend_tests: + # runs-on: ubuntu-latest + + # steps: + # - name: Check out the repo + # uses: actions/checkout@v3 + # - name: Set up nodeJS + # uses: actions/setup-node@v3 + # with: + # node-version: 18 + + # - name: Install dependencies + # run: | + # cd frontend/ + # npm ci + + # - name: Test frontend + # run: | + # cd frontend/ + # npm run test + + # build_frontend_and_push_to_docker_hub: + # name: Push frontend Docker image to DockerHub + # runs-on: ubuntu-latest + # needs: frontend_tests + # if: github.ref == 'refs/heads/main' + # steps: + # - name: Check out the repo + # uses: actions/checkout@v3 + # - name: Set up Docker Buildx + # uses: docker/setup-buildx-action@v2 + # - name: Login to Docker + # uses: docker/login-action@v2 + # with: + # username: ${{ secrets.DOCKER_USERNAME }} + # password: ${{ secrets.DOCKER_PASSWORD }} + # - name: Push to DockerHub + # uses: docker/build-push-action@v4 + # with: + # context: ./frontend/ + # push: true + # tags: ${{ secrets.DOCKER_USERNAME }}/kittygram_frontend:latest + + # build_gateway_and_push_to_docker_hub: + # name: Push gateway Docker image to DockerHub + # runs-on: ubuntu-latest + # if: github.ref == 'refs/heads/main' + # steps: + # - name: Check out the repo + # uses: actions/checkout@v3 + # - name: Set up Docker Buildx + # uses: docker/setup-buildx-action@v2 + # - name: Login to Docker + # uses: docker/login-action@v2 + # with: + # username: ${{ secrets.DOCKER_USERNAME }} + # password: ${{ secrets.DOCKER_PASSWORD }} + # - name: Push to DockerHub + # uses: docker/build-push-action@v4 + # with: + # context: ./nginx/ + # push: true + # tags: ${{ secrets.DOCKER_USERNAME }}/kittygram_gateway:latest + + # deploy: + # runs-on: ubuntu-latest + # needs: + # - build_backend_and_push_to_docker_hub + # - build_frontend_and_push_to_docker_hub + # - build_gateway_and_push_to_docker_hub + # steps: + # - name: Checkout repo + # uses: actions/checkout@v3 + # - name: Copy docker-compose.production.yml via ssh + # uses: appleboy/scp-action@master + # with: + # host: ${{ secrets.HOST }} + # username: ${{ secrets.USER }} + # key: ${{ secrets.SSH_KEY }} + # passphrase: ${{ secrets.SSH_PASSPHRASE }} + # source: "docker-compose.production.yml" + # target: "kittygram" + # - name: Executing remote ssh commands to deploy + # uses: appleboy/ssh-action@master + # with: + # host: ${{ secrets.HOST }} + # username: ${{ secrets.USER }} + # key: ${{ secrets.SSH_KEY }} + # passphrase: ${{ secrets.SSH_PASSPHRASE }} + # script: | + # cd kittygram + # sudo docker compose -f docker-compose.production.yml down + # sudo docker compose -f docker-compose.production.yml pull + # sudo docker compose -f docker-compose.production.yml up -d + # sudo docker compose -f docker-compose.production.yml exec backend python manage.py migrate + # sudo docker compose -f docker-compose.production.yml exec backend python manage.py collectstatic + # sudo docker compose -f docker-compose.production.yml exec backend cp -r /app/collected_static/. /backend_static/static/ + # send_message: + # runs-on: ubuntu-latest + # needs: deploy + # steps: + # - name: Send message + # uses: appleboy/telegram-action@master + # with: + # to: ${{ secrets.TELEGRAM_TO }} + # token: ${{ secrets.TELEGRAM_TOKEN }} + # message: | + # ${{ github.actor }} опубликовал(а) изменения в ветке main: ${{ github.event.commits[0].message }} + # Деплой успешно выполнен!