CI/CD Пайплайн¶
Обзор¶
Проект использует GitHub Actions для автоматического тестирования, сборки и публикации релизов.
Воркфлоу¶
CI (ci.yml)¶
Запускается при каждом push в master и при pull request'ах:
- cargo fmt — проверка форматирования кода
- cargo clippy — линт с ошибками за предупреждения
- cargo test — запуск всех тестов
- cargo build --release — сборка релизного бинарника
Release (release.yml)¶
Запускается по тегу версии (v*) или вручную через workflow_dispatch.
Задачи:
| Задача | Описание |
|---|---|
test |
Запуск тестов и линт |
build-binary |
Сборка stripped релизного бинарника |
build-deb |
Сборка Debian пакета (.deb) с systemd сервисом |
build-docker |
Сборка и публикация Docker-образа в GHCR |
create-release |
Создание GitHub Release со всеми артефактами |
Создание релиза¶
Способ 1: Git тег (рекомендуется)¶
Способ 2: Через GitHub UI¶
- Перейдите в Actions → Release
- Нажмите Run workflow
- Введите версию (например
0.2.0) - Нажмите Run workflow
Артефакты¶
Каждый релиз создаёт:
| Артефакт | Где хранится | Пример |
|---|---|---|
| Docker-образ | GHCR | ghcr.io/<owner>/pii-anonymizer:0.2.0 |
| .deb пакет | GitHub Release | pii-anonymizer_0.2.0_amd64.deb |
| Бинарник | GitHub Release | pii-anonymizer-v0.2.0-x86_64-linux |
Установка¶
Docker¶
docker pull ghcr.io/<owner>/pii-anonymizer:0.2.0
docker run -p 3000:3000 \
-v $(pwd)/config:/etc/pii-anonymizer \
ghcr.io/<owner>/pii-anonymizer:0.2.0
Debian¶
sudo dpkg -i pii-anonymizer_0.2.0_amd64.deb
# Конфиг: /etc/pii-anonymizer/settings.yaml
sudo systemctl start pii-anonymizer
sudo systemctl status pii-anonymizer
sudo systemctl enable pii-anonymizer
Бинарник¶
chmod +x pii-anonymizer-v0.2.0-x86_64-linux
./pii-anonymizer-v0.2.0-x86_64-linux --config-test
./pii-anonymizer-v0.2.0-x86_64-linux
Содержимое .deb пакета¶
| Путь | Описание |
|---|---|
/usr/local/bin/pii-anonymizer |
Бинарник |
/etc/pii-anonymizer/settings.yaml |
Конфиг (conffile) |
/lib/systemd/system/pii-anonymizer.service |
systemd сервис |
/usr/share/doc/pii-anonymizer/README.md |
Документация |
.deb пакет собирается через cargo-deb.
Docker теги¶
| Тег | Описание |
|---|---|
latest |
Последний релиз |
0.2.0 |
Конкретная версия |
Поддерживаемые архитектуры¶
| Архитектура | Платформа | Пример |
|---|---|---|
amd64 |
x86_64 | Desktop, сервер |
arm64 |
AArch64 | Raspberry Pi 4/5, Apple Silicon |
arm/v7 |
ARMv7 | Raspberry Pi 2/3 |
Docker автоматически выберет нужную архитектуру при docker pull: