Skip to content

feat: standardize build system and CI/CD automation - #133

Open
alexlovelltroy wants to merge 3 commits into
mainfrom
feature/standardized-automation
Open

feat: standardize build system and CI/CD automation#133
alexlovelltroy wants to merge 3 commits into
mainfrom
feature/standardized-automation

Conversation

@alexlovelltroy

Copy link
Copy Markdown
Member

Description

This pull request introduces significant improvements to project automation, compliance, and developer workflow. It adds or updates CI/CD workflows for testing, linting, security, and releases, introduces a comprehensive Makefile for local automation, and brings the repository into SPDX license compliance with headers and documentation updates. Several configuration files and scripts are modernized for consistency with the CI environment, and developer documentation is enhanced to reflect these changes.

CI/CD Workflow Improvements

  • Added new GitHub Actions workflows for linting (lint.yaml), testing (test.yaml), and security (security.yaml), each with concurrency control and updated to use the latest actions and Go version from go.mod for consistent automation.
  • Updated the release workflow (Release.yml) to refine permissions, use the latest action versions, and align build steps with the new Makefile and Go toolchain management.

Build and Development Automation

  • Introduced a new Makefile providing targets for building, testing (including race and stress tests), linting, vulnerability scanning, and pre-PR checks, mirroring the CI workflows for local consistency.
  • Updated Dockerfiles and the container build script to match the new Go version, modernize dependencies, and ensure SPDX compliance.

SPDX License Compliance and Documentation

  • Added SPDX license headers to all configuration, workflow, and documentation files, and updated the LICENSE and LICENSES/MIT.txt for clarity and compliance.
  • Enhanced developer documentation in README.md to describe new automation and CI practices, and added a CHANGELOG.md with SPDX headers.

Configuration and Linting

  • Added .golangci.yml and .pre-commit-config.yaml to enforce code style, linting, and pre-commit checks, and updated linting workflows to use these configurations.

GoReleaser and Dependency Management

  • Updated GoReleaser configuration files to pin dependency versions and ensure reproducible builds, and aligned local and CI builds to use the same toolchain.

These changes collectively modernize the project's automation and compliance, making it easier for developers to contribute and for the project to maintain high quality and legal standards.

Checklist

  • My code follows the style guidelines of this project
  • I have added/updated comments where needed
  • I have added tests that prove my fix is effective or my feature works
  • I have run make test (or equivalent) locally and all tests pass
  • I have updated the relevant documentation (CLI examples, man pages, README, other docs, etc.)
  • DCO Sign-off: All commits are signed off (git commit -s) with my real name and email
  • REUSE Compliance:
    • Each new/modified source file has SPDX copyright and license headers
    • Any non-commentable files include a <filename>.license sidecar
    • All referenced licenses are present in the LICENSES/ directory

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update
  • Dependency update
  • Build system/CI

Signed-off-by: Alex Lovell-Troy <alovelltroy@lanl.gov>
- Added SPDX-FileCopyrightText and SPDX-License-Identifier headers to various files including workflows, scripts, and source code files to ensure compliance with licensing standards.
- Updated documentation files and test files with appropriate licensing information.
- Introduced a pre-commit configuration file to enforce code quality checks.

Signed-off-by: Alex Lovell-Troy <alovelltroy@lanl.gov>
@alexlovelltroy
alexlovelltroy requested a review from synackd August 31, 2026 20:55
Comment thread .github/workflows/lint.yaml
Comment thread .github/workflows/lint.yaml Outdated
Comment thread Makefile Outdated
Comment thread Makefile Outdated
Comment thread Makefile Outdated
Comment thread .github/workflows/security.yaml
Comment thread .github/workflows/test.yaml Outdated
Comment thread cmd/cloud-init-server/version.go Outdated
Comment thread LICENSES/MIT.txt
Comment thread .pre-commit-config.yaml
@synackd synackd changed the title Feature/standardized automation feat: standardize build system and CI/CD automation Aug 31, 2026
- Updated copyright year and format in all relevant files to "Copyright © 2026 OpenCHAMI a Series of LF Projects, LLC".
- Modified the Makefile to include new variables for Go toolchain and GoReleaser versioning.
- Added REUSE.toml for compliance with REUSE specifications.
- Adjusted the installation and testing commands in the Makefile to utilize the new Go environment variable.
- Removed outdated license files from JSON test cases and other directories.
- Ensured consistent formatting and style across all Go source files and scripts.

Signed-off-by: Alex Lovell-Troy <alovelltroy@lanl.gov>

@synackd synackd left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🪨

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants