Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
c659fcf
feat(infra): Add script to set up SPM-based quickstarts
ncooke3 Sep 5, 2025
b4a3998
doc fixes
ncooke3 Sep 5, 2025
e289fb8
Update scripts/setup_quickstart_spm.sh
ncooke3 Sep 5, 2025
4f3d31b
Update scripts/setup_quickstart_spm.sh
ncooke3 Sep 5, 2025
cb0236e
Update scripts/setup_quickstart_spm.sh
ncooke3 Sep 5, 2025
43c34e2
Update scripts/setup_quickstart_spm.sh
ncooke3 Sep 5, 2025
b507d89
remove unused
ncooke3 Sep 5, 2025
2e1431a
refactor constants
ncooke3 Sep 5, 2025
dd08b7f
switch to case
ncooke3 Sep 5, 2025
e21368c
review
ncooke3 Sep 5, 2025
72e8bf2
fix
ncooke3 Sep 5, 2025
8d77513
more
ncooke3 Sep 5, 2025
44d276e
Update scripts/setup_quickstart_spm.sh
ncooke3 Sep 5, 2025
e09127f
Update scripts/setup_quickstart_spm.sh
ncooke3 Sep 5, 2025
c2b6a50
work
ncooke3 Sep 6, 2025
ecf5c27
fix env
ncooke3 Sep 6, 2025
682605b
careful with xcpretty
ncooke3 Sep 6, 2025
19c149f
quoting
ncooke3 Sep 6, 2025
83d6451
more fixes
ncooke3 Sep 6, 2025
dcfc811
review
ncooke3 Sep 6, 2025
529558d
more review
ncooke3 Sep 6, 2025
0e5c1b1
Update scripts/setup_quickstart_spm.sh
ncooke3 Sep 6, 2025
aafe681
Update scripts/setup_quickstart_spm.sh
ncooke3 Sep 6, 2025
1fc4bc4
Review
ncooke3 Sep 6, 2025
95b032d
Remove xcpretty check
ncooke3 Sep 6, 2025
cac3c32
refactor(scripts): Improve robustness of setup_quickstart_spm.sh
ncooke3 Sep 6, 2025
2194f28
Update scripts/setup_quickstart_spm.sh
ncooke3 Sep 6, 2025
624b41b
Update scripts/setup_quickstart_spm.sh
ncooke3 Sep 6, 2025
ab9042b
Update scripts/setup_quickstart_spm.sh
ncooke3 Sep 6, 2025
614d19f
Update scripts/setup_quickstart_spm.sh
ncooke3 Sep 6, 2025
a8aa103
Update scripts/setup_quickstart_spm.sh
ncooke3 Sep 6, 2025
123ea0b
review:
ncooke3 Sep 6, 2025
271d1f9
review 1
ncooke3 Sep 6, 2025
4eb43b3
more
ncooke3 Sep 6, 2025
3467cfc
review
ncooke3 Sep 6, 2025
f4b789f
work
ncooke3 Sep 6, 2025
7018c23
almost done
ncooke3 Sep 6, 2025
cb72289
Update scripts/setup_quickstart_spm.sh
ncooke3 Sep 6, 2025
081b78f
Update scripts/setup_quickstart_spm.sh
ncooke3 Sep 6, 2025
70c04f1
Update scripts/setup_quickstart_spm.sh
ncooke3 Sep 7, 2025
5dc35f6
wrap to 80
ncooke3 Sep 7, 2025
bb32269
fix
ncooke3 Sep 7, 2025
fae5d77
work
ncooke3 Sep 7, 2025
a8c5dd7
feat(ci): Test SPM quickstarts (#15296)
ncooke3 Sep 19, 2025
d0b7800
Merge branch 'main' into nc/qsss
ncooke3 Sep 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
106 changes: 53 additions & 53 deletions .github/workflows/abtesting.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,70 +25,70 @@ concurrency:
cancel-in-progress: true

jobs:
spm:
uses: ./.github/workflows/common.yml
with:
target: ABTestingUnit
# spm:
# uses: ./.github/workflows/common.yml
# with:
# target: ABTestingUnit

catalyst:
uses: ./.github/workflows/common_catalyst.yml
with:
product: FirebaseABTesting
target: FirebaseABTesting-Unit-unit
# catalyst:
# uses: ./.github/workflows/common_catalyst.yml
# with:
# product: FirebaseABTesting
# target: FirebaseABTesting-Unit-unit

pod_lib_lint:
uses: ./.github/workflows/common_cocoapods.yml
with:
product: FirebaseABTesting
# pod_lib_lint:
# uses: ./.github/workflows/common_cocoapods.yml
# with:
# product: FirebaseABTesting

quickstart:
uses: ./.github/workflows/common_quickstart.yml
with:
product: ABTesting
is_legacy: true
setup_command: scripts/setup_quickstart.sh abtesting
is_legacy: false
setup_command: QUICKSTART_BRANCH=mc/spm scripts/setup_quickstart_spm.sh abtesting
plist_src_path: scripts/gha-encrypted/qs-database.plist.gpg
plist_dst_path: quickstart-ios/database/GoogleService-Info.plist
secrets:
plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}

