GitHub Actions workflows: - ci.yml: Auto-test on push/PR * Build on Ubuntu and macOS * Run AddressSanitizer * Memory leak checks with Valgrind - release.yml: Auto-release on tags * Build for Linux (amd64, arm64) * Build for macOS (amd64, arm64) * Generate checksums * Create GitHub release with binaries Deployment tools: - install.sh: One-line installer * Auto-detect OS and arch * Download from releases * Install to /usr/local/bin - tnt.service: systemd unit file * Auto-restart on failure * Security hardening * Runs as dedicated user - DEPLOYMENT.md: Complete deployment guide * Quick install * systemd setup * Firewall config * Docker alternative Usage: curl -sSL https://raw.githubusercontent.com/m1ngsama/TNT/main/install.sh | sh Create release: git tag v1.0.0 git push origin v1.0.0
2 KiB
CI/CD USAGE GUIDE
AUTOMATIC TESTING
Every push or PR automatically runs:
- Build on Ubuntu and macOS
- AddressSanitizer checks
- Valgrind memory leak detection
Check status: https://github.com/m1ngsama/TNT/actions
CREATING RELEASES
-
Update version in CHANGELOG.md
-
Create and push tag: git tag v1.0.0 git push origin v1.0.0
-
GitHub Actions automatically:
- Builds binaries (Linux/macOS, AMD64/ARM64)
- Creates release
- Uploads binaries
- Generates checksums
-
Release appears at: https://github.com/m1ngsama/TNT/releases
DEPLOYING TO SERVERS
Single command on any server: curl -sSL https://raw.githubusercontent.com/m1ngsama/TNT/main/install.sh | sh
Or with specific version: VERSION=v1.0.0 curl -sSL https://raw.githubusercontent.com/m1ngsama/TNT/main/install.sh | sh
PRODUCTION SETUP (systemd)
-
Install binary (see above)
-
Setup service: sudo useradd -r -s /bin/false tnt sudo mkdir -p /var/lib/tnt sudo chown tnt:tnt /var/lib/tnt sudo cp tnt.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now tnt
-
Check status: sudo systemctl status tnt sudo journalctl -u tnt -f
UPDATING SERVERS
Stop service: sudo systemctl stop tnt
Run installer again: curl -sSL https://raw.githubusercontent.com/m1ngsama/TNT/main/install.sh | sh
Restart: sudo systemctl start tnt
PLATFORMS SUPPORTED
✓ Linux AMD64 (x86_64) ✓ Linux ARM64 (aarch64) ✓ macOS Intel (x86_64) ✓ macOS Apple Silicon (arm64)
EXAMPLE WORKFLOW
Local development
make && make asan ./tnt
Create release
git tag v1.0.1 git push origin v1.0.1
Wait 5 minutes for builds
Deploy to production servers
for server in server1 server2 server3; do ssh $server "curl -sSL https://raw.githubusercontent.com/m1ngsama/TNT/main/install.sh | VERSION=v1.0.1 sh" ssh $server "sudo systemctl restart tnt" done