Skip to content

Migrate CI/CD from Azure Pipelines to GitHub Actions#159

Open
CedricGuillemet wants to merge 8 commits intomainfrom
useGithubAction
Open

Migrate CI/CD from Azure Pipelines to GitHub Actions#159
CedricGuillemet wants to merge 8 commits intomainfrom
useGithubAction

Conversation

@CedricGuillemet
Copy link
Copy Markdown
Collaborator

  • 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>
Copilot AI review requested due to automatic review settings April 16, 2026 07:35
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

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.yml workflow 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.

Comment thread .github/workflows/build-ios.yml
Comment thread .github/workflows/build-ios.yml
Comment thread .github/workflows/build-android.yml
Comment thread .github/workflows/ci.yml
push:
branches: [main]
pull_request:
branches: [main]
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

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

Azure Pipelines previously ran a nightly scheduled build (schedules: cron: "0 0 * * *"), but this GitHub Actions workflow has no equivalent schedule: trigger. If nightly coverage is still desired, add a schedule event (and/or workflow_dispatch) to preserve that behavior.

Suggested change
branches: [main]
branches: [main]
workflow_dispatch:
schedule:
- cron: '0 0 * * *'

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Is that extra nightly build needed @bghgary ?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I didn't know we had this, so I'm guessing not.

Comment thread .github/workflows/build-win32.yml
Comment thread .github/workflows/build-linux.yml
Comment thread .github/workflows/build-ios.yml
Comment thread .github/workflows/build-android.yml Outdated
Comment thread .github/workflows/build-macos.yml
Comment thread .github/workflows/build-macos.yml
CedricGuillemet and others added 7 commits April 16, 2026 09:55
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

This comment was marked as outdated.

Copy link
Copy Markdown
Contributor

@bghgary bghgary left a comment

Choose a reason for hiding this comment

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

[Review by Copilot on behalf of @bghgary]

Looks good to me.

Comment thread .github/workflows/ci.yml
push:
branches: [main]
pull_request:
branches: [main]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Consider adding workflow_dispatch: so CI can be manually triggered from the Actions tab without pushing a commit.

chmod +x gradlew
./gradlew connectedAndroidTest \
-PabiFilters=x86_64 \
-PjsEngine=${{ inputs['js-engine'] }} \
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Nit: This file uses bracket notation (inputs['js-engine']) while all other workflow files use dot notation (inputs.js-engine). Both work — just an inconsistency.

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.

3 participants