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

Migrate flutter/packages Cirrus tasks to LUCI #114373

Closed
46 of 51 tasks
keyonghan opened this issue Oct 31, 2022 · 12 comments
Closed
46 of 51 tasks

Migrate flutter/packages Cirrus tasks to LUCI #114373

keyonghan opened this issue Oct 31, 2022 · 12 comments
Assignees
Labels
P1 High-priority issues at the top of the work list package flutter/packages repository. See also p: labels. team Infra upgrades, team productivity, code health, technical debt. See also team: labels. team-ecosystem Owned by Ecosystem team

Comments

@keyonghan
Copy link
Contributor

keyonghan commented Oct 31, 2022

This tracks the CI migration for plugins and packages repositories. More context: go/flutter-plugins-packages-luci-migration

Plugins Mac-intel:

Plugins Mac-arm:

  • ios-build_all_plugins CHANNEL:master
  • ios-build_all_plugins CHANNEL:stable
  • macos-platform_tests CHANNEL:master
  • macos-platform_tests CHANNEL:stable

Plugins Linux:

  • Linux plugin_tools_tests
  • repo_checks
  • dart_unit_tests CHANNEL:master
  • dart_unit_tests CHANNEL:stable
  • analyze CHANNEL:master
  • analyze CHANNEL:stable
  • Legacy-version-analyze CHANNEL:3.7.12
  • Legacy-version-analyze CHANNEL:3.3.10
  • downgraded_analyze
  • readme_excerpts - folded into repo_checks
  • Web-build_all_plugins CHANNEL:master
  • Web-build_all_plugins CHANNEL:stable
  • linux-platform_tests CHANNEL:master
  • linux-platform_tests CHANNEL:stable

Plugins Linux (heavy):

Packages Mac-intel:

  • macos-build_all_plugins CHANNEL:master
  • macos-build_all_plugins CHANNEL:stable
@keyonghan keyonghan self-assigned this Oct 31, 2022
@keyonghan keyonghan added plugin team-infra Owned by Infrastructure team P1 High-priority issues at the top of the work list labels Oct 31, 2022
@keyonghan keyonghan added the package flutter/packages repository. See also p: labels. label Nov 22, 2022
@keyonghan keyonghan changed the title Migrate plugins Cirrus tasks to LUCI Migrate plugins/packages Cirrus tasks to LUCI Nov 22, 2022
pbo-linaro pushed a commit to pbo-linaro/flutter-recipes that referenced this issue Nov 24, 2022
This CL:
1) enables Mac test support
2) adds args support for script

LED build: https://ci.chromium.org/raw/build/logs.chromium.org/flutter/led/keyonghan_google.com/459eedcfec89368ece5d62a7b3339ac384006ff5a94d7540dfc9e37dd21dc3d2/+/build.proto?server=chromium-swarm.appspot.com

This build is based on a new Mac target, proposed in PR: flutter/plugins#6637

Change-Id: Ic75a9718075dc898da9f747bfc9bd2a1bf38e000
Bug: flutter/flutter#114373
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/35303
Commit-Queue: Keyong Han <keyonghan@google.com>
Reviewed-by: Stuart Morgan <stuartmorgan@google.com>
pbo-linaro pushed a commit to pbo-linaro/flutter-recipes that referenced this issue Nov 24, 2022
@godofredoc
Copy link
Contributor

@drewroengoogle @ricardoamador @yusuf-goog it seems like all of you have been brainstorming about docker support for different reasons. You may want to have a quick sync.

stuartmorgan added a commit to stuartmorgan/packages that referenced this issue May 16, 2023
Enables the new LUCI repo tools test, and removes the Cirrus version.

Part of flutter/flutter#114373
auto-submit bot pushed a commit to flutter/packages that referenced this issue May 16, 2023
Enables the new LUCI repo tools test, and removes the Cirrus version.

Part of flutter/flutter#114373
@stuartmorgan
Copy link
Contributor

stuartmorgan commented Jun 14, 2023

