debian-forge-composer/vendor/cloud.google.com/go
Ondřej Budai 29f66a251f go.mod: update github.com/containers/image/v5
Version 5.22 introduced a new option to /etc/containers/policy.json called
keyPaths, see

https://github.com/containers/image/pull/1609

EL9 immediately took advantage of this new feature and started using it, see
04645c4a84

This quickly became an issue in our code: The go library (containers/image)
parses the configuration file very strictly and refuses to create a client
when policy.json with an unknown key is present on the filesystem. As we
used 5.21.1 that doesn't know the new key, our unit tests started to
failing when containers-common was present.

Reproducer:
podman run --pull=always --rm -it centos:stream9
dnf install -y dnf-plugins-core
dnf config-manager --set-enabled crb
dnf install -y gpgme-devel libassuan-devel krb5-devel golang git-core
git clone https://github.com/osbuild/osbuild-composer
cd osbuild-composer

# install the new containers-common and run the test
dnf install -y https://kojihub.stream.centos.org/kojifiles/packages/containers-common/1/44.el9/x86_64/containers-common-1-44.el9.x86_64.rpm
go test -count 1 ./...

# this returns:
--- FAIL: TestClientResolve (0.00s)
    client_test.go:31:
        	Error Trace:	client_test.go:31
        	Error:      	Received unexpected error:
        	            	Unknown key "keyPaths"
        	            	invalid policy in "/etc/containers/policy.json"
        	            	github.com/containers/image/v5/signature.NewPolicyFromFile
        	            		/osbuild-composer/vendor/github.com/containers/image/v5/signature/policy_config.go:88
        	            	github.com/osbuild/osbuild-composer/internal/container.NewClient
        	            		/osbuild-composer/internal/container/client.go:123
        	            	github.com/osbuild/osbuild-composer/internal/container_test.TestClientResolve
        	            		/osbuild-composer/internal/container/client_test.go:29
        	            	testing.tRunner
        	            		/usr/lib/golang/src/testing/testing.go:1439
        	            	runtime.goexit
        	            		/usr/lib/golang/src/runtime/asm_amd64.s:1571
        	Test:       	TestClientResolve
    client_test.go:32:
        	Error Trace:	client_test.go:32
        	Error:      	Expected value not to be nil.
        	Test:       	TestClientResolve

 When run with an older containers-common, it succeeds:
 dnf install -y https://kojihub.stream.centos.org/kojifiles/packages/containers-common/1/40.el9/x86_64/containers-common-1-40.el9.x86_64.rpm
 go test -count 1 ./...
 PASS

To sum it up, I had to upgrade github.com/containers/image/v5 to v5.22.0.
Unfortunately, this wasn't so simple, see

go get github.com/containers/image/v5@latest
go: github.com/containers/image/v5@v5.22.0 requires
	github.com/letsencrypt/boulder@v0.0.0-20220331220046-b23ab962616e requires
	github.com/honeycombio/beeline-go@v1.1.1 requires
	github.com/gobuffalo/pop/v5@v5.3.1 requires
	github.com/mattn/go-sqlite3@v2.0.3+incompatible: reading github.com/mattn/go-sqlite3/go.mod at revision v2.0.3: unknown revision v2.0.3

It turns out that github.com/mattn/go-sqlite3@v2.0.3+incompatible has been
recently retracted https://github.com/mattn/go-sqlite3/pull/998 and this
broke a ton of packages depending on it. I was able to fix it by adding

exclude github.com/mattn/go-sqlite3 v2.0.3+incompatible

to our go.mod, see
https://github.com/mattn/go-sqlite3/issues/975#issuecomment-955661657

After adding it,
go get github.com/containers/image/v5@latest
succeeded and tools/prepare-source.sh took care of the rest.

