-
Notifications
You must be signed in to change notification settings - Fork 0
Enhance and optimize the CI/CD workflow #50
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
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Configures NSIS installer to create and remove Start Menu shortcuts for Ultralight Web Browser on Windows. Ensures shortcuts point to the correct executable after installation.
Introduces PowerShell and Bash scripts to generate a comprehensive markdown build summary for Ultralight WebBrowser CI/CD workflows. The scripts collect build metadata, package details, checksums, artifact verification, installation instructions, and build statistics for Windows, Linux, and macOS platforms.
Introduces steps to generate a comprehensive build summary and metadata JSON during the Windows build workflow. The summary and metadata files are displayed, uploaded as artifacts, and appended to the GitHub Actions job summary for improved traceability and reporting.
Introduces steps to generate a comprehensive build summary and metadata JSON during the macOS build workflow. The summary is displayed, uploaded as an artifact, and appended to the GitHub Actions job summary for improved build traceability and reporting.
Introduces steps to generate and display a comprehensive build summary and metadata JSON during the Linux build workflow. The summary and metadata files are now included in the uploaded artifacts and appended to the GitHub Actions job summary for improved traceability and reporting.
Introduces a new 'summary' job to the GitHub Actions workflow that aggregates build results, lists generated artifacts, and includes platform-specific summaries. The job also checks the overall build status and fails if any platform build did not succeed, improving visibility and reporting for multi-platform builds.
Introduces a comprehensive guide detailing recent improvements to the CI/CD pipeline for the Ultralight WebBrowser project, including build summaries, metadata files, installer fixes, and multi-platform dashboards.
Introduces multiple cache steps for CMake, SDK, APT, and compiler (ccache) to speed up GitHub Actions builds. Adds logic to skip CMake reconfiguration if cache is valid and displays cache statistics after build completion.
Introduces multiple cache steps for CMake build artifacts, SDK files, Homebrew, and compiler cache (ccache) to speed up GitHub Actions builds. Adds logic to skip CMake reconfiguration if cache is valid and displays cache statistics after build completion.
Introduces CMake build cache, SDK cache, and compiler cache (sccache) setup steps to the Windows GitHub Actions workflow. Adds logic to skip CMake reconfiguration if cache is valid and displays cache statistics after build, improving CI speed and resource usage.
Introduces a 'clean_build' boolean input to the build-all, build-linux, build-macos, and build-windows GitHub Actions workflows. This allows triggering a clean build by skipping all caches for a fresh build.
Introduces a CLEAN_BUILD input to the build-windows GitHub Actions workflow. When enabled, cache and compiler cache steps are skipped to ensure a fresh build environment.
Introduces a 'clean_build' input to both macOS workflow files, allowing builds to bypass caches when requested. Adds concurrency control to prevent duplicate workflow runs for the same ref. Also sets fetch-depth to 1 for checkout steps to optimize repository cloning.
Introduces a 'clean_build' input to both Linux build workflows to allow forcing builds without caches. Adds concurrency control to prevent duplicate workflow runs for the same ref, and sets fetch-depth to 1 for checkout steps. Conditional cache setup steps are now skipped if 'clean_build' is enabled.
Introduces a 'clean_build' input to all orchestrator workflows to allow forcing builds without caches. Adds concurrency groups to prevent duplicate workflow runs for the same ref, improving CI reliability and resource usage.
Documents the new 'clean_build' option for workflows, detailing usage scenarios, steps to enable it, and its impact on caching. Updates version history to reflect the addition and related optimizations.
- Simplify clean_build condition checks to 'inputs.clean_build != true' - Fix parameter passing in build-all.yml to handle missing inputs on PR events - Add empty string fallbacks for string inputs - Use proper boolean comparison for development_build and clean_build
- For workflow_dispatch, inputs are accessed via github.event.inputs
- Boolean inputs from workflow_dispatch are strings ('true'/'false')
- Add empty string defaults for string inputs to prevent null errors
- Remove all with: parameters except create_installer for Windows - Child workflows have proper defaults defined - Avoids type conversion issues between workflow_dispatch and workflow_call
…lows Based on commit 770eb14, restored the working pattern for passing parameters between build-all.yml and child workflows: - Use inputs.xxx || github.event.inputs.xxx pattern - Add || false fallback for boolean parameters - Include all parameters (sdk_url, version, webbrowser_version, etc.) - Add clean_build parameter using the same proven pattern This fixes the issue where child workflows weren't being triggered because parameters weren't being passed correctly.
…adlock GitHub Actions detects deadlock when parent and child workflows share the same concurrency group. Removed concurrency blocks from: - build-all.yml - build-all-x64.yml - build-all-arm.yml Child workflows (build-windows.yml, build-linux.yml, etc.) retain their own concurrency controls which is sufficient for preventing duplicate runs.
When child workflows are called via 'uses:', they inherit the parent's github.workflow context, causing all child jobs to share the same concurrency group and cancel each other. Removed concurrency blocks from: - build-windows.yml - build-linux.yml - build-macos.yml - build-macos-arm64.yml - build-linux-arm64.yml Concurrency control should only be at the orchestrator level if needed, not in reusable child workflows.
Added .yamllint.yml with relaxed rules for GitHub Actions workflows:
- Disabled line-length check (workflow expressions are often long)
- Disabled document-start requirement (not needed for GH Actions)
- Disabled truthy key check ('on:' is valid in GH Actions)
Updated build-windows.yml to use the config file.
…e, fix SDK version detection - Add platform and architecture to summary titles (e.g., 'Build Summary - Windows x64') - Change CMake Settings from code block to formatted table - Fix 'Assets directory not found' to be info instead of warning - Write SDK version to file during SDK preparation for all platforms - Add fallback messages when CMake cache or assets not available
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request updates the GitHub Actions workflows for building the project across all platforms (x64 and ARM64, Windows, macOS, Linux). The main goals are to improve build reliability, add flexibility for clean builds, optimize caching, and provide better build summaries. The most important changes are grouped below.
Workflow Management and Reliability
concurrencycontrols to all build workflows to prevent duplicate runs for the same ref, ensuring only one build per branch or commit is active at a time. [1] [2] [3] [4] [5]Build Input and Clean Build Support
clean_buildinput parameter to all orchestrator and platform workflows, allowing users to force a clean build that skips all caches for a fresh build. This is passed through to all jobs and steps. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18]Caching Optimization
clean_buildis not requested. This speeds up incremental builds while allowing full cache bypass for clean builds.actions/checkoutsteps to usefetch-depth: 1for faster checkouts across Linux ARM64 and Linux x64 workflows. [1] [2]Build Process Improvements
Build Summary and Reporting
build-all.yml) that aggregates platform results, lists generated artifacts with sizes, and includes detailed platform summaries. The job also checks overall build status and fails if any platform build fails.Let me know if you want a deeper dive into any specific workflow or step!
This pull request updates the GitHub Actions workflows to improve build orchestration, caching, and reporting for multi-platform builds (x64 and ARM64). The most significant changes include adding a "clean build" option to all workflows, implementing concurrency controls to prevent duplicate runs, enhancing caching mechanisms for faster builds, and introducing a comprehensive build summary report.
Workflow orchestration and reporting improvements:
summaryjob to.github/workflows/build-all.ymlthat generates a detailed build summary, including status for each platform, artifact listings with sizes, and platform-specific details. It also checks overall build status and fails the workflow if any platform build fails.Build control and concurrency:
concurrencygroups in all orchestrator and platform workflows to prevent duplicate runs for the same ref and automatically cancel in-progress duplicates. [1] [2] [3] [4] [5]Clean build options and input propagation:
clean_buildinput to all orchestrator and platform workflows, allowing users to force a clean build that skips all caches. This input is propagated to downstream jobs and used to conditionally enable/disable caching steps. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16]Build caching and efficiency:
clean_buildinput. Also added logic to skip CMake reconfiguration if the cache is valid, saving build time. [1] [2] [3] [4]General workflow improvements:
fetch-depth: 1foractions/checkoutin Linux workflows for faster and lighter checkouts. [1] [2]Let me know if you'd like to see how the new build summary looks or need help testing the clean build feature!