CI/CD Setup
CI/CD pipeline configuration for DocBuilder using GitHub Actions and Forgejo Actions.
GitHub Actions
Multi-Architecture Docker Build
Workflow: .github/workflows/docker-multiarch.yml
Triggers:
- Push to
mainbranch - Git tags
v*.*.* - Manual dispatch
Features:
- Multi-arch builds (linux/amd64, linux/arm64)
- Automatic semver tagging (
v1.2.3,v1.2,v1,latest) - GitHub Container Registry (ghcr.io)
- Build caching
Usage:
Forgejo Actions
Pipeline Jobs
Workflow: .forgejo/workflows/ci.yml
Triggers:
- Push to
main,master,develop - Pull requests
- Release publications
Jobs:
- Test - Tests, linting, formatting
- Build - Binary compilation, artifacts
- Docker Build - Container images
- Integration Test - Full pipeline test
- Security Scan - Vulnerability scanning
- Deploy Staging - Staging deployment
- Deploy Production - Production deployment
Maintenance Pipeline
Workflow: .forgejo/workflows/maintenance.yml
Triggers:
- Weekly schedule (Sundays 2 AM UTC)
- Manual dispatch
Jobs:
- Dependency updates
- Hugo version updates
- Artifact cleanup
Configuration
Secrets Required
Environments
staging- Automatic deploymentproduction- Manual approval required
Local Development
Docker Compose
Manual Testing
Pipeline Features
Caching
- Go module cache
- Docker layer cache
Multi-Platform Support
- Docker Buildx with QEMU (GitHub Actions)
- Native multi-arch (Forgejo Actions)
- Automatic platform detection
Testing
- Unit tests with coverage
- Integration tests
- Docker functionality tests
- Security scanning (Trivy)
Quality Gates
- Code formatting (gofmt)
- Linting (golangci-lint)
- Test coverage
- Security scanning
Deployment
Staging
- Automatic on
mainbranch - Latest successful build
- Environment:
staging
Production
- Manual via GitHub releases
- Requires approval
- Versioned tags
- Environment:
production
Customization
Adding Tests
Add *_test.go files. Pipeline discovers them automatically.
Build Targets
Modify Makefile targets:
make deps- Dependenciesmake fmt- Formattingmake lint- Lintingmake build- Binary buildmake test-coverage- Tests
Environment Variables
GO_VERSION- Go versionREGISTRY- Container registry URLIMAGE_NAME- Docker image name
Troubleshooting
Build Failures
- Check Go version compatibility
- Verify dependency availability
- Review test output
Docker Build Issues
- Verify Dockerfile syntax
- Check build context includes required files
- Confirm base images available
Registry Authentication
- Ensure
REGISTRY_TOKENconfigured - Verify token has push permissions
- Check registry URL
Debug Commands
Monitoring
Pipeline includes observability:
- Metrics - Prometheus collection
- Logs - Structured logging (slog)
- Health Checks - Docker health checks
- Performance - Build time tracking
[ci-cd-setup](https://docs.home.luguber.info/_uid/d7da54f5-3864-4e53-b004-d8d3ae551f98/)