Skip to content

Conversation

@ovsky
Copy link
Owner

@ovsky ovsky commented Dec 3, 2025

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

  • Added concurrency controls 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

Caching Optimization

  • Updated Linux build workflows to use multiple cache layers (CMake, SDK, APT, compiler cache) but only when clean_build is not requested. This speeds up incremental builds while allowing full cache bypass for clean builds.
  • Improved actions/checkout steps to use fetch-depth: 1 for faster checkouts across Linux ARM64 and Linux x64 workflows. [1] [2]

Build Process Improvements

  • Added logic to skip CMake reconfiguration if the cache is valid and the SDK root hasn't changed, saving build time.

Build Summary and Reporting

  • Added a comprehensive build summary job to the orchestrator workflow (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:

  • Added a summary job to .github/workflows/build-all.yml that 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:

  • Introduced concurrency groups 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:

  • Added a clean_build input 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:

  • Enhanced caching in the Linux workflows by adding conditional cache steps for CMake, SDK, APT, and compiler cache (ccache), all gated by the clean_build input. Also added logic to skip CMake reconfiguration if the cache is valid, saving build time. [1] [2] [3] [4]

General workflow improvements:

  • Set fetch-depth: 1 for actions/checkout in 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!

ovsky added 26 commits December 3, 2025 13:24
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
@ovsky ovsky merged commit d68d874 into dev Dec 3, 2025
7 checks passed
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