container-structure-test icon indicating copy to clipboard operation
container-structure-test copied to clipboard

CST does not support OCI, if OCI is enabled by dependency bump, windows build fails

Open sluetze opened this issue 5 years ago • 0 comments

Hi,

I try to use CST with OCI Images. Cause reasons, I MUST work without docker. Thus I use the --driver tar.

This does not seem to work with CST: Error: error creating driver: retrieving image: MANIFEST_UNKNOWN: OCI manifest found, but accept header does not support OCI manifests

./container-structure-test test --driver tar --image harbor.<fqdn>/library/oci:test --config config.yaml

====================================
====== Test file: config.yaml ======
====================================
2020/08/06 20:37:04 Unable to read "/root/.docker/config.json": open /root/.docker/config.json: no such file or directory
=== RUN: Metadata Test
--- FAIL
duration: 0s
Error: error creating driver: retrieving image: MANIFEST_UNKNOWN: OCI manifest found, but accept header does not support OCI manifests

=====================================
============== RESULTS ==============
=====================================
Passes:      0
Failures:    1
Duration:    0s
Total tests: 1

FAIL
FATA[0000] FAIL

I did some research, fetched the sourcecode, updated the dependency github.com/google/go-containerregistry to v.0.1.1 and make cross within a go1.9 container

module github.com/GoogleContainerTools/container-structure-test

go 1.14

require (
        github.com/GoogleContainerTools/container-diff v0.14.1-0.20190219205308-3f6b025c016c
        github.com/Microsoft/hcsshim v0.8.9 // indirect
        github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d // indirect
        github.com/bitly/go-simplejson v0.5.0 // indirect
        github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect
        github.com/bshuster-repo/logrus-logstash-hook v0.4.1 // indirect
        github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd // indirect
        github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b // indirect
        github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 // indirect
        github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba // indirect
        github.com/docker/distribution v2.7.1+incompatible
        github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916 // indirect
        github.com/fsouza/go-dockerclient v1.3.6
        github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7 // indirect
        github.com/google/go-cmp v0.4.1
        github.com/google/go-containerregistry v0.1.1
        github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33 // indirect
        github.com/marstr/guid v1.1.0 // indirect
        github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f // indirect
        github.com/ncw/swift v1.0.47 // indirect
        github.com/pkg/errors v0.9.1
        github.com/sirupsen/logrus v1.6.0
        github.com/spf13/cobra v1.0.0
        github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43 // indirect
        github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50 // indirect
        github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f // indirect
        golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37
        google.golang.org/cloud v0.0.0-20151119220103-975617b05ea8 // indirect
        gopkg.in/yaml.v2 v2.3.0
)

This results in:

GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags " -X github.com/GoogleContainerTools/container-structure-test/pkg/version.version=v1.9.0 -X github.com/GoogleContainerTools/container-structure-test/pkg/version.buildDate=2020-08-06T21:30:33Z " -o out/container-structure-test-linux-amd64 github.com/GoogleContainerTools/container-structure-test/cmd/container-structure-test
sha256sum out/container-structure-test-linux-amd64 &> out/container-structure-test-linux-amd64.sha256
GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build -ldflags " -X github.com/GoogleContainerTools/container-structure-test/pkg/version.version=v1.9.0 -X github.com/GoogleContainerTools/container-structure-test/pkg/version.buildDate=2020-08-06T21:30:33Z " -o out/container-structure-test-darwin-amd64 github.com/GoogleContainerTools/container-structure-test/cmd/container-structure-test
ad913da4a1d6603b48fa789a5a5903ff3ee2eb76ff2a2c9fbf2169908e72c40e  out/container-structure-test-linux-amd64
sha256sum out/container-structure-test-darwin-amd64 &> out/container-structure-test-darwin-amd64.sha256
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -ldflags " -X github.com/GoogleContainerTools/container-structure-test/pkg/version.version=v1.9.0 -X github.com/GoogleContainerTools/container-structure-test/pkg/version.buildDate=2020-08-06T21:30:33Z " -o out/container-structure-test-windows-amd64 github.com/GoogleContainerTools/container-structure-test/cmd/container-structure-test
dfbfe003583538457dc8ca9ad725ebdf99e60d4e806c5fc6d69e3198bcaadb7d  out/container-structure-test-darwin-amd64
cp out/container-structure-test-windows-amd64 out/container-structure-test-windows-amd64.exe
sha256sum out/container-structure-test-windows-amd64.exe &> out/container-structure-test-windows-amd64.exe.sha256
rm out/container-structure-test-windows-amd64

The resulting binary does NOT fix the issue. So the error persists.

when I build the same code with go version go1.13.4 linux/amd64

GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags " -X github.com/GoogleContainerTools/container-structure-test/pkg/version.version=v1.9.0 -X github.com/GoogleContainerTools/container-structure-test/pkg/version.buildDate=2020-08-06T23:39:23Z " -o out/container-structure-test-linux-amd64 github.com/GoogleContainerTools/container-structure-test/cmd/container-structure-test
sha256sum out/container-structure-test-linux-amd64 &> out/container-structure-test-linux-amd64.sha256
GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build -ldflags " -X github.com/GoogleContainerTools/container-structure-test/pkg/version.version=v1.9.0 -X github.com/GoogleContainerTools/container-structure-test/pkg/version.buildDate=2020-08-06T23:39:23Z " -o out/container-structure-test-darwin-amd64 github.com/GoogleContainerTools/container-structure-test/cmd/container-structure-test
sha256sum out/container-structure-test-darwin-amd64 &> out/container-structure-test-darwin-amd64.sha256
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -ldflags " -X github.com/GoogleContainerTools/container-structure-test/pkg/version.version=v1.9.0 -X github.com/GoogleContainerTools/container-structure-test/pkg/version.buildDate=2020-08-06T23:39:23Z " -o out/container-structure-test-windows-amd64 github.com/GoogleContainerTools/container-structure-test/cmd/container-structure-test
# github.com/docker/docker/pkg/system
/root/go/pkg/mod/github.com/docker/[email protected]/pkg/system/filesys_windows.go:112:24: cannot use uintptr(unsafe.Pointer(&sd[0])) (type uintptr) as type *"golang.org/x/sys/windows".SECURITY_DESCRIPTOR in assignment
make: *** [Makefile:51: out/container-structure-test-windows-amd64] Error 2

so the windows binary fails. This seems to be caused by https://github.com/golang/go/issues/34610

BUT my issue is fixed!

./container-structure-test-linux-amd64  test --driver tar --image harbor.<fqdn>/library/oci:test --config config.yaml

====================================
====== Test file: config.yaml ======
====================================
=== RUN: Metadata Test
--- FAIL
duration: 0s
Error: label built-date not found in image metadata

=====================================
============== RESULTS ==============
=====================================
Passes:      0
Failures:    1
Duration:    0s
Total tests: 1

FAIL
FATA[0005] FAIL

Since I don't use windows it is ok for me. I guess I need to bump a dependency which depends on /docker/[email protected]

But since the changed line in the dependencies is the only line I ever did in a go - programm I am unable to find the correct dependency.

I am willing to dig into this more, but need some fingerpoints to help me. And if someone has an explanation, why the functionality is so different with different go versions I would be thankful.

--sluetze

sluetze avatar Aug 06 '20 21:08 sluetze