Collecting some notes from my initial looks at converting things, and discussion in other issues:

  • repo_checks has a lot of scripts that individually should be very easy to bring over, but migrating that task without something analogous to always would be a non-trivial loss of functionality (see discussion here).
  • analyze is probably trivial to migrate, with the caveat that:
    • legacy_version_analyze and downgraded_analyze are currently configured to run three more analyze steps in parallel with each other, but only after analyze has succeeded. I don't know if there's any way to express that in LUCI. (We could just always run all three, but that would be something of a waste since if analyze fails the others are almost guaranteed to fail the same way.)
      • Per discussion offline: since most of the time analyze is going to be passing, we're not actually gaining much with this structure, so we can just switch to having them as separate tasks. That will very slightly increase compute usage, but will be simpler, and also give better latency on getting results from those tests.
  • web-build_all_packages, linux-build_all_packages, and android-build_all_packages are probably easy to migrate, we just need the same standard dependencies that I'm sure flutter/flutter must already have for its e2e tests of those platforms.
  • linux-platform_tests requires xvfb (or an actual X server). Last I heard that was still unsolved for flutter/flutter.
  • dart_unit_tests is probably straightforward to migrate.
  • linux-custom_package_tests needs Chrome. Currently it's being installed on the fly by a step in the script, but I assume there is an established way using LUCI dependencies (expressed in .ci.yaml) to do that instead. Absent a compelling reason, I would definitely prefer we manage Chrome in LUCI the same way in flutter/packages as we do in flutter/flutter (and I assume eng prod would prefer that as well), so this task would need some adjustment.
  • android-platform_tests needs some secrets; I'm not sure how that's managed in LUCI. It also needs some specific local dependencies for communicating with FTL (currently handled via Docker).
    • Once this is ported, we will very likely move some of its tests off of FTL and onto emulators.
  • web-platform_tests and web_benchmarks_test have the same Chrome needs as linux-custom_package_tests. The benchmark tests also apparently need libgbm-dev.

As noted in #120732 (comment) some the steps currently rely on Docker-installed dependencies, but in most—perhaps all—cases I would expect that we could move to a non-Docker solution.

@keyonghan
Copy link
Contributor Author

Adding @yusuf-goog as an a co-assignee to this bug, as he is helping with remaining linux migration.

@godofredoc
Copy link
Contributor

@keyonghan rather than continuing with the planning over a bug, would you mind meeting with @stuartmorgan to discuss the next steps? this will be helpful for setting the right expectations.

@keyonghan
Copy link
Contributor Author

keyonghan commented Jun 15, 2023

Based on sync up with @stuartmorgan , targeting to finish migration in Q3.

Existing development issues with cirrus

Infra support is needed:

stuartmorgan added a commit to stuartmorgan/packages that referenced this issue Jun 15, 2023
Adds scripts and LUCI targets for the Linux desktop build-all and
platform test tasks, corresponding to the Cirrus
linux-build_all_packages and linux-platform_test tasks.

Part of flutter/flutter#114373
stuartmorgan added a commit to stuartmorgan/packages that referenced this issue Jun 16, 2023
Adds a new Linux_web configuration, and an initial test
(build-all-packages) using it.

This is the simplest web test since it doesn't actually run anything,
so starting with this one as a foundation to test future web-based
tests.

Part of flutter/flutter#114373
@flutter-triage-bot flutter-triage-bot bot removed team-ecosystem Owned by Ecosystem team triaged-ecosystem Triaged by Ecosystem team labels Jul 8, 2023
@flutter-triage-bot
Copy link

Issue is assigned to multiple teams (infra, ecosystem). Please ensure the issue has only one team-* label at a time. Use fyi-* labels to have another team look at the issue without reassigning it.
The triaged-ecosystem label is irrelevant if there is no team-ecosystem label or fyi-ecosystem label.

@stuartmorgan stuartmorgan added the team-ecosystem Owned by Ecosystem team label Jul 8, 2023
auto-submit bot pushed a commit to flutter/packages that referenced this issue Jul 10, 2023
Adds new legacy analysis targets to LUCI in bringup mode.

Also updates the repo tooling to use a Flutter->Dart version mapping instead of having to separately maintain a Dart version, now that we already have such a map in the tool anyway.

Part of flutter/flutter#114373
auto-submit bot pushed a commit to flutter/packages that referenced this issue Jul 12, 2023
Enables the new analyze_legacy targets in LUCI, and removes the Cirrus version.

Part of flutter/flutter#114373
stuartmorgan added a commit to stuartmorgan/packages that referenced this issue Jul 12, 2023
Moves the check that README snippets using code excerpting are up to
date to LUCI. Now that the check has been rewritten to be extremely
fast, it's folded into the existing repo checks instead of being a
separate task.

