Files
learn-devops/README.md
github-actions[bot] 946cde1ea6 Add pre-commit hook (#8)
* Add pre-commit hook

* Fix progress

* Update hook

---------

Co-authored-by: Fedor Batonogov <f.batonogov@yandex.ru>
2024-05-22 15:05:24 +03:00

87 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# learn-devops
## Описание
В этом репозитории собраны примеры из моего [YouTube канала](https://www.youtube.com/@fedor_batonogov).
Тут я рассказываю о разных инструментах необходимых для **DevOps специалиста** и делюсь опытом.
## Мы стремимся подходу **Инфраструктура как код**
Основная идея **Infrastructure as Code (IaC)** в том, чтобы **описать инфраструктуру кодом** и сделать её доступной для понимания. IaC работает со всеми компонентами инфраструктуры так, будто это просто данные. Такое стало возможно благодаря умению платформ виртуализации и облачных провайдеров разделять инфраструктуру и оборудование, а для управления серверами, хранилищами и сетевыми устройствами предоставлять специальное API.
## Структура проекта
1. [Docker](./docker/) - это программная платформа для быстрой сборки, отладки и развертывания приложений с помощью **контейнеров**.
2. [kubeadm](./kubeadm/) - это инструмент для простого и быстрого развёртывания кластера Kubernetes.
3. [OpenTofu](./opnetofu) — программное обеспечение с **открытым исходным кодом**, используемое для **управления внешними ресурсами** (например, в рамках модели **инфраструктура как код**). Проект Linux Foundation. Пользователи определяют и предоставляют инфраструктуру центра обработки данных с помощью **декларативного языка конфигурации**, известного как HashiCorp Configuration Language (HCL) или JSON.
4. [Ansible](./ansible) — система управления конфигурациями, написанная на языке программирования **Python**, с использованием **декларативного языка разметки** для **описания конфигураций**. Применяется для **автоматизации настройки и развёртывания программного обеспечения**.
## Pre-commit hook
**Pre-commit hook** — это скрипт, который выполняется перед тем, как изменения будут зафиксированы в системе контроля версий, например, в Git.
Он позволяет автоматически проверять код и выполнять определенные действия, такие как запуск тестов, проверка стиля кода, статический анализ и другие проверки, чтобы предотвратить попадание некорректного или несоответствующего стандартам кода в репозиторий.
Преимущества использования **pre-commit hook**-ов:
- **Автоматизация проверки кода**: Хуки позволяют автоматизировать проверку качества кода, что помогает поддерживать стандарты кода в команде.
- **Раннее выявление ошибок**: Хуки помогают обнаруживать ошибки и недочеты до того, как они попадут в репозиторий, что снижает количество багов и повышает качество кода.
- **Повышение производительности**: Автоматические проверки экономят время разработчиков, которое они могли бы потратить на ручные проверки.
Использование pre-commit hook-ов является хорошей практикой, которая помогает поддерживать качество и стабильность кода в проекте.
- Установка
Прежде чем запускать **хуки**, необходимо установить менеджер пакетов **pre-commit**.
С помощью **pip**:
```console
pip install pre-commit==3.7.1
```
В python-проекте добавьте в файл **requirements.txt** (или **requirements-dev.txt**) следующее:
```text
pre-commit==3.7.1
```
С помощью **homebrew**:
```console
brew install pre-commit
```
С помощью **conda** (через **conda-forge**):
```console
conda install -c conda-forge pre-commit
```
- Быстрый запуск
Следуйте инструкциям по установке, приведенным выше.
pre-commit --version должен показать, какую версию вы используете.
```console
pre-commit --version
pre-commit 3.7.1
```
Устанавливаем **pre-commit**
```console
pre-commit install
```
### Обновление версии хуков
Обновить все версии хуков до последней версии можно при помощи команды
```sh
pre-commit autoupdate
```