Skip to content

Conversation

@HTRamsey
Copy link
Collaborator

@HTRamsey HTRamsey commented Dec 1, 2025

Summary

Comprehensive CI/CD improvements including bug fixes, centralized configuration, caching enhancements, and new automation workflows.

Fixes

  • Fix docker action missing input definition for build-type
  • Fix SUPPORT.md incorrect C++17 reference (should be C++20)
  • Fix custom.yml referencing wrong workflow path
  • Fix concurrency branch reference (main → master)
  • Fix docs_deploy.yml impossible merged PR condition
  • Remove redundant git fetch from common action
  • Remove unused github_token from upload action calls

Centralized Configuration

  • Add .github/build-config.json for Qt, GStreamer, Xcode, NDK, Java, ccache versions
  • Add .github/actions/build-config composite action to read config
  • All workflows now use centralized versions instead of hardcoded values

Caching Improvements

  • Cache ccache binary on Linux (avoids download on each run)
  • Increase ccache max-size from 1G to 2G
  • Skip cache save on PR builds (restores from main branch caches, saves storage)
  • Add caching to coverage workflow (was missing)

Workflow Consolidation

  • Merge 3 Android workflows into 1 using matrix strategy
  • Merge custom.yml into windows.yml as matrix option
  • Rename lupdate.yaml → lupdate.yml for consistency

New Workflows

  • codeql.yml - Security scanning with security-extended queries
  • scorecard.yml - OpenSSF Scorecard analysis
  • coverage.yml - Code coverage with Codecov integration
  • dependency-review.yml - Scan dependencies on PRs
  • check-links.yml - Validate links in markdown files
  • labeler.yml - Auto-label PRs by changed files
  • welcome.yml - Welcome first-time contributors
  • greetings.yml - Smart greetings based on PR type
  • auto-merge.yml - Auto-merge dependabot patch/minor updates
  • repo-stats.yml - Weekly repository statistics

