Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
ac4ff9c
Add NSIS Start Menu shortcut configuration for Windows
ovsky Dec 3, 2025
a74712f
Add build summary scripts for CI/CD
ovsky Dec 3, 2025
63c7c1e
Add build summary and metadata to Windows workflow
ovsky Dec 3, 2025
3e3d57c
Add build summary and metadata generation to workflow
ovsky Dec 3, 2025
4a0be3c
Add build summary and metadata generation to workflow
ovsky Dec 3, 2025
3a74627
Add comprehensive build summary job to workflow
ovsky Dec 3, 2025
9a28f35
Add enhanced CI/CD workflow documentation
ovsky Dec 3, 2025
770eb14
Add caching and ccache support to Linux build workflow
ovsky Dec 3, 2025
a75d03d
Add caching and ccache support to macOS build workflow
ovsky Dec 3, 2025
62a37ff
Add caching and sccache to Windows CI workflow
ovsky Dec 3, 2025
94e2a8d
Create CI-CD-PERFORMANCE.md
ovsky Dec 3, 2025
4b399a1
Add clean_build input to all build workflows
ovsky Dec 3, 2025
434745a
Add clean build option to Windows workflow
ovsky Dec 3, 2025
3c9f9b0
Add clean build option and concurrency to macOS workflows
ovsky Dec 3, 2025
730d269
Add clean build option and concurrency to workflows
ovsky Dec 3, 2025
eeb608b
Add clean build option and concurrency to workflows
ovsky Dec 3, 2025
f510dad
Add clean build option to CI/CD documentation
ovsky Dec 3, 2025
fe87283
fix: Fix CI/CD workflow parameter passing for pull_request events
ovsky Dec 3, 2025
38bd7a8
fix: Use github.event.inputs for workflow parameter passing
ovsky Dec 3, 2025
15b4400
fix: Simplify workflow_call - use defaults from child workflows
ovsky Dec 3, 2025
d68d231
fix(ci): restore working parameter passing pattern for reusable workf…
ovsky Dec 3, 2025
888c063
fix(ci): remove concurrency from orchestrator workflows to prevent de…
ovsky Dec 3, 2025
dbca4e4
fix(ci): remove concurrency from child workflows to prevent cancellation
ovsky Dec 3, 2025
09fcf96
fix(ci): add yamllint config to suppress cosmetic warnings
ovsky Dec 3, 2025
81a5c71
Improve build summaries: add platform to title, table format for CMak…
ovsky Dec 3, 2025
07c90d7
Fix linux-arm64: create build directory before writing SDK version file
ovsky Dec 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/workflows/build-all-arm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@

name: Build - All ARM64

# Note: No concurrency block here - child workflows have their own concurrency controls
# Adding concurrency here would cause deadlock with reusable workflow calls

on:
workflow_dispatch:
inputs:
Expand All @@ -22,6 +25,11 @@ on:
description: "Package format(s) for macOS/Linux (eg. TGZ;DMG or TGZ;DEB;RPM)"
required: false
type: string
clean_build:
description: "Force clean build without using caches"
required: false
type: boolean
default: false
# No pull_request here; only the full orchestrator should run on PR

permissions:
Expand All @@ -37,6 +45,7 @@ jobs:
version: ${{ inputs.version }}
webbrowser_version: ${{ inputs.webbrowser_version }}
package_format: ${{ inputs.package_format }}
clean_build: ${{ inputs.clean_build || false }}

linux-arm64:
uses: ./.github/workflows/build-linux-arm64.yml
Expand All @@ -46,3 +55,4 @@ jobs:
version: ${{ inputs.version }}
webbrowser_version: ${{ inputs.webbrowser_version }}
package_format: ${{ inputs.package_format }}
clean_build: ${{ inputs.clean_build || false }}
11 changes: 11 additions & 0 deletions .github/workflows/build-all-x64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@

name: Build - All x64

# Note: No concurrency block here - child workflows have their own concurrency controls
# Adding concurrency here would cause deadlock with reusable workflow calls

on:
workflow_dispatch:
inputs:
Expand All @@ -22,6 +25,11 @@ on:
description: "Package format(s) for macOS/Linux (eg. TGZ;DMG or TGZ;DEB;RPM)"
required: false
type: string
clean_build:
description: "Force clean build without using caches"
required: false
type: boolean
default: false
# No pull_request here; only the full orchestrator should run on PR

permissions:
Expand All @@ -36,6 +44,7 @@ jobs:
sdk_url: ${{ inputs.sdk_url }}
version: ${{ inputs.version }}
webbrowser_version: ${{ inputs.webbrowser_version }}
clean_build: ${{ inputs.clean_build || false }}

