Merge pull request #1784 from mtrmac/1.9-backports

[release-1.9] 1.9 backports
This commit is contained in:
Miloslav Trmač 2022-10-19 21:03:07 +02:00 committed by GitHub
commit 04d99f7eb2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 31 additions and 16 deletions

View File

@ -84,12 +84,13 @@ osx_task:
macos_instance: macos_instance:
image: catalina-xcode image: catalina-xcode
setup_script: | setup_script: |
export PATH=$GOPATH/bin:$PATH # /usr/local/opt/go@1.18 will be populated by (brew install go@1.18) below
export PATH=$GOPATH/bin:/usr/local/opt/go@1.18/bin:$PATH
brew update brew update
brew install gpgme go go-md2man brew install gpgme go@1.18 go-md2man
go install golang.org/x/lint/golint@latest go install golang.org/x/lint/golint@latest
test_script: | test_script: |
export PATH=$GOPATH/bin:$PATH export PATH=$GOPATH/bin:/usr/local/opt/go@1.18/bin:$PATH
go version go version
go env go env
make validate-local test-unit-local bin/skopeo make validate-local test-unit-local bin/skopeo

2
go.mod
View File

@ -4,7 +4,7 @@ go 1.17
require ( require (
github.com/containers/common v0.49.1 github.com/containers/common v0.49.1
github.com/containers/image/v5 v5.22.0 github.com/containers/image/v5 v5.22.1
github.com/containers/ocicrypt v1.1.5 github.com/containers/ocicrypt v1.1.5
github.com/containers/storage v1.42.0 github.com/containers/storage v1.42.0
github.com/docker/docker v20.10.17+incompatible github.com/docker/docker v20.10.17+incompatible

3
go.sum
View File

@ -371,8 +371,9 @@ github.com/containernetworking/plugins v1.0.1/go.mod h1:QHCfGpaTwYTbbH+nZXKVTxNB
github.com/containernetworking/plugins v1.1.1/go.mod h1:Sr5TH/eBsGLXK/h71HeLfX19sZPp3ry5uHSkI4LPxV8= github.com/containernetworking/plugins v1.1.1/go.mod h1:Sr5TH/eBsGLXK/h71HeLfX19sZPp3ry5uHSkI4LPxV8=
github.com/containers/common v0.49.1 h1:6y4/s2WwYxrv+Cox7fotOo316wuZI+iKKPUQweCYv50= github.com/containers/common v0.49.1 h1:6y4/s2WwYxrv+Cox7fotOo316wuZI+iKKPUQweCYv50=
github.com/containers/common v0.49.1/go.mod h1:ueM5hT0itKqCQvVJDs+EtjornAQtrHYxQJzP2gxeGIg= github.com/containers/common v0.49.1/go.mod h1:ueM5hT0itKqCQvVJDs+EtjornAQtrHYxQJzP2gxeGIg=
github.com/containers/image/v5 v5.22.0 h1:KemxPmD4D2YYOFZN2SgoTk7nBFcnwPiPW0MqjYtknSE=
github.com/containers/image/v5 v5.22.0/go.mod h1:D8Ksv2RNB8qLJ7xe1P3rgJJOSQpahA6amv2Ax++/YO4= github.com/containers/image/v5 v5.22.0/go.mod h1:D8Ksv2RNB8qLJ7xe1P3rgJJOSQpahA6amv2Ax++/YO4=
github.com/containers/image/v5 v5.22.1 h1:Oj8C/ACrNn18f8MNTqOeBOHAN51GF1rEhoVSCA/ylvI=
github.com/containers/image/v5 v5.22.1/go.mod h1:D8Ksv2RNB8qLJ7xe1P3rgJJOSQpahA6amv2Ax++/YO4=
github.com/containers/libtrust v0.0.0-20200511145503-9c3a6c22cd9a h1:spAGlqziZjCJL25C6F1zsQY05tfCKE9F5YwtEWWe6hU= github.com/containers/libtrust v0.0.0-20200511145503-9c3a6c22cd9a h1:spAGlqziZjCJL25C6F1zsQY05tfCKE9F5YwtEWWe6hU=
github.com/containers/libtrust v0.0.0-20200511145503-9c3a6c22cd9a/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY= github.com/containers/libtrust v0.0.0-20200511145503-9c3a6c22cd9a/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY=
github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc= github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc=

View File

@ -1,6 +1,7 @@
package docker package docker
import ( import (
"bytes"
"context" "context"
"crypto/tls" "crypto/tls"
"encoding/json" "encoding/json"
@ -921,15 +922,25 @@ func (c *dockerClient) getOCIDescriptorContents(ctx context.Context, ref dockerR
// isManifestUnknownError returns true iff err from fetchManifest is a “manifest unknown” error. // isManifestUnknownError returns true iff err from fetchManifest is a “manifest unknown” error.
func isManifestUnknownError(err error) bool { func isManifestUnknownError(err error) bool {
var errs errcode.Errors var errs errcode.Errors
if !errors.As(err, &errs) || len(errs) == 0 { if errors.As(err, &errs) && len(errs) != 0 {
return false firstErr := errs[0]
// docker/distribution, and as defined in the spec
var ec errcode.ErrorCoder
if errors.As(firstErr, &ec) && ec.ErrorCode() == v2.ErrorCodeManifestUnknown {
return true
}
// registry.redhat.io as of October 2022
var e errcode.Error
if errors.As(firstErr, &e) && e.ErrorCode() == errcode.ErrorCodeUnknown && e.Message == "Not Found" {
return true
}
} }
err = errs[0] // ALSO registry.redhat.io as of October 2022
ec, ok := err.(errcode.ErrorCoder) var unexpected *clientLib.UnexpectedHTTPResponseError
if !ok { if errors.As(err, &unexpected) && unexpected.StatusCode == http.StatusNotFound && bytes.Contains(unexpected.Response, []byte("Not found")) {
return false return true
} }
return ec.ErrorCode() == v2.ErrorCodeManifestUnknown return false
} }
// getSigstoreAttachmentManifest loads and parses the manifest for sigstore attachments for // getSigstoreAttachmentManifest loads and parses the manifest for sigstore attachments for

View File

@ -652,6 +652,7 @@ func (d *dockerImageDestination) putSignaturesToSigstoreAttachments(ctx context.
Digest: "", // We will fill this in later. Digest: "", // We will fill this in later.
Size: 0, Size: 0,
}, nil) }, nil)
ociConfig.RootFS.Type = "layers"
} else { } else {
logrus.Debugf("Fetching sigstore attachment config %s", ociManifest.Config.Digest.String()) logrus.Debugf("Fetching sigstore attachment config %s", ociManifest.Config.Digest.String())
// We dont benefit from a real BlobInfoCache here because we never try to reuse/mount configs. // We dont benefit from a real BlobInfoCache here because we never try to reuse/mount configs.

View File

@ -54,7 +54,8 @@ func registryHTTPResponseToError(res *http.Response) error {
if len(response) > 50 { if len(response) > 50 {
response = response[:50] + "..." response = response[:50] + "..."
} }
err = fmt.Errorf("StatusCode: %d, %s", e.StatusCode, response) // %.0w makes e visible to error.Unwrap() without including any text
err = fmt.Errorf("StatusCode: %d, %s%.0w", e.StatusCode, response, e)
} }
return err return err
} }

