mirror of
https://github.com/batonogov/learn-devops.git
synced 2025-11-29 16:53:01 +00:00
* Add pre-commit hook * Fix progress * Update hook --------- Co-authored-by: Fedor Batonogov <f.batonogov@yandex.ru>
87 lines
5.7 KiB
Markdown
87 lines
5.7 KiB
Markdown
# 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
|
||
```
|