feat: CI/CD, conventional commits, renovate, publishing prep
CI/CD
This document outlines the CI/CD improvements implemented for streamlining the build process and standardizing pull requests as the project scales.
Benefits
- Uniform Pull Requests: Enforces conventional commit standards
- Automated Version Tracking: Simplifies administration of changes per version
- Streamlined Builds: Separates commands into Makefile and Goreleaser for local testing and development
Components
Makefile
The Makefile provides self-documenting commands for local development:
Available targets:
help: Display this help message
restore: Restore dependencies for a project
build: Build for all platforms
build-windows-ui: Build PS5 NOR modifier for Windows
build-windows-x86: Build UART-CL for Windows (x86)
build-macos-x64: Build UART-CL for macOS (x64)
build-macos-arm64: Build UART-CL for Linux (arm64)
build-linux-x64: Build UART-CL for Linux (x64)
build-linux-arm64: Build UART-CL for Linux (arm64)
clean: Clean build artifacts
Run make in the root directory to see all available commands.
Goreleaser
Goreleaser automates the publishing process to various repositories and formats, including:
- Homebrew
- Linux (various distributions)
- DMG
- App bundles
- Other package formats
Testing the build pipeline:
goreleaser build --snapshot --clean
GitHub Workflows
Three workflows have been implemented:
-
pull-request.yaml
- Validates PR titles adhere to conventional commits
- Verifies .goreleaser file validity
- Extensible for additional tests as needed
-
main.yaml
- Fetches repository tags
- Determines version increment (minor, major, patch) based on conventional commit scheme
- Generates appropriate new tag
-
tag.yaml
- Creates formatted releases with PR information
- Pushes archives to the release page with semantic versioning in filenames
Renovate
The Renovate bot automates dependency management by:
- Merging dependencies to the "next" branch
- Attempting automatic updates when possible
Implementation Changes
- Added renovate.json
- Added Makefile
- Added Goreleaser configuration
- Added GitHub workflows
Further Assistance
For questions or additional DevOps/SRE implementations, please reach out.
@ScrubN Cooperation is done by commenting and providing constructive criticism. Not just a thumbs down.