-
Notifications
You must be signed in to change notification settings - Fork 1.6k
[Firebase AI] Add initial project structure #14737
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
Merged
Merged
Changes from all commits
Commits
Show all changes
20 commits
Select commit
Hold shift + click to select a range
a939c49
Move `FirebaseVertexAI` folder to `FirebaseAI`
andrewheard 3fb720b
Add `FirebaseAI` SPM target and fix tests
andrewheard a0d099e
Add `FirebaseAI.podspec` with backwards compatibility snippets
andrewheard f76ea58
Fix path in `update_vertexai_responses.sh`
andrewheard a337e95
Add `BundleTestUtil`
andrewheard cd5c1f9
Fix SPM build
andrewheard bddc294
Add `VertexAI` wrapper for `FirebaseAI`
andrewheard 3b59d03
Fix CI job
andrewheard dad4f7f
Merge branch 'main' into ah/firebase-ai
andrewheard f98e137
Merge branch 'main' into ah/firebase-ai
andrewheard 9085967
Fix imports and update versions
andrewheard 619e149
Fix FirebaseAI.podspec dep versions
andrewheard a932c6c
Rename `vertexai.yml` to `firebaseai.yml`
andrewheard 7215534
Re-add `vertexai.yml` for backwards-compatibility testing
andrewheard a5a3e4f
Fix FirebaseVertexAI test resources and add Firebase AI SPM scheme
andrewheard d2f96db
Remove trailing comma
andrewheard 95d90ca
Update integration test imports
andrewheard d7ed97a
Set `-DCMAKE_POLICY_VERSION_MINIMUM=3.5` for Firestore
andrewheard 8a884f3
Revert "Set `-DCMAKE_POLICY_VERSION_MINIMUM=3.5` for Firestore"
andrewheard 876c9cb
Add `permissions:` for `firebaseai.yml`
andrewheard 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,164 @@ | ||
name: firebaseai | ||
|
||
on: | ||
pull_request: | ||
paths: | ||
- 'FirebaseAI**' | ||
- '.github/workflows/firebaseai.yml' | ||
- 'Gemfile*' | ||
schedule: | ||
# Run every day at 11pm (PST) - cron uses UTC times | ||
- cron: '0 7 * * *' | ||
workflow_dispatch: | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} | ||
cancel-in-progress: true | ||
|
||
permissions: | ||
contents: read # Needed for actions/checkout | ||
actions: write # Needed for actions/cache (save and restore) | ||
|
||
jobs: | ||
spm-package-resolved: | ||
runs-on: macos-14 | ||
outputs: | ||
cache_key: ${{ steps.generate_cache_key.outputs.cache_key }} | ||
env: | ||
FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT: 1 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Generate Swift Package.resolved | ||
id: swift_package_resolve | ||
run: | | ||
swift package resolve | ||
- name: Generate cache key | ||
id: generate_cache_key | ||
run: | | ||
cache_key="${{ runner.os }}-spm-${{ hashFiles('**/Package.resolved') }}" | ||
echo "cache_key=${cache_key}" >> "$GITHUB_OUTPUT" | ||
- uses: actions/cache/save@v4 | ||
id: cache | ||
with: | ||
path: .build | ||
key: ${{ steps.generate_cache_key.outputs.cache_key }} | ||
|
||
spm-unit: | ||
|
||
strategy: | ||
matrix: | ||
include: | ||
- os: macos-14 | ||
xcode: Xcode_16.2 | ||
target: iOS | ||
- os: macos-15 | ||
xcode: Xcode_16.3 | ||
target: iOS | ||
- os: macos-15 | ||
xcode: Xcode_16.3 | ||
target: tvOS | ||
- os: macos-15 | ||
xcode: Xcode_16.3 | ||
target: macOS | ||
- os: macos-15 | ||
xcode: Xcode_16.3 | ||
target: watchOS | ||
- os: macos-15 | ||
xcode: Xcode_16.3 | ||
target: catalyst | ||
- os: macos-15 | ||
xcode: Xcode_16.3 | ||
target: visionOS | ||
runs-on: ${{ matrix.os }} | ||
needs: spm-package-resolved | ||
env: | ||
FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT: 1 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/cache/restore@v4 | ||
with: | ||
path: .build | ||
key: ${{needs.spm-package-resolved.outputs.cache_key}} | ||
- name: Clone mock responses | ||
run: scripts/update_vertexai_responses.sh | ||
- name: Xcode | ||
run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer | ||
- name: Install visionOS, if needed. | ||
if: matrix.target == 'visionOS' | ||
run: xcodebuild -downloadPlatform visionOS | ||
- name: Initialize xcodebuild | ||
run: scripts/setup_spm_tests.sh | ||
- uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3 | ||
with: | ||
timeout_minutes: 120 | ||
max_attempts: 3 | ||
retry_on: error | ||
retry_wait_seconds: 120 | ||
command: scripts/build.sh FirebaseAIUnit ${{ matrix.target }} spm | ||
|
||
testapp-integration: | ||
|
||
strategy: | ||
matrix: | ||
target: [iOS] | ||
os: [macos-15] | ||
include: | ||
- os: macos-15 | ||
xcode: Xcode_16.3 | ||
runs-on: ${{ matrix.os }} | ||
needs: spm-package-resolved | ||
env: | ||
TEST_RUNNER_FIRAAppCheckDebugToken: ${{ secrets.VERTEXAI_INTEGRATION_FAC_DEBUG_TOKEN }} | ||
TEST_RUNNER_VTXIntegrationImagen: ${{ github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' }} | ||
FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT: 1 | ||
secrets_passphrase: ${{ secrets.GHASecretsGPGPassphrase1 }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/cache/restore@v4 | ||
with: | ||
path: .build | ||
key: ${{needs.spm-package-resolved.outputs.cache_key}} | ||
- name: Install Secret GoogleService-Info.plist | ||
run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/VertexAI/TestApp-GoogleService-Info.plist.gpg \ | ||
FirebaseAI/Tests/TestApp/Resources/GoogleService-Info.plist "$secrets_passphrase" | ||
- name: Install Secret GoogleService-Info-Spark.plist | ||
run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/VertexAI/TestApp-GoogleService-Info-Spark.plist.gpg \ | ||
FirebaseAI/Tests/TestApp/Resources/GoogleService-Info-Spark.plist "$secrets_passphrase" | ||
- name: Install Secret Credentials.swift | ||
run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/VertexAI/TestApp-Credentials.swift.gpg \ | ||
FirebaseAI/Tests/TestApp/Tests/Integration/Credentials.swift "$secrets_passphrase" | ||
- name: Xcode | ||
run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer | ||
- name: Run IntegrationTests | ||
run: scripts/build.sh FirebaseAIIntegration ${{ matrix.target }} | ||
|
||
pod-lib-lint: | ||
|
||
# Don't run on private repo unless it is a PR. | ||
if: (github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule') || github.event_name == 'pull_request' | ||
strategy: | ||
matrix: | ||
include: | ||
- os: macos-14 | ||
xcode: Xcode_16.2 | ||
swift_version: 5.9 | ||
warnings: | ||
- os: macos-15 | ||
xcode: Xcode_16.3 | ||
swift_version: 5.9 | ||
warnings: | ||
- os: macos-15 | ||
xcode: Xcode_16.3 | ||
swift_version: 6.0 | ||
warnings: | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Clone mock responses | ||
run: scripts/update_vertexai_responses.sh | ||
- uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1 | ||
- name: Setup Bundler | ||
run: scripts/setup_bundler.sh | ||
- name: Xcode | ||
run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer | ||
- name: Set Swift swift_version | ||
run: sed -i "" "s#s.swift_version = '5.9'#s.swift_version = '${{ matrix.swift_version}}'#" FirebaseAI.podspec | ||
- name: Build and test | ||
run: scripts/third_party/travis/retry.sh scripts/pod_lib_lint.rb FirebaseAI.podspec --platforms=${{ matrix.target }} ${{ matrix.warnings }} | ||
|
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
Pod::Spec.new do |s| | ||
s.name = 'FirebaseAI' | ||
s.version = '11.13.0' | ||
s.summary = 'Firebase AI SDK' | ||
|
||
s.description = <<-DESC | ||
Build AI-powered apps and features with the Gemini API using the Firebase AI SDK. | ||
DESC | ||
|
||
s.homepage = 'https://firebase.google.com' | ||
s.license = { :type => 'Apache-2.0', :file => 'LICENSE' } | ||
s.authors = 'Google, Inc.' | ||
|
||
s.source = { | ||
:git => 'https://github.com/firebase/firebase-ios-sdk.git', | ||
:tag => 'CocoaPods-' + s.version.to_s | ||
} | ||
|
||
s.social_media_url = 'https://twitter.com/Firebase' | ||
|
||
ios_deployment_target = '15.0' | ||
osx_deployment_target = '12.0' | ||
tvos_deployment_target = '15.0' | ||
watchos_deployment_target = '8.0' | ||
|
||
s.ios.deployment_target = ios_deployment_target | ||
s.osx.deployment_target = osx_deployment_target | ||
s.tvos.deployment_target = tvos_deployment_target | ||
s.watchos.deployment_target = watchos_deployment_target | ||
|
||
s.cocoapods_version = '>= 1.12.0' | ||
s.prefix_header_file = false | ||
|
||
s.source_files = [ | ||
'FirebaseAI/Sources/**/*.swift', | ||
] | ||
|
||
s.swift_version = '5.9' | ||
|
||
s.framework = 'Foundation' | ||
s.ios.framework = 'UIKit' | ||
s.osx.framework = 'AppKit' | ||
s.tvos.framework = 'UIKit' | ||
s.watchos.framework = 'WatchKit' | ||
|
||
s.dependency 'FirebaseAppCheckInterop', '~> 11.4' | ||
s.dependency 'FirebaseAuthInterop', '~> 11.4' | ||
s.dependency 'FirebaseCore', '~> 11.13.0' | ||
s.dependency 'FirebaseCoreExtension', '~> 11.13.0' | ||
|
||
s.test_spec 'unit' do |unit_tests| | ||
unit_tests_dir = 'FirebaseAI/Tests/Unit/' | ||
unit_tests.scheme = { :code_coverage => true } | ||
unit_tests.platforms = { | ||
:ios => ios_deployment_target, | ||
:osx => osx_deployment_target, | ||
:tvos => tvos_deployment_target | ||
} | ||
unit_tests.source_files = [ | ||
unit_tests_dir + '**/*.swift', | ||
] | ||
unit_tests.exclude_files = [ | ||
unit_tests_dir + 'Snippets/**/*.swift', | ||
] | ||
unit_tests.resources = [ | ||
unit_tests_dir + 'vertexai-sdk-test-data/mock-responses/vertexai', | ||
unit_tests_dir + 'Resources/**/*', | ||
] | ||
end | ||
end |
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
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.