Skip to content

ci(github): split backend builds into separate CI jobs#11

Merged
Jvr2022 merged 7 commits into
mainfrom
ci/github-split-backend-builds
Apr 9, 2026
Merged

ci(github): split backend builds into separate CI jobs#11
Jvr2022 merged 7 commits into
mainfrom
ci/github-split-backend-builds

Conversation

@Jvr2022
Copy link
Copy Markdown
Owner

@Jvr2022 Jvr2022 commented Apr 8, 2026

Summary

What Changed

Verification

Summary by CodeRabbit

  • Tests

    • Added runtime smoke tests to verify library dependencies and version compatibility across different web engine backends.
  • Chores

    • Enhanced CI/CD pipeline to build and test multiple web engine configurations as separate jobs with distinct artifacts.
    • Refactored code organization for improved maintainability.

Copilot AI review requested due to automatic review settings April 8, 2026 16:59
@chatgpt-codex-connector
Copy link
Copy Markdown

Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits.
Credits must be used to enable repository wide code reviews.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 8, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ea3c7c06-0da9-4a23-bf88-e1325d107a3f

📥 Commits

Reviewing files that changed from the base of the PR and between eaa0956 and 7fd8066.

📒 Files selected for processing (3)
  • .github/workflows/ci.yml
  • src/browser_window.cpp
  • src/browser_window.h
💤 Files with no reviewable changes (1)
  • src/browser_window.h
✅ Files skipped from review due to trivial changes (1)
  • src/browser_window.cpp
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/ci.yml

📝 Walkthrough

Walkthrough

The CI workflow is restructured to build separate binaries for Qt WebEngine and WebKitGTK with distinct dependencies, uploading each as uniquely named artifacts. A new runtime-smoke job verifies runtime linkage of both binaries. Simultaneously, conditional compilation guards around QAuthenticator in source files are refactored for consistency.

Changes

Cohort / File(s) Summary
CI/CD Workflow Restructuring
.github/workflows/ci.yml
Split single build job into build-qtwebengine and build-webkitgtk-fallback with OS-specific dependencies. Added runtime-smoke job to verify runtime binary linkage against expected Qt framework dependencies before execution.
Source Code Preprocessor Refactoring
src/browser_window.cpp, src/browser_window.h
Moved QAuthenticator forward declaration and include directive from conditional #if SEB_HAS_QTWEBENGINE block to unconditional scope, consolidating guard usage.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰 Two builds now flourish where once was one,
QtWebEngine and WebKitGTK run!
Guards rearranged in header's embrace,
Runtime smoke tests verify the place. ✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description template sections (Summary, What Changed, Verification) are completely empty with no substantive content provided by the author. Fill in all template sections with details about why the split was needed, what specifically changed in the workflow, and how the changes were verified.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title 'ci(github): split backend builds into separate CI jobs' accurately reflects the main change where CI workflows split into separate build jobs for different backends.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/github-split-backend-builds

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
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

Splits CI backend builds into separate GitHub Actions jobs and adds a runtime smoke verification step intended to validate both Qt WebEngine and WebKitGTK builds.

Changes:

  • Split the single build job into build-qtwebengine and build-webkitgtk-fallback.
  • Add a runtime-smoke job that runs safe-exam-browser --version for both intended backends.
  • Add an ignore rule for docs/next-update-plan.md.

Reviewed changes

Copilot reviewed 1 out of 2 changed files in this pull request and generated 4 comments.

File Description
.github/workflows/ci.yml Splits CI into separate backend build jobs and adds a runtime smoke job.
.gitignore Ignores docs/next-update-plan.md.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/ci.yml
Comment thread .github/workflows/ci.yml
Comment thread .github/workflows/ci.yml
Comment thread .github/workflows/ci.yml Outdated
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
.github/workflows/ci.yml (1)

70-80: Consider using runtime packages instead of -dev packages.

The runtime-smoke job installs development packages (e.g., libqt6svg6-dev, qt6-base-dev) when only the runtime shared libraries are needed for executing the binaries. While -dev packages pull in runtime dependencies and this will work, it installs unnecessary headers and development files.