quickstart-ftl-cron-only:
# Don't run on private repo.
if: github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule'
# quickstart-ftl-cron-only:
# # Don't run on private repo.
# if: github.repository == 'Firebase/firebase-ios-sdk' && github.event_name == 'schedule'

env:
plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
runs-on: macos-15
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Setup quickstart
env:
LEGACY: true
run: scripts/setup_quickstart.sh abtesting
- name: Install Secret GoogleService-Info.plist
run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-abtesting.plist.gpg \
quickstart-ios/abtesting/GoogleService-Info.plist "$plist_secret"
- name: Xcode
run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
- name: Build swift quickstart
env:
LEGACY: true
run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh ABTesting)
- id: ftl_test
uses: FirebaseExtended/github-actions/[email protected]
with:
credentials_json: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_CREDENTIALS }}
testapp_dir: quickstart-ios/build-for-testing
test_type: "xctest"
# env:
# plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
# runs-on: macos-15
# steps:
# - uses: actions/checkout@v4
# - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
# - uses: actions/setup-python@v5
# with:
# python-version: '3.11'
# - name: Setup quickstart
# env:
# LEGACY: true
# run: scripts/setup_quickstart.sh abtesting
# - name: Install Secret GoogleService-Info.plist
# run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/qs-abtesting.plist.gpg \
# quickstart-ios/abtesting/GoogleService-Info.plist "$plist_secret"
# - name: Xcode
# run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
# - name: Build swift quickstart
# env:
# LEGACY: true
# run: ([ -z $plist_secret ] || scripts/third_party/travis/retry.sh scripts/test_quickstart_ftl.sh ABTesting)
# - id: ftl_test
# uses: FirebaseExtended/github-actions/[email protected]
# with:
# credentials_json: ${{ secrets.FIREBASE_SERVICE_ACCOUNT_CREDENTIALS }}
# testapp_dir: quickstart-ios/build-for-testing
# test_type: "xctest"

abtesting-cron-only:
needs: pod_lib_lint
uses: ./.github/workflows/common_cocoapods_cron.yml
with:
product: FirebaseABTesting
platforms: '[ "ios", "tvos", "macos" ]'
flags: '[ "--use-static-frameworks" ]'
# abtesting-cron-only:
# needs: pod_lib_lint
# uses: ./.github/workflows/common_cocoapods_cron.yml
# with:
# product: FirebaseABTesting
# platforms: '[ "ios", "tvos", "macos" ]'
# flags: '[ "--use-static-frameworks" ]'
142 changes: 71 additions & 71 deletions .github/workflows/auth.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,76 +29,76 @@ concurrency:
cancel-in-progress: true

jobs:
spm:
uses: ./.github/workflows/common.yml
with:
target: AuthUnit
buildonly_platforms: macOS
# spm:
# uses: ./.github/workflows/common.yml
# with:
# target: AuthUnit
# buildonly_platforms: macOS

catalyst:
uses: ./.github/workflows/common_catalyst.yml
with:
product: FirebaseAuth
target: FirebaseAuth-Unit-unit
buildonly: true
# catalyst:
# uses: ./.github/workflows/common_catalyst.yml
# with:
# product: FirebaseAuth
# target: FirebaseAuth-Unit-unit
# buildonly: true

pod_lib_lint:
strategy:
matrix:
product: [FirebaseAuthInterop, FirebaseAuth]
uses: ./.github/workflows/common_cocoapods.yml
with:
product: ${{ matrix.product }}
buildonly_platforms: macOS
# pod_lib_lint:
# strategy:
# matrix:
# product: [FirebaseAuthInterop, FirebaseAuth]
# uses: ./.github/workflows/common_cocoapods.yml
# with:
# product: ${{ matrix.product }}
# buildonly_platforms: macOS

