feat: добавлена пометка типа операции (Build/Push) в истории сборок Dockerfile

- Добавлена колонка 'Тип' во все таблицы истории сборок
- Для push операций отображается registry вместо платформ
- Сохранение пользователя при создании push лога
- Исправлена ошибка с logger в push_docker_image endpoint
- Улучшено отображение истории сборок с визуальными индикаторами
This commit is contained in:
Сергей Антропов
2026-02-15 22:59:02 +03:00
parent 23e1a6037b
commit 1fbf9185a2
232 changed files with 38075 additions and 5 deletions

View File

@@ -0,0 +1,279 @@
---
# Задачи для роли docker
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
- name: "Reset ANSI color codes"
debug:
msg: "\033[0m"
changed_when: false
tags: [docker, color-reset]
# Определяем семейство ОС для выбора правильного метода установки
- name: Определение семейства ОС
set_fact:
docker_os_family: "{{ ansible_os_family }}"
docker_pkg_manager: "{{ 'yum' if ansible_pkg_mgr == 'yum' else ('dnf' if ansible_pkg_mgr == 'dnf' else 'apt') }}"
# Устанавливаем предварительные зависимости
- name: Установка зависимостей для Debian/Ubuntu
become: true
apt:
name:
- apt-transport-https
- ca-certificates
- curl
- gnupg
- lsb-release
- software-properties-common
state: present
update_cache: yes
when: ansible_os_family == "Debian"
- name: Установка зависимостей для Red Hat
become: true
package:
name:
- yum-utils
- device-mapper-persistent-data
- lvm2
state: present
when: ansible_os_family == "RedHat"
failed_when: false
# Добавляем официальный репозиторий Docker для Debian/Ubuntu
- name: Добавление GPG ключа Docker для Debian/Ubuntu
become: true
shell: |
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/{{ (ansible_distribution | lower) }}/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
args:
creates: /etc/apt/keyrings/docker.asc
when:
- ansible_os_family == "Debian"
- docker_use_official_repo
- name: Добавление репозитория Docker для Debian/Ubuntu
become: true
apt_repository:
repo: "deb [arch={{ ansible_architecture }} signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/{{ (ansible_distribution | lower) }} {{ ansible_distribution_release }} stable"
state: present
filename: docker
update_cache: yes
when:
- ansible_os_family == "Debian"
- docker_use_official_repo
# Добавляем официальный репозиторий Docker для Red Hat
- name: Добавление репозитория Docker для Red Hat через dnf
become: true
shell: |
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
args:
creates: /etc/yum.repos.d/docker-ce.repo
when:
- ansible_os_family == "RedHat"
- ansible_pkg_mgr == "dnf"
- docker_use_official_repo
failed_when: false
- name: Добавление репозитория Docker для Red Hat через yum-config-manager
become: true
shell: |
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
args:
creates: /etc/yum.repos.d/docker-ce.repo
when:
- ansible_os_family == "RedHat"
- ansible_pkg_mgr == "yum"
- docker_use_official_repo
failed_when: false
# Устанавливаем Docker через официальный репозиторий
- name: Установка Docker CE для Debian/Ubuntu (официальный репозиторий)
become: true
apt:
name:
- docker-ce
- docker-ce-cli
- containerd.io
- docker-buildx-plugin
state: "{{ 'present' if docker_version == 'latest' else docker_version }}"
update_cache: yes
when:
- ansible_os_family == "Debian"
- docker_use_official_repo
- docker_install_method == "official"
- name: Установка Docker CE для Red Hat (официальный репозиторий)
become: true
package:
name:
- docker-ce
- docker-ce-cli
- containerd.io
- docker-buildx-plugin
state: "{{ 'present' if docker_version == 'latest' else docker_version }}"
when:
- ansible_os_family == "RedHat"
- docker_use_official_repo
- docker_install_method == "official"
# Устанавливаем Docker через скрипт get.docker.com
- name: Проверка наличия Docker
stat:
path: /usr/bin/docker
register: docker_binary
- name: Скачивание скрипта установки Docker
become: true
get_url:
url: https://get.docker.com
dest: /tmp/get-docker.sh
mode: '0755'
when:
- docker_install_method == "get.docker.com" or not docker_use_official_repo
- not docker_binary.stat.exists
- name: Установка Docker через скрипт get.docker.com
become: true
command: /tmp/get-docker.sh
args:
creates: /usr/bin/docker
when:
- docker_install_method == "get.docker.com" or not docker_use_official_repo
- not docker_binary.stat.exists
- name: Проверка установки Docker
become: true
command: docker --version
register: docker_version_check
changed_when: false
failed_when: false
- name: Вывод версии Docker
debug:
msg: "{{ docker_version_check.stdout if docker_version_check.rc == 0 else 'Docker не установлен' }}"
# Устанавливаем docker-compose-plugin для Debian/Ubuntu
- name: Установка docker-compose-plugin для Debian/Ubuntu
become: true
apt:
name:
- docker-compose-plugin
state: present
when:
- ansible_os_family == "Debian"
- docker_use_compose_plugin
- docker_use_official_repo
# Устанавливаем docker-compose-plugin для Red Hat
- name: Установка docker-compose-plugin для Red Hat
become: true
package:
name:
- docker-compose-plugin
state: present
when:
- ansible_os_family == "RedHat"
- docker_use_compose_plugin
- docker_use_official_repo
# Устанавливаем standalone docker-compose
- name: Скачивание docker-compose
become: true
get_url:
url: "https://github.com/docker/compose/releases/{{ 'latest/download' if docker_compose_version == 'latest' else 'download/v' + docker_compose_version }}/docker-compose-{{ ansible_system }}-{{ ansible_machine }}"
dest: /usr/local/bin/docker-compose
mode: '0755'
when:
- not docker_use_compose_plugin or docker_compose_version != 'latest'
- name: Проверка установки Docker Compose
become: true
shell: |
set -o pipefail
if docker compose version >/dev/null 2>&1; then
docker compose version --short 2>/dev/null || docker compose version
elif docker-compose version >/dev/null 2>&1; then
docker-compose --version
else
echo "Docker Compose не установлен"
fi
register: docker_compose_version_check
changed_when: false
failed_when: false
- name: Вывод версии Docker Compose
debug:
msg: "{{ docker_compose_version_check.stdout if docker_compose_version_check.rc == 0 else 'Docker Compose не установлен' }}"
# Определяем универсальную команду для запуска Compose (docker compose или docker-compose)
- name: Определение команды Docker Compose
become: true
shell: |
if command -v docker >/dev/null 2>&1 && docker compose version >/dev/null 2>&1; then
echo "docker compose"
elif command -v docker-compose >/dev/null 2>&1; then
echo "docker-compose"
else
echo ""
fi
register: compose_cmd_detect
changed_when: false
- name: Установка факта compose_cmd
set_fact:
compose_cmd: "{{ compose_cmd_detect.stdout | default('') }}"
- name: Предупреждение при отсутствии Docker Compose
debug:
msg: "⚠️ Docker Compose не найден; установите docker-compose-plugin или docker-compose"
when: compose_cmd == ""
# Запускаем и включаем службу Docker
- name: Запуск службы Docker
become: true
systemd:
name: docker
state: started
enabled: yes
# Создаем группу docker
- name: Создание группы docker
become: true
group:
name: docker
state: present
# Добавляем пользователей в группу docker
- name: Добавление пользователей в группу docker
become: true
user:
name: "{{ item }}"
groups: docker
append: yes
loop: "{{ docker_users }}"
when: docker_users | length > 0
# Устанавливаем дополнительные пакеты
- name: Установка дополнительных пакетов
become: true
package:
name: "{{ docker_additional_packages }}"
state: present
when: docker_additional_packages | length > 0
# Проверка статуса Docker
- name: Проверка статуса Docker
become: true
command: docker info
register: docker_info
changed_when: false
failed_when: false
- name: Вывод информации о Docker
debug:
msg: "Docker успешно установлен и запущен"
when: docker_info.rc == 0