Skip to content
Snippets Groups Projects

Add checklist for learning Git and repositories

Open Alexander requested to merge docs/readme-updates into master
10 unresolved threads
Compare and
2 files
+ 275
25
Compare changes
  • Side-by-side
  • Inline
Files
2
README.md 0 → 100644
+ 275
0
![Docker](https://img.shields.io/badge/Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white)
---
![Incomplete](https://img.shields.io/badge/☐-Незавершена-lightgray)
---
<!-- ![Complete](https://img.shields.io/badge/&#9745;-Завершена-green) -->
**1. Понимание концепции контейнеризации:**
- [ ] Контейнеры vs Виртуальные машины: Разница между ними, преимущества и недостатки каждого подхода.
- [ ] Преимущества Docker: Портативность, изоляция сред, эффективность использования ресурсов.
**2. Установка и настройка `Docker`:**
- [ ] Установка Docker на различных операционных системах (Linux, Windows).
- [ ] Понимание компонентов Docker: `Docker Engine`, `Docker Daemon`, `Docker Client`.
**3. Основные команды `Docker`:**
- [ ] Работа с образами: `docker pull`, `docker images`, `docker rmi`.
- [ ] Управление контейнерами: `docker run`, `docker ps`, `docker stop`, `docker rm`.
- [ ] Просмотр логов: `docker logs`.
- [ ] Взаимодействие с контейнером: `docker exec`, `docker attach`.
**4. Работа с `Docker Hub`:**
- [ ] Поиск и использование готовых образов.
- [ ] Регистрация и аутентификация в `Docker Hub`.
- [ ] Публикация собственных образов.
**5. Создание собственных `Docker`-образов (`Dockerfile`):**
- [ ] Понимание структуры и инструкций Dockerfile: `FROM`, `RUN`, `CMD`, `COPY`, `ADD`, `EXPOSE`, `ENV`, `ENTRYPOINT`, `WORKDIR`.
- [ ] Создание оптимизированных `Dockerfile` для минимизации размера образа и ускорения сборки.
**6. Управление данными в `Docker`:**
- [ ] Тома (`Volumes`): Создание и использование для сохранения данных вне контейнера.
- [ ] Примонтированные каталоги (`Bind Mounts`): Связывание директорий хоста с контейнером.
- [ ] Разница между томами и примонтированными каталогами.
**7. Сетевое взаимодействие в Docker:**
- [ ] Понимание сетевых драйверов Docker: `bridge`, `host`, `overlay` и др.
- [ ] Настройка сетей для связи между контейнерами.
- [ ] Проброс портов между хостом и контейнером.
**8. Docker Compose:**
- [ ] Установка и использование Docker Compose для управления многоконтейнерными приложениями.
- [ ] Создание файла `docker-compose.yml`.
- [ ] Команды `docker-compose up`, `docker-compose down` и др.
**9. Понимание образа и слоев контейнера:**
- [ ] Как Docker использует слои для хранения изменений.
- [ ] Кэширование при сборке образов.
- [ ] Оптимизация последовательности инструкций в `Dockerfile`.
**10. Безопасность в Docker:**
- [ ] Лучшие практики для обеспечения безопасности контейнеров.
- [ ] Управление правами доступа и пользователями внутри контейнера.
- [ ] Регулярное обновление образов и использование проверенных базовых образов.
**11. Мониторинг и логирование:**
- [ ] Сбор и анализ логов контейнеров.
- [ ] Интеграция с системами мониторинга и журналирования (например, `ELK Stack`, `Prometheus`, `Grafana`).
**12. Оркестрация контейнеров:**
- [ ] Введение в Docker Swarm: концепции сервисов, стэков, менеджеров и рабочих узлов.
- [ ] Основы Kubernetes: объекты `Pod`, `Deployment`, `Service`.
**13. Практические навыки отладки:**
- [ ] Использование команд для отладки: `docker inspect`, `docker logs`, `docker exec`.
- [ ] Диагностика проблем при сборке образов и запуске контейнеров.
**14. Интеграция с процессом CI/CD:**
- [ ] Встраивание Docker в процессы непрерывной интеграции и доставки.
- [ ] Инструменты и сервисы для автоматизации сборки и развертывания (например, `Jenkins`, `GitLab CI/CD`).
**15. Работа с Registry:**
- [ ] Развертывание собственного реестра образов Docker (`Docker Registry`).
- [ ] Управление приватными и публичными репозиториями образов.
**16. Обновление и масштабирование приложений:**
- [ ] Стратегии обновления контейнеров без простоя (`rolling updates`).
- [ ] Масштабирование сервисов и управление нагрузкой.
**17. Комплексное понимание экосистемы Docker:**
- [ ] Знакомство с дополнительными инструментами: `Docker Machine`, `Docker Swarm`, `Docker Secrets`.
- [ ] Понимание роли Docker в архитектуре микросервисов.
<hr style="border: 2px dashed #ccc;">
![GitLab](https://img.shields.io/badge/GitLab-330F63?style=for-the-badge&logo=gitlab&logoColor=white)
![CI/CD](https://img.shields.io/badge/CI%2FCD-330F63?style=for-the-badge&logo=gitlab&logoColor=white)
---
![Incomplete](https://img.shields.io/badge/&#9744;-Незавершена-lightgray)
---
<!-- ![Complete](https://img.shields.io/badge/&#9745;-Завершена-green) -->
**1. Основы системы контроля версий Git**
- [ ] Понимание концепций Git:
- Репозиторий: Локальный и удаленный.
- Коммиты: Фиксация изменений.
- Ветки (branches): Работа с разными версиями кода.
- Слияние (merge) и ребейз (rebase): Объединение изменений.
- Теги (tags): Пометка определенных коммитов.
- [ ] Основные команды Git:
- `git clone`, `git init`, `git add`, `git commit`, `git push`, `git pull`, `git fetch`, `git branch`, `git checkout`, `git merge`, `git rebase`.
**2. Знакомство с `GitLab`**
- [x] Навигация и интерфейс:
- Создание и управление проектами.
- Использование групп и подгрупп.
- Просмотр исходного кода, коммитов, веток.
- [ ] Управление доступом:
- Роли пользователей: `Guest`, `Reporter`, `Developer`, `Maintainer`, `Owner`.
- Приглашение пользователей в проекты и группы.
- Настройка прав доступа.
- [ ] Issue Tracking и Merge Requests:
- Создание и управление задачами (Issues).
- Использование борды (Boards) для организации задач.
- Создание `Merge Request'ов` для слияния веток. ✅
- Проведение код-ревью.
**3. Основы `CI/CD` и пайплайнов**
- [ ] Концепции `CI/CD`:
- Непрерывная интеграция (`CI`): Автоматическое тестирование и сборка кода при каждом изменении.
- Непрерывная доставка (`CD`): Автоматическое развертывание кода на различные среды.
- [ ] Файл `.gitlab-ci.yml`:
- Структура файла: Определение стадий (`stages`) и заданий (`jobs`).
- Ключевые слова: `stages`, `variables`, `script`, `artifacts`, `dependencies`, `before_script`, `after_script`.
**4. Создание и настройка пайплайнов в `GitLab`**
- [ ] Определение стадий и заданий:
- Создание последовательности стадий: `build`, `test`, `deploy`.
- Настройка заданий для каждой стадии.
- [ ] Условия выполнения заданий:
- Использование `only`, `except`, `rules` для определения, когда запускать задания.
- Настройка запуска заданий по расписанию (`scheduled pipelines`).
- [ ] Параллельное и последовательное выполнение:
- Конфигурация зависимостей между заданиями.
- Настройка параллельных задач для ускорения пайплайна.
**5. Использование` Runner'ов` в `GitLab`**
- [ ] Понимание `GitLab Runner`:
- Роль `Runner'ов` в выполнении заданий.
- Виды `Runner'ов`: `Shared Runner`, `Specific Runner`, `Group Runner`.
- [ ] Установка и настройка `Runner'ов`:
- Регистрация `Runner'а в GitLab`.
- Настройка Executor'а: `Shell`, `Docker`, `Docker Machine`, `Kubernetes`.
**6. Работа с `Docker` в `GitLab CI/CD`**
- [ ] Использование `Docker` образов:
- Определение образа в задании с помощью `image`.
- Использование сервисов (`services`) для баз данных и др.
- [ ] Сборка и публикация `Docker`-образов:
- Сборка образа внутри пайплайна.
- Аутентификация и отправка образа в реестр (`Docker Hub`, `GitLab Container Registry`).
**7. Управление переменными и секретами**
- [ ] Переменные `CI/CD`:
- Создание переменных на уровне проекта, группы или `GitLab Instance`.
- Использование защитных переменных (`protected variables`) для защиты секретной информации.
- [ ] Доступ к переменным в пайплайне:
- Использование переменных в файле `.gitlab-ci.yml`.
- Передача переменных в задания и скрипты.
**8. Артефакты и кэширование**
- [ ] Артефакты (`artifacts`):
- Сохранение файлов после выполнения задания.
- Настройка экспирации артефактов.
- [ ] Кэширование (`cache`):
- Ускорение пайплайна путем кэширования зависимостей.
- Определение ключей кэша для разных веток или заданий.
**9. Переменные в `GitLab CI/CD`:**
- [ ] Общее представление:
- Предопределенные переменные (`Predefined Variables`):
- `GitLab` предоставляет ряд встроенных переменных, таких как `CI_COMMIT_SHA`, `CI_JOB_NAME`, `CI_PIPELINE_ID` и другие.
- Пользовательские переменные (`Custom Variables`):
- Уровня проекта: Настраиваются в разделе проекта `Settings > CI/CD > Variables`.
- Уровня группы или подгруппы: Позволяют задавать переменные, общие для нескольких проектов.
- Определенные в `.gitlab-ci.yml`: Можно объявлять переменные непосредственно в файле конфигурации под ключом `variables`.
- Переменные окружения (`Environment Variables`): Связываются с определенными окружениями (`environments`) для раздельных настроек, например, для `staging` и `production`.
- [ ] Объявление и использование переменных:
- Объявление в `.gitlab-ci.yml`:
- Внутри скриптов доступ к переменным осуществляется через `$VARIABLE_NAME` (для `Linux/Unix`) или `%VARIABLE_NAME%` (для Windows).
- Приоритет переменных.
- Динамические переменные и параметры
**10. Развертывание приложений**
- [ ] `Environments` и `Deployments`:
- Настройка сред (`dev`, `staging`, `production`).
- Просмотр историй развертываний.
- [ ] Стратегии развертывания:
- Автоматическое развертывание при успешном прохождении пайплайна.
- Использование ручных шагов (`manual jobs`) для контроля развертываний.
**11. Мониторинг и отладка**
- [ ] Логи пайплайнов:
- Анализ логов заданий для отладки ошибок.
- Использование возможностей `GitLab` для перезапуска отдельных заданий.
- [ ] Мониторинг производительности:
- Интеграция с инструментами мониторинга (`Prometheus`, `Grafana`).
- Использование `GitLab Metrics`.
**12. Безопасность и соответствие требованиям**
- [ ] Контейнерная безопасность:
- Сканирование уязвимостей в зависимости и образах.
- Использование встроенных функций `GitLab` для статического и динамического анализа безопасности.
- [ ] `Compliance Pipeline`:
⦁ Настройка пайплайнов в соответствии со стандартами безопасности и качества.
**13. Интеграции и расширения**
- [ ] Интеграция с внешними сервисами:
- `Jira`, `Slack`, `Microsoft Teams` и др.
- [ ] `Webhooks` и `API`:
- Настройка вебхуков для уведомлений.
- Использование `API GitLab` для автоматизации задач.
- [ ] `GitLab Pages`:
- Размещение статических сайтов с помощью `GitLab`.
**14. Управление релизами и версиями**
- [ ] Релизы (`Releases`):
- Создание релизов в `GitLab`.
- Управление артефактами релиза.
- [ ] Теги и `Changelog`:
- Использование тэгов для обозначения версий.
- Автоматическое генерирование списка изменений.
**15. Работа с мультипроектными пайплайнами**
- [ ] Межпроектные пайплайны:
- Триггеры между проектами.
- Использование артефактов и зависимостей из других проектов.
**16. Облачные технологии и `Kubernetes`**
- [ ] Развертывание на `Kubernetes`:
- Интеграция `GitLab` с кластерами Kubernetes.
- Использование `GitLab CI/CD` для доставки в `Kubernetes`.
- [ ] `GitOps`:
- Использование подхода GitOps для управления инфраструктурой как кодом.
***
![Версия](https://img.shields.io/badge/version-1.0.1-brightgreen.svg)
![Релиз](https://img.shields.io/badge/release-alfa-red.svg)