From ab7352ecb8fa0b17ed3a3048bbba2166f41926de Mon Sep 17 00:00:00 2001 From: omelchenkopeter Date: Sat, 16 Sep 2023 10:06:38 +0300 Subject: [PATCH] build_and_push_to_docker_hub --- .github/workflows/main.yml | 41 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0e18308d3a..827cc1d30f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -33,9 +33,9 @@ jobs: - name: Install dependencies run: | - python -m pip install --upgrade pip + python -m pip install --upgrade pip pip install flake8==6.0.0 flake8-isort==6.0.0 - pip install -r ./backend/requirements.txt + pip install -r ./backend/requirements.txt # Этот шаг дополним переменными для доступа к БД - name: Test with flake8 and django tests # Добавляем env-переменные для доступа к БД @@ -51,3 +51,40 @@ jobs: python -m flake8 backend/ cd backend/ python manage.py test + + + build_and_push_to_docker_hub: + name: Push Docker image to DockerHub + runs-on: ubuntu-latest + needs: tests + steps: + - name: Check out the repo + # Получение исходного кода из репозитория + uses: actions/checkout@v3 + - name: Set up Docker Buildx + # Установка сборщика контейнеров Docker + uses: docker/setup-buildx-action@v2 + - name: Login to Docker + # Авторизация на Docker Hub + uses: docker/login-action@v2 + # При помощи with передаём в action параметры username и password + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + # Хорошо ли держать логин и пароль прямо в коде workflow? + # Нет, это нехорошо + - name: Push to DockerHub + # Одновременный билд и пуш образа в Docker Hub + uses: docker/build-push-action@v4 + with: + # Параметр context: ./backend/ указывает, что нужный Dockerfile + # находится в ./backend/ + context: ./backend/ + # Параметр push: true указывает, что образ нужно не только собрать, + # но и отправить на Docker Hub + push: true + # В параметре tags задаётся название и тег для образа. + # Для каждого пересобранного образа + # устанавливаем тег latest, чтобы потом + # на сервере и в docker-compose.yml не указывать версию + tags: back4up/taski_backend:latest