Signed-off-by: Ondřej Budai <ondrej@budai.cz>
2022-08-29 10:25:38 +02:00
..
cloudbuild build(deps): bump cloud.google.com/go/cloudbuild from 1.0.0 to 1.2.0 2022-04-25 10:41:47 +02:00
compute go.mod: update github.com/containers/image/v5 2022-08-29 10:25:38 +02:00
iam build(deps): bump cloud.google.com/go/storage from 1.18.2 to 1.22.0 2022-04-20 14:27:18 +02:00
internal go.mod: update github.com/containers/image/v5 2022-08-29 10:25:38 +02:00
longrunning go.mod: update github.com/containers/image/v5 2022-08-29 10:25:38 +02:00
storage go.mod: update github.com/containers/image/v5 2022-08-29 10:25:38 +02:00
.gitignore internal/upload: Add support for upload to GCP and CLI tool using it 2021-02-25 18:44:21 +00:00
.release-please-manifest-submodules.json go.mod: update github.com/containers/image/v5 2022-08-29 10:25:38 +02:00
.release-please-manifest.json go.mod: update github.com/containers/image/v5 2022-08-29 10:25:38 +02:00
CHANGES.md go.mod: update github.com/containers/image/v5 2022-08-29 10:25:38 +02:00
CODE_OF_CONDUCT.md internal/upload: Add support for upload to GCP and CLI tool using it 2021-02-25 18:44:21 +00:00
CONTRIBUTING.md go.mod: update github.com/containers/image/v5 2022-08-29 10:25:38 +02:00
doc.go go.mod: update github.com/containers/image/v5 2022-08-29 10:25:38 +02:00
go.mod go.mod: update github.com/containers/image/v5 2022-08-29 10:25:38 +02:00
go.sum go.mod: update github.com/containers/image/v5 2022-08-29 10:25:38 +02:00
LICENSE internal/upload: Add support for upload to GCP and CLI tool using it 2021-02-25 18:44:21 +00:00
README.md go.mod: update github.com/containers/image/v5 2022-08-29 10:25:38 +02:00
release-please-config-yoshi-submodules.json go.mod: update github.com/containers/image/v5 2022-08-29 10:25:38 +02:00
release-please-config.json go.mod: update github.com/containers/image/v5 2022-08-29 10:25:38 +02:00
RELEASING.md internal/cloud/gcp: use pkg.go.dev/cloud.google.com/go for Compute Engine 2022-02-03 15:35:28 +01:00
SECURITY.md build(deps): bump google.golang.org/api from 0.36.0 to 0.56.0 2021-09-05 11:17:29 +02:00
testing.md internal/cloud/gcp: use pkg.go.dev/cloud.google.com/go for Compute Engine 2022-02-03 15:35:28 +01:00

Google Cloud Client Libraries for Go

Go Reference

Go packages for Google Cloud Platform services.

import "cloud.google.com/go"

To install the packages on your system, do not clone the repo. Instead:

  1. Change to your project directory:

    cd /my/cloud/project
    
  2. Get the package you want to use. Some products have their own module, so it's best to go get the package(s) you want to use:

    $ go get cloud.google.com/go/firestore # Replace with the package you want to use.
    

NOTE: Some of these packages are under development, and may occasionally make backwards-incompatible changes.

Supported APIs

For an updated list of all of our released APIs please see our reference docs.

Go Versions Supported

Our libraries are compatible with at least the three most recent, major Go releases. They are currently compatible with:

  • Go 1.18
  • Go 1.17
  • Go 1.16
  • Go 1.15

Authorization

By default, each API will use Google Application Default Credentials for authorization credentials used in calling the API endpoints. This will allow your application to run in many environments without requiring explicit configuration.

client, err := storage.NewClient(ctx)

To authorize using a JSON key file, pass option.WithCredentialsFile to the NewClient function of the desired package. For example:

client, err := storage.NewClient(ctx, option.WithCredentialsFile("path/to/keyfile.json"))

You can exert more control over authorization by using the golang.org/x/oauth2 package to create an oauth2.TokenSource. Then pass option.WithTokenSource to the NewClient function: snip:# (auth-ts)

tokenSource := ...
client, err := storage.NewClient(ctx, option.WithTokenSource(tokenSource))

Contributing

Contributions are welcome. Please, see the CONTRIBUTING document for details.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms. See Contributor Code of Conduct for more information.