integration-tests:
# 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'
needs: spm
strategy:
matrix:
scheme: [ObjCApiTests, SwiftApiTests, AuthenticationExampleUITests]
env:
plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT: 1
runs-on: macos-15
steps:
- uses: actions/checkout@v4
- uses: actions/cache/restore@v4
with:
path: .build
key: ${{ needs.spm.outputs.cache_key }}
- name: Install Secrets
run: |
scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthCredentials.h.gpg \
FirebaseAuth/Tests/SampleSwift/ObjCApiTests/AuthCredentials.h "$plist_secret"
scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/SwiftApplication.plist.gpg \
FirebaseAuth/Tests/SampleSwift/AuthenticationExample/SwiftApplication.plist "$plist_secret"
scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/AuthCredentials.h.gpg \
FirebaseAuth/Tests/SampleSwift/AuthCredentials.h "$plist_secret"
scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/GoogleService-Info.plist.gpg \
FirebaseAuth/Tests/SampleSwift/GoogleService-Info.plist "$plist_secret"
scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/GoogleService-Info_multi.plist.gpg \
FirebaseAuth/Tests/SampleSwift/GoogleService-Info_multi.plist "$plist_secret"
scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/Sample.entitlements.gpg \
FirebaseAuth/Tests/SampleSwift/Sample.entitlements "$plist_secret"
scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/Credentials.swift.gpg \
FirebaseAuth/Tests/SampleSwift/SwiftApiTests/Credentials.swift "$plist_secret"
- name: Xcode
run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
- uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3
with:
timeout_minutes: 15
max_attempts: 3
retry_wait_seconds: 120
command: ([ -z $plist_secret ] || scripts/build.sh Auth iOS ${{ matrix.scheme }})
# integration-tests:
# # 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'
# needs: spm
# strategy:
# matrix:
# scheme: [ObjCApiTests, SwiftApiTests, AuthenticationExampleUITests]
# env:
# plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
# FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT: 1
# runs-on: macos-15
# steps:
# - uses: actions/checkout@v4
# - uses: actions/cache/restore@v4
# with:
# path: .build
# key: ${{ needs.spm.outputs.cache_key }}
# - name: Install Secrets
# run: |
# scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthCredentials.h.gpg \
# FirebaseAuth/Tests/SampleSwift/ObjCApiTests/AuthCredentials.h "$plist_secret"
# scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/SwiftApplication.plist.gpg \
# FirebaseAuth/Tests/SampleSwift/AuthenticationExample/SwiftApplication.plist "$plist_secret"
# scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/AuthCredentials.h.gpg \
# FirebaseAuth/Tests/SampleSwift/AuthCredentials.h "$plist_secret"
# scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/GoogleService-Info.plist.gpg \
# FirebaseAuth/Tests/SampleSwift/GoogleService-Info.plist "$plist_secret"
# scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/GoogleService-Info_multi.plist.gpg \
# FirebaseAuth/Tests/SampleSwift/GoogleService-Info_multi.plist "$plist_secret"
# scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/Sample.entitlements.gpg \
# FirebaseAuth/Tests/SampleSwift/Sample.entitlements "$plist_secret"
# scripts/decrypt_gha_secret.sh scripts/gha-encrypted/AuthSample/Credentials.swift.gpg \
# FirebaseAuth/Tests/SampleSwift/SwiftApiTests/Credentials.swift "$plist_secret"
# - name: Xcode
# run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
# - uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3
# with:
# timeout_minutes: 15
# max_attempts: 3
# retry_wait_seconds: 120
# command: ([ -z $plist_secret ] || scripts/build.sh Auth iOS ${{ matrix.scheme }})

quickstart:
uses: ./.github/workflows/common_quickstart.yml
with:
product: Authentication
is_legacy: false
setup_command: scripts/setup_quickstart.sh authentication
setup_command: QUICKSTART_BRANCH=mc/spm scripts/setup_quickstart_spm.sh authentication
plist_src_path: scripts/gha-encrypted/qs-authentication.plist.gpg
plist_dst_path: quickstart-ios/authentication/GoogleService-Info.plist
run_tests: false
Expand Down Expand Up @@ -133,13 +133,13 @@ jobs:
# testapp_dir: quickstart-ios/build-for-testing
# test_type: "xctest"

