-
Notifications
You must be signed in to change notification settings - Fork 4.1k
feat: add Linux desktop support to core, auth, firestore, database, storage, remote_config, app_check, functions #18461
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
Closed
Closed
Changes from all commits
Commits
Show all changes
24 commits
Select commit
Hold shift + click to select a range
2049a88
feat: add Linux desktop support to firebase_core, auth, firestore, da…
akshaynexus 61cdba4
fix(linux): resolve static link failures with single --start-group SD…
akshaynexus 329b473
fix(linux): expose Firebase SDK headers PUBLIC from firebase_core; dr…
akshaynexus b3f9a8c
chore: restore font_awesome_flutter dep in auth example
akshaynexus 22df197
fix(auth): bump font_awesome_flutter to ^11.0.0 in example
akshaynexus 8ff93c2
test(linux): add Linux runner to tests app
akshaynexus 9b6f874
chore(auth): bump flutter_signin_button to ^2.1.1 in example
akshaynexus 9679156
fix(auth): use latest font_awesome_flutter 11 + flutter_signin_button…
akshaynexus 86ff00a
chore: correct copyright year in new Linux sources
akshaynexus 375c612
ci(linux): align workflow with zizmor policy
akshaynexus c1f35df
fix(ci): add license headers to Linux runner sources and apply clang-…
akshaynexus 3a8c5b3
fix(core,linux): regenerate CoreFirebaseOptions codec with recaptchaS…
akshaynexus 9d1deee
feat(functions,linux): implement Cloud Functions for Linux desktop
akshaynexus 510fdcd
Merge branch 'firebase:main' into add-linux-support
akshaynexus 95930c3
test(linux): run e2e suites on Linux desktop
akshaynexus 58c0d36
Merge remote-tracking branch 'upstream/main' into add-linux-support
akshaynexus ea41078
test(linux): harden e2e suites for the Linux desktop run
akshaynexus 506a112
fix(functions,storage,linux): enforce call timeouts; report unimpleme…
akshaynexus b5ae539
fix(firestore,linux): encode Firestore blobs as codec custom type
akshaynexus 006893d
Update README.md
akshaynexus de5f4b6
refactor(functions,linux): drop local Functions instance cache
akshaynexus 784f95e
refactor(firestore,linux): use g_warning for unsupported aggregate wa…
akshaynexus 3844cb3
refactor(firestore,linux): replace remaining std::cerr logging with g…
akshaynexus 623c654
fix(linux): review-round hardening across desktop plugins
akshaynexus File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,83 @@ | ||
| name: e2e-linux | ||
|
|
||
| concurrency: | ||
| group: ${{ github.workflow }}-${{ github.ref }}-linux | ||
| cancel-in-progress: true | ||
|
|
||
| on: | ||
| pull_request: | ||
| paths-ignore: | ||
| - 'docs/**' | ||
| - 'website/**' | ||
| - '**/example/**' | ||
| - '!**/example/integration_test/**' | ||
| - '**/flutterfire_ui/**' | ||
| - '**.md' | ||
| push: | ||
| branches: | ||
| - main | ||
| paths-ignore: | ||
| - 'docs/**' | ||
| - 'website/**' | ||
| - '**/example/**' | ||
| - '!**/example/integration_test/**' | ||
| - '**/flutterfire_ui/**' | ||
| - '**.md' | ||
| workflow_call: | ||
| inputs: | ||
| nightly_test_mode: | ||
| type: boolean | ||
| default: false | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| jobs: | ||
| linux: | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: ${{ inputs.nightly_test_mode && 5 || 45 }} | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| working_directory: | ||
| ['tests', 'packages/cloud_firestore/cloud_firestore/example'] | ||
| exclude: | ||
| - working_directory: ${{ inputs.nightly_test_mode && 'packages/cloud_firestore/cloud_firestore/example' || 'none' }} | ||
| steps: | ||
| - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 | ||
| - uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 | ||
| with: | ||
| distribution: 'temurin' | ||
| java-version: '21' | ||
| - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a | ||
| name: Install Node.js 20 | ||
| with: | ||
| node-version: '20' | ||
| - name: "Install Linux desktop build dependencies" | ||
| run: | | ||
| sudo apt-get update | ||
| sudo apt-get install -y ninja-build libgtk-3-dev libsecret-1-dev xvfb | ||
| - uses: subosito/flutter-action@1a449444c387b1966244ae4d4f8c696479add0b2 | ||
| with: | ||
| channel: 'stable' | ||
| cache: true | ||
| cache-key: "flutter-:os:-:channel:-:version:-:arch:-:hash:" | ||
| pub-cache-key: "flutter-pub-:os:-:channel:-:version:-:arch:-:hash:" | ||
| - uses: bluefireteam/melos-action@705015c3d2bc4ab94201ac24accb2bbe070cf533 | ||
| with: | ||
| run-bootstrap: false | ||
| melos-version: '5.3.0' | ||
| - name: "Bootstrap package" | ||
| run: melos bootstrap --scope tests && melos bootstrap --scope "cloud_firestore*" | ||
| - name: "Install Tools" | ||
| run: npm install -g firebase-tools | ||
| - name: "Build Application" | ||
| working-directory: ${{ matrix.working_directory }} | ||
| run: flutter build linux --debug --target=./integration_test/e2e_test.dart --dart-define=CI=true | ||
| - name: Start Firebase Emulator and run tests | ||
| working-directory: ./.github/workflows/scripts | ||
| env: | ||
| WORKDIR: ${{ matrix.working_directory }} | ||
| run: | | ||
| firebase emulators:exec --project flutterfire-e2e-tests \ | ||
| "cd \"$GITHUB_WORKSPACE/$WORKDIR\" && xvfb-run -a flutter test integration_test/e2e_test.dart -d linux --dart-define=CI=true --timeout 10x" |
Large diffs are not rendered by default.
Oops, something went wrong.
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
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
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
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
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
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
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
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
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
16 changes: 16 additions & 0 deletions
16
packages/cloud_firestore/cloud_firestore/example/integration_test/platform_utils.dart
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| // Copyright 2026, the Chromium project authors. Please see the AUTHORS file | ||
| // for details. All rights reserved. Use of this source code is governed by a | ||
| // BSD-style license that can be found in the LICENSE file. | ||
|
|
||
| import 'package:flutter/foundation.dart'; | ||
|
|
||
| /// Whether the tests are running against the desktop implementations backed by | ||
| /// the Firebase C++ SDK (Windows and Linux). Both platforms share the same | ||
| /// C++ SDK, so they have identical feature limitations in the e2e suites. | ||
| /// | ||
| /// The `!kIsWeb` check matters because web e2e tests run on Linux CI runners, | ||
| /// where `defaultTargetPlatform` reports [TargetPlatform.linux]. | ||
| bool get isDesktopCppSdk => | ||
| !kIsWeb && | ||
| (defaultTargetPlatform == TargetPlatform.windows || | ||
| defaultTargetPlatform == TargetPlatform.linux); | ||
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.