CST does not support OCI, if OCI is enabled by dependency bump, windows build fails
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 35/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 技術スタック
- docker, go
調査の方向性
go.mod と make cross で使用される Makefile のターゲットから始め、pkg/system/filesys_windows.go に至る github.com/docker/docker の依存関係パスを調査します。示されているバージョンで Windows のクロスビルドと tar-driver の OCI コマンドを再現します。依存関係の更新によって OCI のサポートが維持され、Windows バイナリの生成に成功すれば完了です。
索引モデルが issue の本文から書いたものです。
説明
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
- 主要言語
- Go
- スター
- 2.5k
- フォーク
- 213
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
GoogleContainerTools/container-structure-test のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
allstar
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
GoogleContainerTools/container-structure-test#393 · コメント 639 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
GoogleContainerTools/container-structure-test#280 · リアクション 1 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
-
Windows: structure_test binary missing .exe extension causes "Open With" dialog instead of running tests対応中かも @peakschris が 147 日前に担当しました。 オープン
難易度 3/5 1〜2日 初心者へのやさしさ 72/100
GoogleContainerTools/container-structure-test の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
YoanWai/agent-manager#948 ·
メンテナーはふだん 1 日以内に返信
-
area: platform priority: normal
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
margince/margince#9851 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Headerless responses block while skipping duplicate status lines対応中かも @mynhe が 1 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 73/100
projectdiscovery/rawhttp#554 ·
-
type:chore
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
nightgauge/nightgauge#2793 ·
メンテナーはふだん 1 日以内に返信
-
stage-fail
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
siyuan-note/bazaar#2447 ·
メンテナーはふだん 1 日以内に返信