Документация по техническим средствам хранения исходного текста и объектного кода программного обеспечения, а также средствам компиляции исходного текста в объектный код
Введение
Этот документ описывает используемые технические средства для хранения исходного текста и объектного кода программного обеспечения, а также инструменты, применяемые для компиляции исходного текста в объектный код. Перечисленные системы и инструменты помогают обеспечить надёжное, безопасное и эффективное управление жизненным циклом программного обеспечения.
1. Хранение исходного текста программного обеспечения
1.1 Система контроля версий: GitLab
Для хранения и управления исходным текстом программного обеспечения используется система контроля версий GitLab.
Основные функции и возможности GitLab:
- Хранение и управление исходным кодом:
- Ведется централизованное хранение исходного кода. Все изменения фиксируются и сохраняются в виде историй версий.
- Возможность клонирования репозиториев для локальной разработки.
- Ветвление и слияние:
- Поддержка создания независимых веток для работы над новыми функциями или исправлениями ошибок.
- Механизмы слияния (merge request) позволяют аккуратно интегрировать изменения из разных веток, минимизируя конфликты.
- История изменений и ревизии:
- Отслеживание всех изменений, выполненных разработчиками, с фиксацией автора и времени внесения изменений.
- Возможность восстановления до предыдущих версий кода.
- Безопасность и доступ:
- Настройки доступа и пользовательские роли обеспечивают контроль над тем, кто может просматривать и изменять код.
- Аутентификация и авторизация через сторонние сервисы (LDAP, OAuth и др.).
- Интеграция с CI/CD:
- Встроенные функции непрерывной интеграции и доставки (CI/CD) позволяют автоматизировать процесс компиляции и тестирования кода.
2. Хранение объектного кода программного обеспечения
2.1 Docker Registry: Yandex Registry
Для хранения и управления объектным кодом, включая сборку Docker-образов, используется Yandex Registry.
Основные функции и возможности Yandex Registry:
- Безопасное хранение:
- Надежное и защищенное хранение сборок и артефактов.
- Шифрование данных на диске и при передаче.
- Версионность:
- Поддержка тегирования и версионности образов, что позволяет легко управлять различными версиями сборок.
- Возможность отката к любой предыдущей версии образа.
- Интеграция с GitLab:
- Автоматическая отправка образов в Yandex Registry после успешного прохождения пайплайнов в CI/CD.
- Вебхуки и уведомления о новых сборках.
3. Средства компиляции исходного текста
3.1 Система непрерывной интеграции и доставки (CI/CD): GitLab CI
Для автоматической компиляции исходного текста в объектный код используется GitLab CI.
Основные функции и возможности GitLab CI:
- Пайплайны сборки и тестирования:
- Настраиваемые пайплайны для автоматической компиляции кода, выполнения тестов и сборки Docker-образов.
- Распараллеливание задач для ускорения выполнения пайплайнов.
- Автоматизация:
- Полная автоматизация процессов компиляции, тестирования и сборки, что минимизирует человеческие ошибки.
- Использование конфигурационных файлов
.gitlab-ci.yml
для определения стадий и задач пайплайнов.
- Интеграция с Docker и Yandex Registry:
- Поддержка создания и загрузки Docker-образов напрямую из пайплайнов.
- Возможность автоматической публикации сборок в Yandex Registry.
- Масштабируемость и гибкость:
- Возможность использования различных раннеров для выполнения пайплайнов на различных платформах и в различных окружениях.
- Настройки условий выполнения задач в зависимости от веток, тегов и событий.
Пример цикла компиляции и разработки
- Управление исходным кодом в GitLab:
- Разработчики создают и изменяют исходный код, фиксируя изменения в репозиториях GitLab.
- Ветки создаются для новых функций и исправлений ошибок, а затем сливаются в основную ветку (main) через merge request.
- Инициация пайплайна в GitLab CI:
- Каждый коммит в ветку main инициирует запуск пайплайна в GitLab CI для компиляции и тестирования.
- Пайплайн состоит из различных стадий, включая сборку, тестирование и создание Docker-образа.
- Сборка и тестирование:
- Код компилируется, запускаются автоматические юнит-тесты и интеграционные тесты.
- В случае успешного прохождения всех тестов, создается Docker-образ.
- Загрузка в Yandex Registry:
- Готовый Docker-образ автоматически загружается в Yandex Registry с соответствующими метками и версиями.
- Система отправляет уведомления о новых сборках и метках через вебхуки.