Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Disable sandboxing for macOS tests in CI #6866

Merged

Conversation

vashworth
Copy link
Contributor

@vashworth vashworth commented Jun 4, 2024

macOS 14 added new requirements that un-codesigned sandbox apps must be granted access when changed. Waiting for this UI caused macOS tests to fail on macOS 14. Additionally, adding codesigning is not sufficient, since it must still be approved before codesigning is enough to pass the check. As a workaround, this PR disables sandboxing for macOS tests in CI.

Screenshot 2024-05-30 at 2 41 33 PM

https://developer.apple.com/documentation/updates/security#June-2023)

App Sandbox now associates your macOS app with its sandbox container using its code signature. The operating system asks the person using your app to grant permission if it tries to access a sandbox container associated with a different app. For more information, see Accessing files from the macOS App Sandbox.

And that link explains why this is happening on a macOS 14 update:

In macOS 14 and later, the operating system uses your app’s code signature to associate it with its sandbox container. If your app tries to access the sandbox container owned by another app, the system asks the person using your app whether to grant access. If the person denies access and your app is already running, then it can’t read or write the files in the other app’s sandbox container. If the person denies access while your app is launching and trying to enter the other app’s sandbox container, your app fails to launch.

The operating system also tracks the association between an app’s code signing identity and its sandbox container for helper tools, including launch agents. If a person denies permission for a launch agent to enter its sandbox container and the app fails to start, launchd starts the launch agent again and the operating system re-requests access.

Fixes packages part of flutter/flutter#149264.

Verified tests pass:
https://ci.chromium.org/ui/p/flutter/builders/staging.shadow/Mac_arm64%20macos_platform_tests%20master%20-%20packages/6/overview

Pre-launch Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@vashworth vashworth marked this pull request as ready for review June 5, 2024 19:11
packages/pigeon/tool/shared/native_project_runners.dart Outdated Show resolved Hide resolved
packages/pigeon/tool/shared/native_project_runners.dart Outdated Show resolved Hide resolved
script/tool/lib/src/common/xcode.dart Outdated Show resolved Hide resolved
script/tool/lib/src/common/xcode.dart Outdated Show resolved Hide resolved
Copy link
Contributor

@stuartmorgan stuartmorgan left a comment

Choose a reason for hiding this comment

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

LGTM

@vashworth vashworth added the autosubmit Merge PR when tree becomes green via auto submit App label Jun 6, 2024
@auto-submit auto-submit bot merged commit 3282c23 into flutter:main Jun 6, 2024
74 checks passed
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jun 7, 2024
auto-submit bot pushed a commit to flutter/flutter that referenced this pull request Jun 7, 2024
flutter/packages@586faa6...8a2c4e4

2024-06-06 jonahwilliams@google.com Revert "Migrate `video_player/android` from `SurfaceTexture`->`SurfaceProducer`." (flutter/packages#6882)
2024-06-06 baumths@gmail.com [two_dimensional_scrollables] Adds generics to the callbacks and builders of TreeView (flutter/packages#6864)
2024-06-06 15619084+vashworth@users.noreply.github.com Run tests on macOS 13 or 14 (flutter/packages#6877)
2024-06-06 15619084+vashworth@users.noreply.github.com Disable sandboxing directly for macOS tests (flutter/packages#6880)
2024-06-06 tarrinneal@gmail.com [pigeon] Moves all codec logic to singular custom codec (flutter/packages#6600)
2024-06-06 engine-flutter-autoroll@skia.org Roll Flutter (stable) from a14f74f to 761747b (6 revisions) (flutter/packages#6878)
2024-06-06 engine-flutter-autoroll@skia.org Roll Flutter from 27e0656 to 4608a89 (17 revisions) (flutter/packages#6876)
2024-06-06 15619084+vashworth@users.noreply.github.com Disable sandboxing for macOS tests in CI (flutter/packages#6866)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC flutter-ecosystem@google.com,rmistry@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
arc-yong pushed a commit to Arctuition/packages-arc that referenced this pull request Jun 14, 2024
macOS 14 added new requirements that un-codesigned sandbox apps must be granted access when changed. Waiting for this UI caused macOS tests to fail on macOS 14. Additionally, adding codesigning is not sufficient, since it must still be approved before codesigning is enough to pass the check. As a workaround, this PR disables sandboxing for macOS tests in CI.

![Screenshot 2024-05-30 at 2 41 33�PM](https://github.com/flutter/flutter/assets/682784/1bc32620-5edb-420a-866c-5cc529b2ac55)

https://developer.apple.com/documentation/updates/security#June-2023)
> App Sandbox now associates your macOS app with its sandbox container using its code signature. The operating system asks the person using your app to grant permission if it tries to access a sandbox container associated with a different app. For more information, see [Accessing files from the macOS App Sandbox](https://developer.apple.com/documentation/security/app_sandbox/accessing_files_from_the_macos_app_sandbox).

And that link explains why this is happening on a macOS 14 update:

> In macOS 14 and later, the operating system uses your app�s code signature to associate it with its sandbox container. If your app tries to access the sandbox container owned by another app, the system asks the person using your app whether to grant access. If the person denies access and your app is already running, then it can�t read or write the files in the other app�s sandbox container. If the person denies access while your app is launching and trying to enter the other app�s sandbox container, your app fails to launch.
> 
> The operating system also tracks the association between an app�s code signing identity and its sandbox container for helper tools, including launch agents. If a person denies permission for a launch agent to enter its sandbox container and the app fails to start, launchd starts the launch agent again and the operating system re-requests access.

Fixes packages part of flutter/flutter#149264.

Verified tests pass:
https://ci.chromium.org/ui/p/flutter/builders/staging.shadow/Mac_arm64%20macos_platform_tests%20master%20-%20packages/6/overview
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
autosubmit Merge PR when tree becomes green via auto submit App p: pigeon platform-macos
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants