-
Notifications
You must be signed in to change notification settings - Fork 4.5k
CI: Fix issues, centralize config, improve caching #13682
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this 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.jsonstores 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 |
e9182d2 to
0222878
Compare
0222878 to
8ceed73
Compare
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/
8ceed73 to
007313d
Compare
Summary
Comprehensive CI/CD improvements including bug fixes, centralized configuration, caching enhancements, and new automation workflows.
Fixes
Centralized Configuration
.github/build-config.jsonfor Qt, GStreamer, Xcode, NDK, Java, ccache versions.github/actions/build-configcomposite action to read configCaching Improvements
Workflow Consolidation
New Workflows
Best Practices
.github/actions/**to workflow path triggersNew Files
Test Plan