GoogleUtilities provides a set of utilities for Firebase and other Google SDKs for Apple platform development.
The utilities are not directly supported for non-Google library usage.
These instructions apply to minor and patch version updates. Major versions need a customized adaptation.
After the CI is green:
- Update the version in the podspec to match the latest entry in the CHANGELOG.md
- Checkout the
main
branch and ensure it is up to dategit checkout main git pull
- Add the CocoaPods tag (
{version}
will be the latest version in the podspec)git tag CocoaPods-{version} git push origin CocoaPods-{version}
- Push the podspec to the designated repo
-
If this version of GoogleUtilities is intended to launch before or with the next Firebase release:
Push to SpecsStaging
pod repo push --skip-tests staging GoogleUtilities.podspec
If the command fails with
Unable to find the 'staging' repo.
, add the staging repo with:pod repo add staging git@github.com:firebase/SpecsStaging.git
-
Otherwise:
Push to SpecsDev
pod repo push --skip-tests dev GoogleUtilities.podspec
If the command fails with
Unable to find the 'dev' repo.
, add the dev repo with:pod repo add dev git@github.com:firebase/SpecsDev.git
-
- Run Firebase CI by waiting until next nightly or adding a PR that touches
Gemfile
. - On google3, run copybara using the command below. Then, start a global TAP on the generated CL. Deflake as needed.
third_party/firebase/ios/Releases/run_copy_bara.py --directory GoogleUtilities --branch main
The release process is as follows:
By creating and pushing a tag for Swift PM, the newly tagged version will be immediately released for public use. Given this, please verify the intended time of release for Swift PM.
- Add a version tag for Swift PM
git tag {version}
git push origin {version}
Note: Ensure that any inflight PRs that depend on the new GoogleUtilities
version are updated to point to the
newly tagged version rather than a checksum.
-
Publish the newly versioned pod to CocoaPods
It's recommended to point to the
GoogleUtilities.podspec
instaging
to make sure the correct spec is being published.pod trunk push ~/.cocoapods/repos/staging/GoogleUtilities/{version}/GoogleUtilities.podspec
Note: In some cases, it may be acceptable to
pod trunk push
with the--skip-tests
flag. Please double check with the maintainers before doing so.The pod push was successful if the above command logs:
🚀 GoogleUtilities ({version}) successfully published
. In addition, a new commit that publishes the new version (co-authored by CocoaPodsAtGoogle) should appear in the CocoaPods specs repo. Last, the latest version should be displayed on GoogleUtilities's CocoaPods page.Don't forget to perform the post release cleanup!
- Clean up SpecsStaging:
cd ~/path/to/SpecsStaging/ git checkout master git pull git rm -rf GoogleUtilities/ git commit -m "Post GoogleUtilities {version} release cleanup" git push
To develop in this repository, ensure that you have at least the following software:
- Xcode 12.0 (or later)
- CocoaPods 1.10.0 (or later)
- CocoaPods generate
For the pod that you want to develop:
pod gen GoogleUtilities.podspec --local-sources=./ --auto-open --platforms=ios
Note: If the CocoaPods cache is out of date, you may need to run
pod repo update
before the pod gen
command.
Note: Set the --platforms
option to macos
or tvos
to develop/test for
those platforms. Since 10.2, Xcode does not properly handle multi-platform
CocoaPods workspaces.
pod gen GoogleUtilities.podspec --local-sources=./ --auto-open --platforms=ios
- Check the Mac box in the App-iOS Build Settings
- Sign the App in the Settings Signing & Capabilities tab
- Click Pods in the Project Manager
- Add Signing to the iOS host app and unit test targets
- Select the Unit-unit scheme
- Run it to build and test
Alternatively disable signing in each target:
- Go to Build Settings tab
- Click
+
- Select
Add User-Defined Setting
- Add
CODE_SIGNING_REQUIRED
setting with a value ofNO
To ensure that the code is formatted consistently, run the script ./scripts/check.sh before creating a PR.
GitHub Actions will verify that any code changes are done in a style compliant
way. Install clang-format
and mint
:
brew install clang-format@12
brew install mint
Select a scheme and press Command-u to build a component and run its unit tests.
See Contributing.
The contents of this repository is licensed under the Apache License, version 2.0.