Part of flutter/flutter#114373
auto-submit bot pushed a commit to flutter/packages that referenced this issue Jul 12, 2023
Moves the check that README snippets using code excerpting are up to date to LUCI. Now that the check has been rewritten to be extremely fast, it's folded into the existing repo checks instead of being a separate task.

Also adjusts the tooling slightly so that it logs the count of snippets checked, for auditability in CI, like the old version of the excerpt update tooling did.

Part of flutter/flutter#114373
@stuartmorgan
Copy link
Contributor

@yusuf-goog How do secrets work in LUCI? I.e., what would the LUCI equivalent of this kind of setup (which are gcloud credentials for FTL and a Google Maps API key for integration testing a maps app) be?

@yusuf-goog
Copy link
Contributor

@yusuf-goog How do secrets work in LUCI? I.e., what would the LUCI equivalent of this kind of setup (which are gcloud credentials for FTL and a Google Maps API key for integration testing a maps app) be?

@stuartmorgan take a look at this: go/flutter-luci-recipes#secrets-support-in-recipes

auto-submit bot pushed a commit to flutter/packages that referenced this issue Jul 15, 2023
Adds scripts and LUCI targets for the Linux desktop platform test tasks, corresponding to the Cirrus linux-platform_test tasks.

Part of flutter/flutter#114373
auto-submit bot pushed a commit to flutter/packages that referenced this issue Jul 15, 2023
This moves Android unit tests from Cirrus to LUCI. In order to accomplish this:
- Switches the Android LUCI bots from JDK 11 to JDK 12, to resolve a crash when compiling `camera_android` unit tests with 11.
- Adds wrappers to SDK checks where necessary for testability, since the hack to override `Build.VERSION.SDK_INT` in unit tests (which was already giving warnings when run with JDK 11) no longer works at all in JDK 12.

Part of flutter/flutter#114373
stuartmorgan added a commit to flutter/packages that referenced this issue Jul 15, 2023
Enables the new LUCI targets, and removes the Cirrus version.

Part of flutter/flutter#114373
nploi pushed a commit to nploi/packages that referenced this issue Jul 16, 2023
Enables the new LUCI repo tools test, and removes the Cirrus version.

Part of flutter/flutter#114373
auto-submit bot pushed a commit to flutter/packages that referenced this issue Jul 17, 2023
Enables the new LUCI targets, and removes the Cirrus version.

Part of flutter/flutter#114373
stuartmorgan added a commit to stuartmorgan/packages that referenced this issue Jul 21, 2023
Migrates the federated safety check and the post-submit portion of the
version check to LUCI, removing the Cirrus versions. Only the presubmit
version check, with its specific TODO, is left in Cirrus since we don't
yet have a solution for running it under LUCI.

Part of flutter/flutter#114373
@stuartmorgan stuartmorgan added the team Infra upgrades, team productivity, code health, technical debt. See also team: labels. label Jul 21, 2023
auto-submit bot pushed a commit to flutter/packages that referenced this issue Jul 21, 2023
Migrates the federated safety check and the post-submit portion of the version check to LUCI, removing the Cirrus versions. Only the presubmit version check, with its specific TODO, is left in Cirrus since we don't yet have a solution for running it under LUCI.

Part of flutter/flutter#114373
auto-submit bot pushed a commit to flutter/packages that referenced this issue Jul 28, 2023
Adds new LUCI versions of the Android FTL tests. These are new tasks, rather than being part of android_platform_tests, since those are already running the emulator version of the tests, and the combination is far too slow (unless we roughly double the number of shards anyway), and this lets us control the behavior separately (e.g., not running them on `stable`, and potentially making them post-submit only in the future).

Adjusts the repo tooling to make the `gcloud auth` step optional, since that's handled automatically for us in the LUCI environment, and to make it less tightly coupled to the Cirrus configuration by removing those defaults from the tool.

Part of flutter/flutter#114373
See also flutter/flutter#131429
@stuartmorgan
Copy link
Contributor

I'm going to close this as fixed; there's only one specific, pre-submit-only check still running in Cirrus, and it has a tracking issue, so the umbrella issue is no longer needed.

@github-actions
Copy link

This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Aug 12, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
P1 High-priority issues at the top of the work list package flutter/packages repository. See also p: labels. team Infra upgrades, team productivity, code health, technical debt. See also team: labels. team-ecosystem Owned by Ecosystem team
Projects
None yet
Development

No branches or pull requests

4 participants