auth-cron-only:
needs: pod_lib_lint
uses: ./.github/workflows/common_cocoapods_cron.yml
with:
product: FirebaseAuth
platforms: '[ "ios", "tvos --skip-tests", "macos --skip-tests", "watchos --skip-tests" ]'
flags: '[ "--use-static-frameworks" ]'
setup_command: scripts/configure_test_keychain.sh
secrets:
plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
# auth-cron-only:
# needs: pod_lib_lint
# uses: ./.github/workflows/common_cocoapods_cron.yml
# with:
# product: FirebaseAuth
# platforms: '[ "ios", "tvos --skip-tests", "macos --skip-tests", "watchos --skip-tests" ]'
# flags: '[ "--use-static-frameworks" ]'
# setup_command: scripts/configure_test_keychain.sh
# secrets:
# plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}
62 changes: 30 additions & 32 deletions .github/workflows/common_quickstart.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,6 @@ on:
type: string
required: true

# The type of quickstart to test.
#
# Options: [swift, objc]
quickstart_type:
type: string
required: false
default: objc

# Whether to run tests or just build. Defaults to true.
run_tests:
type: boolean
Expand All @@ -77,38 +69,44 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 # v1
- name: Prereqs
run: gem install xcpretty
- name: Xcode
run: sudo xcode-select -s /Applications/Xcode_16.4.app/Contents/Developer
- name: Run setup command.
run: ${{ inputs.setup_command }}
- name: Install Secret GoogleService-Info.plist
run: |
scripts/decrypt_gha_secret.sh \
${{ inputs.plist_src_path }} \
${{ inputs.plist_dst_path }} \
"$plist_secret"
- name: Build ${{ inputs.product }} Quickstart (${{ inputs.quickstart_type }} / ${{ inputs.is_legacy && 'Legacy' || 'Non-Legacy' }})
# - name: Install Secret GoogleService-Info.plist
# run: |
# scripts/decrypt_gha_secret.sh \
# ${{ inputs.plist_src_path }} \
# ${{ inputs.plist_dst_path }} \
# "$plist_secret"
- name: Build ${{ inputs.product }} Quickstart (${{ inputs.is_legacy && 'Legacy' || 'Non-Legacy' }})
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3
with:
timeout_minutes: 15
max_attempts: 3
retry_wait_seconds: 120
command: |
scripts/test_quickstart.sh \
${{ inputs.product }} \
${{ inputs.run_tests }} \
${{ inputs.quickstart_type }}
SPM=true DIR=${{ inputs.product }} scripts/test_quickstart.sh ${{ inputs.product }} false
# command: |
# SPM=true DIR=${{ inputs.product }} scripts/test_quickstart.sh ${{ inputs.product }} ${{ inputs.run_tests }}
# scripts/test_quickstart.sh \
# ${{ inputs.product }} \
# ${{ inputs.run_tests }} \
# ${{ inputs.quickstart_type }}

# Failure sequence to upload artifact.
- id: lowercase_product
if: ${{ failure() }}
run: |
lowercase_product=$(echo "${{ inputs.product }}" | tr '[:upper:]' '[:lower:]')
echo "lowercase_product=$lowercase_product" >> $GITHUB_OUTPUT
- name: Remove data before upload.
if: ${{ failure() }}
run: scripts/remove_data.sh ${{ steps.lowercase_product.outputs.lowercase_product }}
- uses: actions/upload-artifact@v4
if: ${{ failure() }}
with:
name: quickstart_artifacts_${{ steps.lowercase_product.outputs.lowercase_product }}
path: quickstart-ios/
# - id: lowercase_product
# if: ${{ failure() }}
# run: |
# lowercase_product=$(echo "${{ inputs.product }}" | tr '[:upper:]' '[:lower:]')
# echo "lowercase_product=$lowercase_product" >> $GITHUB_OUTPUT
# - name: Remove data before upload.
# if: ${{ failure() }}
# run: scripts/remove_data.sh ${{ steps.lowercase_product.outputs.lowercase_product }}
# - uses: actions/upload-artifact@v4
# if: ${{ failure() }}
# with:
# name: quickstart_artifacts_${{ steps.lowercase_product.outputs.lowercase_product }}
# path: quickstart-ios/
Loading
Loading