diff --git a/.ansible-lint b/.ansible-lint new file mode 100644 index 0000000..254aa7d --- /dev/null +++ b/.ansible-lint @@ -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 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..07be0ad --- /dev/null +++ b/.pre-commit-config.yaml @@ -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 diff --git a/README.md b/README.md index 04c420b..c2ec1e9 100644 --- a/README.md +++ b/README.md @@ -18,3 +18,69 @@ 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 +``` diff --git a/ansible/roles/haproxy_static_pods/files/check_apiserver.sh b/ansible/roles/haproxy_static_pods/files/check_apiserver.sh old mode 100644 new mode 100755 diff --git a/docker/README.md b/docker/README.md index ff2b25a..2d6db4f 100644 --- a/docker/README.md +++ b/docker/README.md @@ -49,12 +49,12 @@ docker compose --profile blue up --wait --remove-orphans --scale web-blue=5 Вывод ```output - ✔ Network docker_default Created 0.0s - ✔ Container docker-nginx-proxy-1 Healthy 0.1s - ✔ Container docker-web-blue-2 Healthy 0.1s - ✔ Container docker-web-blue-4 Healthy 0.1s - ✔ Container docker-web-blue-3 Healthy 0.0s - ✔ Container docker-web-blue-5 Healthy 0.1s + ✔ Network docker_default Created 0.0s + ✔ Container docker-nginx-proxy-1 Healthy 0.1s + ✔ Container docker-web-blue-2 Healthy 0.1s + ✔ Container docker-web-blue-4 Healthy 0.1s + ✔ Container docker-web-blue-3 Healthy 0.0s + ✔ Container docker-web-blue-5 Healthy 0.1s ✔ Container docker-web-blue-1 Healthy 0.1s ``` diff --git a/docker/deploy.sh b/docker/deploy.sh old mode 100644 new mode 100755 index 8b213d0..4f92bc4 --- a/docker/deploy.sh +++ b/docker/deploy.sh @@ -18,7 +18,7 @@ fi # Выводим сообщение о том, какой профиль поднимается в данный момент (значение переменной NEW). echo Поднимаю проект с профилем ${NEW} # Эта команда использует docker-compose для запуска проекта с указанным профилем (значение переменной NEW), -# разворачивая контейнеры в фоновом режиме, пересоздавая их, удаляя сиротские контейнеры, +# разворачивая контейнеры в фоновом режиме, пересоздавая их, удаляя сиротские контейнеры, # масштабируя сервис "web" на три экземпляра и дожидаясь их запуска. docker compose \ --profile ${NEW} \ diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..6837283 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +pre-commit==3.7.0