View File

@ -8,7 +8,7 @@ const (
// VersionMinor is for functionality in a backwards-compatible manner // VersionMinor is for functionality in a backwards-compatible manner
VersionMinor = 22 VersionMinor = 22
// VersionPatch is for backwards-compatible bug fixes // VersionPatch is for backwards-compatible bug fixes
VersionPatch = 0 VersionPatch = 1
// VersionDev indicates development branch. Releases will be empty string. // VersionDev indicates development branch. Releases will be empty string.
VersionDev = "" VersionDev = ""

2
vendor/modules.txt vendored
View File

@ -61,7 +61,7 @@ github.com/containers/common/pkg/flag
github.com/containers/common/pkg/report github.com/containers/common/pkg/report
github.com/containers/common/pkg/report/camelcase github.com/containers/common/pkg/report/camelcase
github.com/containers/common/pkg/retry github.com/containers/common/pkg/retry
# github.com/containers/image/v5 v5.22.0 # github.com/containers/image/v5 v5.22.1
## explicit; go 1.17 ## explicit; go 1.17
github.com/containers/image/v5/copy github.com/containers/image/v5/copy
github.com/containers/image/v5/directory github.com/containers/image/v5/directory

View File

@ -1,4 +1,4 @@
package version package version
// Version is the version of the build. // Version is the version of the build.
const Version = "1.9.3-dev" const Version = "1.9.4-dev"