|
1 | | -# --------------------------------------------------------------- |
| 1 | +# ----------------------------------------------------------------------------- |
2 | 2 | # 📦 GitHub Actions: docker-ci.yml |
3 | | -# Назначение: автоматическая сборка и публикация Docker-образов |
4 | | -# при каждом push в ветку `main`. |
5 | | -# Используется CI/CD (Continuous Integration & Delivery). |
| 3 | +# Purpose: Automatically build and publish Docker images |
| 4 | +# on every push to the `main` branch. |
| 5 | +# This is a CI/CD workflow (Continuous Integration & Delivery). |
6 | 6 | # |
7 | | -# Что делает: |
8 | | -# 1. Клонирует код проекта. |
9 | | -# 2. Логинится в Docker Hub. |
10 | | -# 3. Собирает backend и frontend образы. |
11 | | -# 4. Загружает их в Docker Hub. |
12 | | -# --------------------------------------------------------------- |
| 7 | +# What it does: |
| 8 | +# 1. Clones the project code. |
| 9 | +# 2. Logs into Docker Hub. |
| 10 | +# 3. Builds backend and frontend Docker images. |
| 11 | +# 4. Pushes these images to Docker Hub. |
| 12 | +# ----------------------------------------------------------------------------- |
13 | 13 |
|
14 | | -name: Docker CI # Имя workflow, которое отображается на GitHub |
| 14 | +name: Docker CI # Workflow name shown on GitHub |
15 | 15 |
|
16 | 16 | on: |
17 | 17 | push: |
18 | | - branches: [ main ] # 👉 Запускать только при пуше в ветку "main" |
| 18 | + branches: [ main ] # 👉 Run only when pushing to the "main" branch |
19 | 19 |
|
20 | 20 | jobs: |
21 | | - build: # 👷 Название задачи (job) |
22 | | - runs-on: ubuntu-latest # 🔧 GitHub Actions запустит виртуальный сервер с Ubuntu |
| 21 | + build: # 👷 Job name |
| 22 | + runs-on: ubuntu-latest # 🔧 GitHub Actions will run on an Ubuntu VM |
23 | 23 |
|
24 | | - steps: # 📋 Шаги, которые будут выполняться последовательно |
| 24 | + steps: # 📋 Steps executed sequentially |
25 | 25 |
|
26 | | - - name: Checkout code # 🧾 Шаг 1: Склонировать репозиторий |
27 | | - uses: actions/checkout@v3 # 📥 GitHub официальная экшн для checkout |
| 26 | + - name: Checkout code # 🧾 Step 1: Clone the repository |
| 27 | + uses: actions/checkout@v3 # 📥 Official GitHub checkout action |
28 | 28 |
|
29 | | - - name: Set up Docker Buildx # 🧰 Шаг 2: Настроить Buildx — надстройка Docker для расширенной сборки |
30 | | - uses: docker/setup-buildx-action@v3 # 📦 Action для установки buildx |
| 29 | + - name: Set up Docker Buildx # 🧰 Step 2: Setup Buildx — Docker extension for advanced builds |
| 30 | + uses: docker/setup-buildx-action@v3 # 📦 Action to install buildx |
31 | 31 |
|
32 | | - - name: Login to Docker Hub # 🔐 Шаг 3: Авторизация в Docker Hub для загрузки образов |
33 | | - uses: docker/login-action@v3 # 🛂 Официальный способ логина |
| 32 | + - name: Login to Docker Hub # 🔐 Step 3: Authenticate to Docker Hub to push images |
| 33 | + uses: docker/login-action@v3 # 🛂 Official login method |
34 | 34 | with: |
35 | | - username: ${{ secrets.DOCKER_USERNAME }} # 🔒 Имя пользователя берется из секретов GitHub |
36 | | - password: ${{ secrets.DOCKER_PASSWORD }} # 🔒 Токен/пароль тоже из секретов (безопасно) |
| 35 | + username: ${{ secrets.DOCKER_USERNAME }} # 🔒 Username from GitHub secrets |
| 36 | + password: ${{ secrets.DOCKER_PASSWORD }} # 🔒 Password or token from secrets (secure) |
37 | 37 |
|
38 | | - - name: Build and push backend # ⚙️ Шаг 4: Собрать и отправить backend-образ |
39 | | - uses: docker/build-push-action@v5 # 🛠️ Action для сборки и загрузки Docker образов |
| 38 | + - name: Build and push backend # ⚙️ Step 4: Build and push backend image |
| 39 | + uses: docker/build-push-action@v5 # 🛠️ Build and push Docker images |
40 | 40 | with: |
41 | | - context: ./backend # 📁 Контекст сборки — папка backend |
42 | | - tags: ${{ secrets.DOCKER_USERNAME }}/flask-api:latest # 🏷️ Имя образа: dockerhub_user/flask-api |
43 | | - push: true # 📤 Обязательно загрузить образ после сборки |
| 41 | + context: ./backend # 📁 Build context — backend folder |
| 42 | + tags: ${{ secrets.DOCKER_USERNAME }}/flask-api:latest # 🏷️ Image name: dockerhub_user/flask-api |
| 43 | + push: true # 📤 Push the image after build |
44 | 44 |
|
45 | | - - name: Build and push frontend # ⚙️ Шаг 5: Собрать и отправить frontend-образ |
46 | | - uses: docker/build-push-action@v5 # 🛠️ То же самое, но для фfrontend |
| 45 | + - name: Build and push frontend # ⚙️ Step 5: Build and push frontend image |
| 46 | + uses: docker/build-push-action@v5 # 🛠️ Same as above, for frontend |
47 | 47 | with: |
48 | | - context: ./frontend # 📁 Контекст сборки — папка frontend |
49 | | - tags: ${{ secrets.DOCKER_USERNAME }}/node-frontend:latest # 🏷️ Имя образа: dockerhub_user/node-frontend |
50 | | - push: true # 📤 Загружаем в Docker Hub |
| 48 | + context: ./frontend # 📁 Build context — frontend folder |
| 49 | + tags: ${{ secrets.DOCKER_USERNAME }}/node-frontend:latest # 🏷️ Image name: dockerhub_user/node-frontend |
| 50 | + push: true # 📤 Push the image to Docker Hub |
51 | 51 |
|
52 | | - - name: Build and push nginx # ⚙️ Шаг 6: Собрать и отправить nginx-образ |
53 | | - uses: docker/build-push-action@v5 # 🛠️ То же самое, но для nginx |
| 52 | + - name: Build and push nginx # ⚙️ Step 6: Build and push nginx image |
| 53 | + uses: docker/build-push-action@v5 # 🛠️ Same, for nginx |
54 | 54 | with: |
55 | | - context: ./nginx # 📁 Контекст сборки — папка nginx |
56 | | - tags: ${{ secrets.DOCKER_USERNAME }}/nginx:latest # 🏷️ Имя образа: dockerhub_user/nginx |
57 | | - push: true # 📤 Загружаем в Docker Hub |
| 55 | + context: ./nginx # 📁 Build context — nginx folder |
| 56 | + tags: ${{ secrets.DOCKER_USERNAME }}/nginx:latest # 🏷️ Image name: dockerhub_user/nginx |
| 57 | + push: true # 📤 Push the image to Docker Hub |
0 commit comments