macos-x64:
uses: ./.github/workflows/build-macos.yml
Expand All @@ -45,6 +54,7 @@ jobs:
version: ${{ inputs.version }}
webbrowser_version: ${{ inputs.webbrowser_version }}
package_format: ${{ inputs.package_format }}
clean_build: ${{ inputs.clean_build || false }}

linux-x64:
uses: ./.github/workflows/build-linux.yml
Expand All @@ -54,3 +64,4 @@ jobs:
version: ${{ inputs.version }}
webbrowser_version: ${{ inputs.webbrowser_version }}
package_format: ${{ inputs.package_format }}
clean_build: ${{ inputs.clean_build || false }}
120 changes: 120 additions & 0 deletions .github/workflows/build-all.yml
Original file line number Diff line number Diff line change
@@ -1,24 +1,31 @@
name: Build - All (x64 + ARM64)

# Note: No concurrency block here - child workflows have their own concurrency controls
# Adding concurrency here would cause deadlock with reusable workflow calls

on:
workflow_dispatch:
inputs:
sdk_url:
description: "Override ULTRALIGHT_SDK_URL (raw .7z in base-sdk branch)"
required: false
type: string
default: ''
version:
description: "Override ULTRALIGHT_VERSION (eg. 1.4.0)"
required: false
type: string
default: ''
webbrowser_version:
description: "Override build version name (default 'dev')"
required: false
type: string
default: ''
package_format:
description: "Package format(s) for macOS/Linux (eg. TGZ;DMG or TGZ;DEB;RPM)"
required: false
type: string
default: ''
create_installer:
description: "Create Windows installer via CPack (NSIS) when true"
required: false
Expand All @@ -29,6 +36,11 @@ on:
required: false
type: boolean
default: false
clean_build:
description: "Clean build (skip all caches for fresh build)"
required: false
type: boolean
default: false
pull_request:

permissions:
Expand All @@ -44,6 +56,7 @@ jobs:
version: ${{ inputs.version || github.event.inputs.version }}
webbrowser_version: ${{ inputs.webbrowser_version || github.event.inputs.webbrowser_version }}
development_build: ${{ inputs.development_build || github.event.inputs.development_build || false }}
clean_build: ${{ inputs.clean_build || github.event.inputs.clean_build || false }}
# create installer by default on PRs, otherwise obey input
create_installer: ${{ inputs.create_installer || github.event_name == 'pull_request' }}

Expand All @@ -56,6 +69,7 @@ jobs:
webbrowser_version: ${{ inputs.webbrowser_version || github.event.inputs.webbrowser_version }}
package_format: ${{ inputs.package_format || github.event.inputs.package_format }}
development_build: ${{ inputs.development_build || github.event.inputs.development_build || false }}
clean_build: ${{ inputs.clean_build || github.event.inputs.clean_build || false }}

macos-arm64:
uses: ./.github/workflows/build-macos-arm64.yml
Expand All @@ -66,6 +80,7 @@ jobs:
webbrowser_version: ${{ inputs.webbrowser_version || github.event.inputs.webbrowser_version }}
package_format: ${{ inputs.package_format || github.event.inputs.package_format }}
development_build: ${{ inputs.development_build || github.event.inputs.development_build || false }}
clean_build: ${{ inputs.clean_build || github.event.inputs.clean_build || false }}

linux-x64:
uses: ./.github/workflows/build-linux.yml
Expand All @@ -76,6 +91,7 @@ jobs:
webbrowser_version: ${{ inputs.webbrowser_version || github.event.inputs.webbrowser_version }}
package_format: ${{ inputs.package_format || github.event.inputs.package_format }}
development_build: ${{ inputs.development_build || github.event.inputs.development_build || false }}
clean_build: ${{ inputs.clean_build || github.event.inputs.clean_build || false }}

linux-arm64:
uses: ./.github/workflows/build-linux-arm64.yml
Expand All @@ -86,3 +102,107 @@ jobs:
webbrowser_version: ${{ inputs.webbrowser_version || github.event.inputs.webbrowser_version }}
package_format: ${{ inputs.package_format || github.event.inputs.package_format }}
development_build: ${{ inputs.development_build || github.event.inputs.development_build || false }}
clean_build: ${{ inputs.clean_build || github.event.inputs.clean_build || false }}

summary:
name: "📊 Build Summary"
needs: [windows, macos-x64, macos-arm64, linux-x64, linux-arm64]
if: always()
runs-on: ubuntu-latest
steps:
- name: Download all build summaries
uses: actions/download-artifact@v4
with:
pattern: "*"
path: artifacts
continue-on-error: true

