PS5NorModifier icon indicating copy to clipboard operation
PS5NorModifier copied to clipboard

feat: CI/CD, conventional commits, renovate, publishing prep

Open DanyHenriquez opened this issue 8 months ago • 1 comments

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:

  1. pull-request.yaml

    • Validates PR titles adhere to conventional commits
    • Verifies .goreleaser file validity
    • Extensible for additional tests as needed
  2. main.yaml

    • Fetches repository tags
    • Determines version increment (minor, major, patch) based on conventional commit scheme
    • Generates appropriate new tag
  3. 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.

DanyHenriquez avatar May 13 '25 11:05 DanyHenriquez

@ScrubN Cooperation is done by commenting and providing constructive criticism. Not just a thumbs down.

DanyHenriquez avatar May 17 '25 10:05 DanyHenriquez