CI/CD Pipeline¶
Overview¶
The project uses GitHub Actions for automated testing, building, and publishing releases.
Workflows¶
CI (ci.yml)¶
Runs on every push to master and on pull requests:
- cargo fmt — check code formatting
- cargo clippy — lint with warnings as errors
- cargo test — run all tests
- cargo build --release — build release binary
Release (release.yml)¶
Triggered by pushing a version tag (v*) or manually via workflow_dispatch.
Jobs:
| Job | Description |
|---|---|
test |
Run tests and linting |
build-binary |
Build stripped release binary |
build-deb |
Build Debian package (.deb) with systemd service |
build-docker |
Build and push Docker image to GHCR |
create-release |
Create GitHub Release with all artifacts |
Creating a Release¶
Method 1: Git Tag (recommended)¶
Method 2: GitHub UI¶
- Go to Actions → Release
- Click Run workflow
- Enter version (e.g.
0.2.0) - Click Run workflow
Artifacts¶
Each release produces:
| Artifact | Location | Example |
|---|---|---|
| Docker image | GHCR | ghcr.io/<owner>/pii-anonymizer:0.2.0 |
| .deb package | GitHub Release | pii-anonymizer_0.2.0_amd64.deb |
| Binary | GitHub Release | pii-anonymizer-v0.2.0-x86_64-linux |
Installing¶
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
# Config is at /etc/pii-anonymizer/settings.yaml
sudo systemctl start pii-anonymizer
sudo systemctl status pii-anonymizer
sudo systemctl enable pii-anonymizer
Binary¶
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 Package Contents¶
| Path | Description |
|---|---|
/usr/local/bin/pii-anonymizer |
Binary |
/etc/pii-anonymizer/settings.yaml |
Config file (marked as conffile) |
/lib/systemd/system/pii-anonymizer.service |
systemd service |
/usr/share/doc/pii-anonymizer/README.md |
Documentation |
The .deb package is built using cargo-deb.
Docker Tags¶
| Tag | Description |
|---|---|
latest |
Latest release |
0.2.0 |
Specific version |
Supported Architectures¶
| Architecture | Platform | Example |
|---|---|---|
amd64 |
x86_64 | Desktop, server |
arm64 |
AArch64 | Raspberry Pi 4/5, Apple Silicon |
arm/v7 |
ARMv7 | Raspberry Pi 2/3 |
Docker автоматически выберет нужную архитектуру при docker pull: