name: update-client-library-version description: Guides through updating a Google Cloud Go client library to the latest version across the Config Connector repository.
Upgrading Google Cloud Client Libraries in Config Connector
This skill outlines the process for updating Google Cloud client libraries (e.g., cloud.google.com/go/alloydb or cloud.google.com/go/spanner) in Config Connector (KCC).
Workflow
1. Identify the Latest Version
Find the latest version of the target Go client library. You can run:
go list -m -versions cloud.google.com/go/<service>
2. Update the Root Module
Update the dependency in the root go.mod directory to the target version and tidy up.
go get cloud.google.com/go/<service>@<version>
go mod tidy
3. Update the MockGCP Module
Update the dependency in the mockgcp/go.mod directory to align version configuration and tidy up.
cd mockgcp
go get cloud.google.com/go/<service>@<version>
go mod tidy
cd ..
4. Verify Fuzzing & Identify Missing Fields
Run KRM mapping fuzz tests to ensure the updated types do not introduce serialization or validation regressions.
go test -v ./pkg/fuzztesting/fuzztests/
If any new fields are introduced in the updated library, the roundtrip verification might fail. The failure messages will output helpful recommendations such as:
Add f.Unimplemented_NotYetTriaged(".new_field") to the fuzzer for the proto type <proto_type> to mark this field as not yet triaged.
5. Mark New Fields as Untriaged
Locate the corresponding fuzzer file for the service (typically under pkg/controller/direct/<service>/<kind>_fuzzer.go).
Add the recommended field ignore using f.Unimplemented_NotYetTriaged(".new_field") in the initialization of the fuzzer.
6. Format and Validate
Run formatting and verify the entire package compiled without static analysis issues:
make fmt
go vet ./pkg/controller/direct/<service>/... ./pkg/fuzztesting/fuzztests/...
Run the fuzz tests again to ensure all tests pass:
go test -v ./pkg/fuzztesting/fuzztests/