Best Practices

  • Add permissions blocks to all workflows
  • Add timeout-minutes to all jobs
  • Add job names and shell defaults
  • Enable concurrency blocks in all build workflows
  • Add .github/actions/** to workflow path triggers

New Files

  • CODEOWNERS template
  • CITATION.cff for academic citations
  • Enhanced PR template with type/testing sections
  • task.yml issue template for maintainers
  • Discussion templates

Test Plan

  • Verify Linux workflow builds successfully
  • Verify Windows workflow builds successfully
  • Verify macOS workflow builds successfully
  • Verify Android workflow builds on all 3 host platforms
  • Verify CodeQL analysis runs without errors
  • Verify coverage workflow generates reports

Copilot AI review requested due to automatic review settings December 1, 2025 13:39
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This is a comprehensive CI/CD modernization that centralizes configuration, fixes bugs, adds security scanning, and improves caching efficiency. The PR consolidates 3 separate Android workflows into 1 matrix-based workflow and merges the custom build workflow into the main Windows workflow.

Key Changes

  • Centralized Configuration: New .github/build-config.json stores Qt, GStreamer, NDK, and other version numbers in one place
  • Enhanced Workflows: Added CodeQL security scanning, coverage reporting, dependency review, and OpenSSF Scorecard
  • Caching Improvements: Increased ccache to 2G, cache ccache binary on Linux, skip cache saves on PRs
  • Bug Fixes: Fixed missing docker action input, incorrect C++ version reference (C++17→C++20), workflow path references

Reviewed changes

Copilot reviewed 69 out of 71 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
.github/build-config.json Central version config for all toolchains
.github/actions/build-config/action.yml Composite action to read centralized config
.github/actions/install-dependencies/action.yml Unified dependency installation across platforms
.github/workflows/windows.yml Enhanced with build config, custom build support
.github/workflows/android.yml Consolidated 3 separate workflows into 1 matrix
.github/workflows/codeql.yml New security scanning workflow
.github/workflows/coverage.yml New code coverage workflow
tools/setup/install-dependencies-windows.ps1 Enhanced with CI support, parameterization
tools/setup/build-gstreamer.sh New script for building GStreamer from source
.github/labeler.yml Auto-label PRs by changed files
Multiple template files Enhanced PR/issue templates with better structure

@HTRamsey HTRamsey force-pushed the dev-ci-updates-2 branch 25 times, most recently from e9182d2 to 0222878 Compare December 2, 2025 16:28
Fixes:
- Fix docker action missing input definition for build-type
- Fix SUPPORT.md incorrect C++17 reference (should be C++20)
- Fix custom.yml referencing wrong workflow path
- Fix concurrency branch reference (main -> master)
- Fix docs_deploy.yml impossible merged PR condition
- Remove redundant git fetch from common action
- Remove unused github_token from upload action calls

Workflow Improvements:
- Centralize Qt/GStreamer/NDK versions in .github/build-config.json
- Add .github/actions/build-config composite action
- Enable concurrency blocks in all build workflows
- Add timeout-minutes and permissions to all jobs
- Update action versions (checkout v6, setup-python v6, upload-artifact v5)
- Merge 3 Android workflows into 1 using matrix strategy
- Rename lupdate.yaml -> lupdate.yml for consistency
- Add release.yml for automated GitHub releases
- Add build-summary.yml for PR build status comments
- Add size-check.yml for artifact size monitoring
- Replace blinemedical/setup-gstreamer with install-dependencies action

Caching:
- Cache ccache binary on Linux (avoids download each run)
- Increase ccache max-size from 1G to 2G
- Skip cache save on PR builds (use main branch caches)

Tools/Scripts:
- Add read-config.sh helper to read from build-config.json
- Update install-dependencies-osx.sh to use centralized config
- Update build-gstreamer.sh to use centralized config
- Update install-qt-debian.sh to use centralized config
- Update install-qt-macos.sh to use centralized config
- Update install-qt-windows.ps1 to use centralized config
- Update GStreamer version to 1.24.12 (was inconsistent)

New Workflows:
- codeql.yml - Security scanning
- coverage.yml - Code coverage with Codecov
- scorecard.yml - OpenSSF Scorecard
- dependency-review.yml - PR dependency scanning
- check-links.yml - Markdown link validation
- labeler.yml - Auto-label PRs by path
- welcome.yml - Contributor welcome
- auto-merge.yml - Auto-merge dependabot patches
- repo-stats.yml - Weekly statistics

Config Files:
- .typos.toml - Spell checker with project terms
- .prettierrc - JSON/YAML/Markdown formatting
- .qmlformat.ini - QML formatting
- .nvmrc - Node version for docs
- .vale.ini - Prose linting
- pyrightconfig.json - Python type checking
- renovate.json - Dependency update bot config
- .mailmap - Git author consolidation

CMake Presets:
- Add base presets: debug, release, coverage, minimal, sccache
- Add Linux variants: Linux-debug, Linux-coverage, Linux-minimal
- Update version to 6, cmake minimum to 3.25

Pre-commit Hooks:
- Add check for deprecated QML Connections syntax
- Clean up Q_ASSERT check to use Python with verbose output

Developer Tooling:
- Add Makefile with common commands (configure, build, test, lint)
- Add justfile wrapper for Makefile
- Move CodingStyle examples to tools/coding-style/

Documentation:
- Add CODING_STYLE.md comprehensive guide
- Update CodingStyle.h/cc with C++20 features
- Update docs/coding_style.md to link to root guide
- Add README CI badges

GitHub Config:
- Add CODEOWNERS template
- Add CITATION.cff for academic citations
- Add renovate.json for dependency updates
- Enhance PR template with type/testing sections
- Move codecov.yml, markdownlint.json, vale.ini to .github/
@HTRamsey HTRamsey closed this Dec 9, 2025
@HTRamsey HTRamsey deleted the dev-ci-updates-2 branch December 10, 2025 12:24
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.

1 participant