For a leaner runtime verification, consider installing just the runtime packages (e.g., libqt6svg6, libqt6core6, libqt6webenginecore6, etc.).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/ci.yml around lines 70 - 80, The workflow's runtime-smoke
job installs development packages (libqt6svg6-dev, qt6-base-dev,
qt6-tools-dev-tools, qt6-webengine-dev, libwebkit2gtk-4.1-dev, libgtk-3-dev,
zlib1g-dev) but only needs runtime shared libraries; replace the -dev packages
with their runtime counterparts (e.g., libqt6svg6, libqt6core6,
libqt6webenginecore6, libwebkit2gtk-4.1-0 or equivalent, libgtk-3-0, zlib1g) in
the "Install runtime dependencies" step so the CI installs lean runtime packages
for the runtime-smoke job instead of development headers/tools.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In @.github/workflows/ci.yml:
- Around line 70-80: The workflow's runtime-smoke job installs development
packages (libqt6svg6-dev, qt6-base-dev, qt6-tools-dev-tools, qt6-webengine-dev,
libwebkit2gtk-4.1-dev, libgtk-3-dev, zlib1g-dev) but only needs runtime shared
libraries; replace the -dev packages with their runtime counterparts (e.g.,
libqt6svg6, libqt6core6, libqt6webenginecore6, libwebkit2gtk-4.1-0 or
equivalent, libgtk-3-0, zlib1g) in the "Install runtime dependencies" step so
the CI installs lean runtime packages for the runtime-smoke job instead of
development headers/tools.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 1400b522-3842-41b1-a3c6-fc28d05bb98f

📥 Commits

Reviewing files that changed from the base of the PR and between 49b2c4d and eaa0956.

📒 Files selected for processing (2)
  • .github/workflows/ci.yml
  • .gitignore

Copy link
Copy Markdown
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

Copilot reviewed 1 out of 2 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/ci.yml Outdated
Copy link
Copy Markdown
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

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/ci.yml Outdated
Comment on lines +27 to +28
- name: Build Qt WebEngine backend
run: ./scripts/build.sh
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

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

Both backend jobs call ./scripts/build.sh without explicitly forcing the intended engine. Since scripts/build.sh forwards args to qmake6 and seb-linux-qt.pro supports CONFIG+=force_qtwebengine / CONFIG+=force_webkitgtk, it would be more robust to pass the corresponding CONFIG flag here to guarantee the produced artifact is the Qt WebEngine build even if dependency detection changes or the runner image includes additional packages.

Copilot uses AI. Check for mistakes.
Comment thread .github/workflows/ci.yml Outdated
Comment on lines 54 to 55
- name: Build WebKitGTK fallback backend
run: ./scripts/build.sh
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

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

This WebKitGTK job also runs ./scripts/build.sh without explicitly selecting the fallback engine. To ensure this artifact is truly the WebKitGTK build (and not Qt WebEngine due to auto-detection), consider passing CONFIG+=force_webkitgtk (supported by seb-linux-qt.pro) to the build script.

Copilot uses AI. Check for mistakes.
Comment thread .github/workflows/ci.yml
Comment on lines +94 to +106
- name: Verify Qt WebEngine runtime
env:
QT_QPA_PLATFORM: offscreen
run: ./build/bin/safe-exam-browser --version
run: |
chmod +x artifacts/qtwebengine/safe-exam-browser
artifacts/qtwebengine/safe-exam-browser --version

- name: Verify WebKitGTK runtime
env:
QT_QPA_PLATFORM: offscreen
run: |
chmod +x artifacts/webkitgtk/safe-exam-browser
artifacts/webkitgtk/safe-exam-browser --version
Copy link

Copilot AI Apr 8, 2026

Choose a reason for hiding this comment

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

The runtime verification currently runs --version for both artifacts, which doesn’t validate that the downloaded binary matches the intended backend (Qt WebEngine vs WebKitGTK). Consider adding a lightweight assertion here (e.g., ldd/readelf check for linking against Qt6WebEngine* vs libwebkit2gtk*, or emitting backend info in --version) so the job fails if the wrong artifact is produced/uploaded.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
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

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@Jvr2022 Jvr2022 merged commit 00fbaa6 into main Apr 9, 2026
4 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