Migrate CI/CD from Azure Pipelines to GitHub Actions#159
Merged
CedricGuillemet merged 8 commits intomainfrom Apr 17, 2026
Merged
Migrate CI/CD from Azure Pipelines to GitHub Actions#159CedricGuillemet merged 8 commits intomainfrom
CedricGuillemet merged 8 commits intomainfrom
Conversation
Collaborator
CedricGuillemet
commented
Apr 16, 2026
- Add reusable workflows for each build target:
- build-android.yml (macOS-14, JSC/V8, emulator tests)
- build-ios.yml (Xcode version/simulator parameterized)
- build-linux.yml (GCC/Clang, sanitizers)
- build-macos.yml (Xcode, sanitizers)
- build-uwp.yml (x64/arm64, Chakra/JSI/V8)
- build-win32.yml (win32/x64, Chakra/JSI/V8, crash dumps)
- Add ci.yml orchestrating all 18 build jobs
- Remove azure-pipelines.yml and .github/jobs/
- Add reusable workflows for each build target: - build-android.yml (macOS-14, JSC/V8, emulator tests) - build-ios.yml (Xcode version/simulator parameterized) - build-linux.yml (GCC/Clang, sanitizers) - build-macos.yml (Xcode, sanitizers) - build-uwp.yml (x64/arm64, Chakra/JSI/V8) - build-win32.yml (win32/x64, Chakra/JSI/V8, crash dumps) - Add ci.yml orchestrating all 18 build jobs - Remove azure-pipelines.yml and .github/jobs/ Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Migrates the repository’s CI configuration from Azure Pipelines templates to GitHub Actions by introducing reusable workflows per platform and a single orchestrating workflow.
Changes:
- Adds a new
.github/workflows/ci.ymlworkflow that fans out into platform-specific reusable workflows. - Adds reusable workflows for Win32, UWP, macOS, iOS, Linux, and Android builds/tests.
- Removes the Azure Pipelines definition and its
.github/jobs/*job templates.
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 13 comments.
Show a summary per file
| File | Description |
|---|---|
| .github/workflows/ci.yml | New CI orchestrator that invokes reusable workflows for all targets. |
| .github/workflows/build-win32.yml | Reusable Win32 build/test workflow with crash-dump artifact upload on failure. |
| .github/workflows/build-uwp.yml | Reusable UWP build workflow (configure + build). |
| .github/workflows/build-macos.yml | Reusable macOS build/test workflow with optional sanitizers and Xcode selection. |
| .github/workflows/build-linux.yml | Reusable Linux build/test workflow with optional compiler + sanitizers. |
| .github/workflows/build-ios.yml | Reusable iOS simulator build/test workflow with Xcode + simulator selection. |
| .github/workflows/build-android.yml | Reusable Android emulator test workflow parameterized by JS engine. |
| .github/jobs/win32.yml | Removed Azure Pipelines Win32 job template. |
| .github/jobs/uwp.yml | Removed Azure Pipelines UWP job template. |
| .github/jobs/macos.yml | Removed Azure Pipelines macOS job template. |
| .github/jobs/linux.yml | Removed Azure Pipelines Linux job template. |
| .github/jobs/ios.yml | Removed Azure Pipelines iOS job template. |
| .github/jobs/android.yml | Removed Azure Pipelines Android job template. |
| .github/azure-pipelines.yml | Removed Azure Pipelines entrypoint workflow. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Detect host architecture (arm64 vs x86_64) at runtime - Use matching Android system image and ABI filter accordingly - Bump emulator API from 27 to 33 (arm64-v8a images available) - Use swiftshader_indirect GPU for CI reliability - Fix hyphenated input access to use bracket notation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Redirect emulator output to a log file instead of /dev/null - Separate wait-for-device from boot completion polling - Detect emulator crash (process died) and dump log - Add 240s boot timeout with progress output - Add step-level 5min timeout to prevent infinite hangs - Upload emulator log as artifact on failure for debugging Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
macos-14 Apple Silicon runners do not expose Hypervisor Framework, causing 'HVF error: HV_UNSUPPORTED' and immediate emulator crash. macos-13 is Intel-based with working hardware acceleration. The architecture detection step adapts automatically. Ref: actions/runner-images#9751 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace manual emulator setup with the community-standard action that properly handles HVF on Apple Silicon, system image installation, AVD creation, boot waiting, and teardown. Host architecture is detected to select the matching ABI (arm64-v8a on macos-14). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
macOS 14+ runners lack the com.apple.security.hypervisor entitlement required by the Android emulator, causing HVF errors with no workaround. Linux runners have hardware-accelerated KVM support since April 2024, making them the recommended platform for Android emulator CI. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Android emulator does not run reliably on GitHub Actions runners (HVF unsupported on macOS ARM, KVM issues on Linux). Commented out until a stable solution is available. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
bghgary
reviewed
Apr 16, 2026
bghgary
approved these changes
Apr 17, 2026
bghgary
added a commit
to bghgary/JsRuntimeHost
that referenced
this pull request
Apr 17, 2026
PR BabylonJS#159 migrated the CI pipeline from Azure Pipelines to GitHub Actions and removed .github/azure-pipelines.yml and .github/jobs/*.yml. This merge resolves the modify/delete conflicts by accepting the deletions and re-applies the TSan work on the new workflow structure: - build-linux.yml: adds enable-thread-sanitizer input, wires ENABLE_THREAD_SANITIZER CMake flag, and sets TSAN_OPTIONS plus JSC_useConcurrentGC=0 env for the test run (the concurrent GC's SIGUSR1/sem_wait suspension deadlocks under TSan). - build-macos.yml: adds enable-thread-sanitizer input, wires ENABLE_THREAD_SANITIZER CMake flag, and sets TSAN_OPTIONS. - ci.yml: adds Ubuntu_ThreadSanitizer_clang and macOS_Xcode164_ThreadSanitizer jobs. CMakeLists.txt and .github/tsan_suppressions.txt changes from this branch are preserved unchanged. [Created by Copilot on behalf of @bghgary] Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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
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.