- name: Generate comprehensive summary
shell: bash
run: |
echo "# 🚀 Ultralight WebBrowser - Multi-Platform Build Summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**Build Version:** ${{ inputs.webbrowser_version || github.event.inputs.webbrowser_version || 'dev' }}" >> $GITHUB_STEP_SUMMARY
echo "**Commit:** \`${{ github.sha }}\`" >> $GITHUB_STEP_SUMMARY
echo "**Trigger:** ${{ github.event_name }}" >> $GITHUB_STEP_SUMMARY
echo "**Run ID:** ${{ github.run_id }}" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "---" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY

# Job status table
echo "## 📋 Build Status" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "| Platform | Status |" >> $GITHUB_STEP_SUMMARY
echo "|----------|--------|" >> $GITHUB_STEP_SUMMARY
echo "| 🪟 Windows x64 | ${{ needs.windows.result }} |" >> $GITHUB_STEP_SUMMARY
echo "| 🍎 macOS x64 | ${{ needs.macos-x64.result }} |" >> $GITHUB_STEP_SUMMARY
echo "| 🍎 macOS ARM64 | ${{ needs.macos-arm64.result }} |" >> $GITHUB_STEP_SUMMARY
echo "| 🐧 Linux x64 | ${{ needs.linux-x64.result }} |" >> $GITHUB_STEP_SUMMARY
echo "| 🐧 Linux ARM64 | ${{ needs.linux-arm64.result }} |" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "---" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY

# List all artifacts
echo "## 📦 Generated Artifacts" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY

if [ -d "artifacts" ]; then
find artifacts -type f \( -name "*.zip" -o -name "*.exe" -o -name "*.tar.gz" -o -name "*.deb" -o -name "*.rpm" -o -name "*.dmg" \) | while read file; do
size=$(du -h "$file" | cut -f1)
filename=$(basename "$file")
echo "- 📄 \`$filename\` ($size)" >> $GITHUB_STEP_SUMMARY
done
else
echo "⚠️ No artifacts directory found" >> $GITHUB_STEP_SUMMARY
fi

echo "" >> $GITHUB_STEP_SUMMARY
echo "---" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY

# Include individual platform summaries if available
echo "## 📝 Platform Details" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY

for summary in artifacts/*/BUILD-SUMMARY.md; do
if [ -f "$summary" ]; then
platform=$(dirname "$summary" | xargs basename)
echo "### $platform" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "<details>" >> $GITHUB_STEP_SUMMARY
echo "<summary>View details</summary>" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
cat "$summary" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "</details>" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
fi
done

echo "---" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "**🎉 Build completed!**" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "*For more information, visit the [GitHub Actions run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})*" >> $GITHUB_STEP_SUMMARY

- name: Check overall build status
shell: bash
run: |
echo "Checking build results..."
if [[ "${{ needs.windows.result }}" != "success" ]] || \
[[ "${{ needs.macos-x64.result }}" != "success" ]] || \
[[ "${{ needs.macos-arm64.result }}" != "success" ]] || \
[[ "${{ needs.linux-x64.result }}" != "success" ]] || \
[[ "${{ needs.linux-arm64.result }}" != "success" ]]; then
echo "⚠️ One or more builds failed or were skipped"
echo "Windows: ${{ needs.windows.result }}"
echo "macOS x64: ${{ needs.macos-x64.result }}"
echo "macOS ARM64: ${{ needs.macos-arm64.result }}"
echo "Linux x64: ${{ needs.linux-x64.result }}"
echo "Linux ARM64: ${{ needs.linux-arm64.result }}"
exit 1
else
echo "✅ All builds succeeded!"
fi
14 changes: 14 additions & 0 deletions .github/workflows/build-linux-arm64.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ on:
required: false
type: boolean
default: false
clean_build:
description: "Force clean build without using caches"
required: false
type: boolean
default: false
workflow_call:
inputs:
sdk_url:
Expand All @@ -51,6 +56,11 @@ on:
required: false
type: boolean
default: false
clean_build:
description: "Force clean build without using caches"
required: false
type: boolean
default: false

jobs:
build:
Expand All @@ -66,6 +76,7 @@ jobs:
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 1

- name: 2. Build and Package (ARM64 emulated)
id: arm64_build
Expand Down Expand Up @@ -132,6 +143,9 @@ jobs:
exit 1
fi
echo "Found SDK at: $ROOT"; ls -la "$ROOT/lib" || true
# Write SDK version to file for build summary (create build dir if needed)
mkdir -p build
echo "${VER:-Unknown}" > build/ultralight_sdk_version.txt
echo "== ARM64: Configure & Build =="
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DULTRALIGHT_SDK_ROOT="$ROOT" -DBUILD_TESTING=OFF -DAUTO_INSTALL_CURL=ON -DWEBBROWSER_VERSION="$WEBBROWSER_VERSION"
cmake --build build --parallel
Expand Down
Loading
Loading