mirror of
https://github.com/batonogov/learn-devops.git
synced 2026-02-26 06:11:47 +00:00
Add pre-commit hook (#8)
* Add pre-commit hook * Fix progress * Update hook --------- Co-authored-by: Fedor Batonogov <f.batonogov@yandex.ru>
This commit is contained in:
committed by
GitHub
parent
016da166dd
commit
946cde1ea6
6
.ansible-lint
Normal file
6
.ansible-lint
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
skip_list:
|
||||||
|
- risky-file-permissions
|
||||||
|
|
||||||
|
exclude_paths:
|
||||||
|
- ansible/roles/haproxy_static_pods/files/haproxy.yaml
|
||||||
|
- ansible/roles/haproxy_static_pods/files/keepalived.yaml
|
||||||
30
.pre-commit-config.yaml
Normal file
30
.pre-commit-config.yaml
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
repos:
|
||||||
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
|
rev: v4.6.0
|
||||||
|
hooks:
|
||||||
|
- id: check-added-large-files
|
||||||
|
- id: check-case-conflict
|
||||||
|
- id: check-merge-conflict
|
||||||
|
- id: check-shebang-scripts-are-executable
|
||||||
|
- id: check-vcs-permalinks
|
||||||
|
- id: check-yaml
|
||||||
|
files: .*\.(yaml|yml)$
|
||||||
|
- id: destroyed-symlinks
|
||||||
|
- id: detect-private-key
|
||||||
|
- id: end-of-file-fixer
|
||||||
|
- id: fix-byte-order-marker
|
||||||
|
- id: mixed-line-ending
|
||||||
|
- id: no-commit-to-branch
|
||||||
|
- id: requirements-txt-fixer
|
||||||
|
- id: trailing-whitespace
|
||||||
|
|
||||||
|
- repo: https://github.com/ansible-community/ansible-lint.git
|
||||||
|
rev: v24.5.0
|
||||||
|
hooks:
|
||||||
|
- id: ansible-lint
|
||||||
|
|
||||||
|
- repo: https://github.com/tofuutils/pre-commit-opentofu
|
||||||
|
rev: v1.0.2
|
||||||
|
hooks:
|
||||||
|
- id: tofu_fmt
|
||||||
|
- id: tofu_validate
|
||||||
66
README.md
66
README.md
@@ -18,3 +18,69 @@
|
|||||||
3. [OpenTofu](./opnetofu) — программное обеспечение с **открытым исходным кодом**, используемое для **управления внешними ресурсами** (например, в рамках модели **инфраструктура как код**). Проект Linux Foundation. Пользователи определяют и предоставляют инфраструктуру центра обработки данных с помощью **декларативного языка конфигурации**, известного как HashiCorp Configuration Language (HCL) или JSON.
|
3. [OpenTofu](./opnetofu) — программное обеспечение с **открытым исходным кодом**, используемое для **управления внешними ресурсами** (например, в рамках модели **инфраструктура как код**). Проект Linux Foundation. Пользователи определяют и предоставляют инфраструктуру центра обработки данных с помощью **декларативного языка конфигурации**, известного как HashiCorp Configuration Language (HCL) или JSON.
|
||||||
|
|
||||||
4. [Ansible](./ansible) — система управления конфигурациями, написанная на языке программирования **Python**, с использованием **декларативного языка разметки** для **описания конфигураций**. Применяется для **автоматизации настройки и развёртывания программного обеспечения**.
|
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
|
||||||
|
```
|
||||||
|
|||||||
0
ansible/roles/haproxy_static_pods/files/check_apiserver.sh
Normal file → Executable file
0
ansible/roles/haproxy_static_pods/files/check_apiserver.sh
Normal file → Executable file
@@ -49,12 +49,12 @@ docker compose --profile blue up --wait --remove-orphans --scale web-blue=5
|
|||||||
Вывод
|
Вывод
|
||||||
|
|
||||||
```output
|
```output
|
||||||
✔ Network docker_default Created 0.0s
|
✔ Network docker_default Created 0.0s
|
||||||
✔ Container docker-nginx-proxy-1 Healthy 0.1s
|
✔ Container docker-nginx-proxy-1 Healthy 0.1s
|
||||||
✔ Container docker-web-blue-2 Healthy 0.1s
|
✔ Container docker-web-blue-2 Healthy 0.1s
|
||||||
✔ Container docker-web-blue-4 Healthy 0.1s
|
✔ Container docker-web-blue-4 Healthy 0.1s
|
||||||
✔ Container docker-web-blue-3 Healthy 0.0s
|
✔ Container docker-web-blue-3 Healthy 0.0s
|
||||||
✔ Container docker-web-blue-5 Healthy 0.1s
|
✔ Container docker-web-blue-5 Healthy 0.1s
|
||||||
✔ Container docker-web-blue-1 Healthy 0.1s
|
✔ Container docker-web-blue-1 Healthy 0.1s
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
2
docker/deploy.sh
Normal file → Executable file
2
docker/deploy.sh
Normal file → Executable file
@@ -18,7 +18,7 @@ fi
|
|||||||
# Выводим сообщение о том, какой профиль поднимается в данный момент (значение переменной NEW).
|
# Выводим сообщение о том, какой профиль поднимается в данный момент (значение переменной NEW).
|
||||||
echo Поднимаю проект с профилем ${NEW}
|
echo Поднимаю проект с профилем ${NEW}
|
||||||
# Эта команда использует docker-compose для запуска проекта с указанным профилем (значение переменной NEW),
|
# Эта команда использует docker-compose для запуска проекта с указанным профилем (значение переменной NEW),
|
||||||
# разворачивая контейнеры в фоновом режиме, пересоздавая их, удаляя сиротские контейнеры,
|
# разворачивая контейнеры в фоновом режиме, пересоздавая их, удаляя сиротские контейнеры,
|
||||||
# масштабируя сервис "web" на три экземпляра и дожидаясь их запуска.
|
# масштабируя сервис "web" на три экземпляра и дожидаясь их запуска.
|
||||||
docker compose \
|
docker compose \
|
||||||
--profile ${NEW} \
|
--profile ${NEW} \
|
||||||
|
|||||||
1
requirements.txt
Normal file
1
requirements.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
pre-commit==3.7.0
|
||||||
Reference in New Issue
Block a user