estesp / manifest-tool

Command line tool to create and query container image manifest list/indexes
Apache License 2.0
751 stars 93 forks source link

pushml failure #1

Closed friism closed 8 years ago

friism commented 8 years ago

This is on Windows

C:\code\go\src\github.com\estesp\manifest-tool [master ≡ +2 ~0 -0 !]> cat .\registry-1-stage.docker.io.friism.golang.yml
image: registry-1-stage.docker.io/friism/golang:latest
manifests:
  -
    image: registry-1-stage.docker.io/friism/golang:linux
    platform:
      architecture: amd64
      os: linux
  -
    image: registry-1-stage.docker.io/friism/golang:windows
    platform:
      architecture: amd64
      os: windows
C:\code\go\src\github.com\estesp\manifest-tool [master ≡ +2 ~0 -0 !]> .\manifest-tool.exe pushml .\registry-1-stage.docker.io.friism.golang.yml
time="2016-04-14T17:39:30-07:00" level=info msg="Retrieving digests of images..."
time="2016-04-14T17:39:32-07:00" level=info msg="Image \"registry-1-stage.docker.io/friism/golang:linux\" is digest sha256:bc2864153bfe4821d22cf615dfa27fdc926c8e2b104205828a9c0db272e71c48; size: 8939"
panic: runtime error: index out of range

goroutine 1 [running]:
panic(0x920440, 0xc082002030)
        C:/tools/go/src/runtime/panic.go:464 +0x3f4
github.com/estesp/manifest-tool/docker.PutManifestList(0xc0820a4370, 0xc082008300, 0x2e, 0x0, 0x0, 0x0, 0x0)
        C:/code/go/src/github.com/estesp/manifest-tool/docker/createml.go:74 +0x4a89
main.glob.func2(0xc0820a4370)
        C:/code/go/src/github.com/estesp/manifest-tool/pushml.go:16 +0x13a
github.com/estesp/manifest-tool/vendor/github.com/codegangsta/cli.Command.Run(0x9c8078, 0x6, 0x0, 0x0, 0xa7e9e0, 0x34, 0x0, 0x0, 0x0, 0x0, ...)
        C:/code/go/src/github.com/estesp/manifest-tool/vendor/github.com/codegangsta/cli/command.go:101 +0xdc4
github.com/estesp/manifest-tool/vendor/github.com/codegangsta/cli.(*App).Run(0xc082056780, 0xc08204a120, 0x3, 0x3, 0x0, 0x0)
        C:/code/go/src/github.com/estesp/manifest-tool/vendor/github.com/codegangsta/cli/app.go:127 +0xaa9
main.main()
        C:/code/go/src/github.com/estesp/manifest-tool/main.go:54 +0x5e5
friism commented 8 years ago
 .\manifest-tool.exe --debug pushml .\registry-1-stage.docker.io.friism.golang.yml
time="2016-04-14T18:05:37-07:00" level=info msg="Retrieving digests of images..."
time="2016-04-14T18:05:37-07:00" level=debug msg="authConfig for registry-1-stage.docker.io: {friism <haha>   registry-1-stage.docker.io }"
time="2016-04-14T18:05:37-07:00" level=debug msg="endpoints: [{false https://registry-1-stage.docker.io v2 false true 0xc0821e3cc0} {false http://registry-1-stage.docker.io v2 false true 0xc0821e3cc0}]"
time="2016-04-14T18:05:37-07:00" level=debug msg="attempting v1 ping for registry endpoint https://registry-1-stage.docker.io/v1/"
time="2016-04-14T18:05:38-07:00" level=debug msg="Error unmarshalling the _ping PingResult: json: cannot unmarshal bool into Go value of type registry.PingResult"
time="2016-04-14T18:05:38-07:00" level=debug msg="Registry version header: '0.8.12'"
time="2016-04-14T18:05:38-07:00" level=debug msg="PingResult.Version: \"0.8.12\""
time="2016-04-14T18:05:38-07:00" level=debug msg="Registry standalone header: 'False'"
time="2016-04-14T18:05:38-07:00" level=debug msg="PingResult.Standalone: false"
time="2016-04-14T18:05:38-07:00" level=debug msg="Trying to fetch image manifest of registry-1-stage.docker.io/friism/golang repository from https://registry-1-stage.docker.io v2"
time="2016-04-14T18:05:38-07:00" level=debug msg="Increasing token expiration to: 60 seconds"
time="2016-04-14T18:05:39-07:00" level=info msg="Image \"registry-1-stage.docker.io/friism/golang:linux\" is digest sha256:bc2864153bfe4821d22cf615dfa27fdc926c8e2b104205828a9c0db272e71c48; size: 8939"
time="2016-04-14T18:05:39-07:00" level=debug msg="authConfig for registry-1-stage.docker.io: {friism haha   registry-1-stage.docker.io }"
time="2016-04-14T18:05:39-07:00" level=debug msg="endpoints: [{false https://registry-1-stage.docker.io v2 false true 0xc0821e2a00} {false http://registry-1-stage.docker.io v2 false true 0xc0821e2a00}]"
time="2016-04-14T18:05:39-07:00" level=debug msg="attempting v1 ping for registry endpoint https://registry-1-stage.docker.io/v1/"
time="2016-04-14T18:05:40-07:00" level=debug msg="Error unmarshalling the _ping PingResult: json: cannot unmarshal bool into Go value of type registry.PingResult"
time="2016-04-14T18:05:40-07:00" level=debug msg="Registry version header: '0.8.12'"
time="2016-04-14T18:05:40-07:00" level=debug msg="PingResult.Version: \"0.8.12\""
time="2016-04-14T18:05:40-07:00" level=debug msg="Registry standalone header: 'False'"
time="2016-04-14T18:05:40-07:00" level=debug msg="PingResult.Standalone: false"
time="2016-04-14T18:05:40-07:00" level=debug msg="Trying to fetch image manifest of registry-1-stage.docker.io/friism/golang repository from https://registry-1-stage.docker.io v2"
time="2016-04-14T18:05:40-07:00" level=debug msg="Increasing token expiration to: 60 seconds"
time="2016-04-14T18:05:41-07:00" level=debug msg="attempting v1 ping for registry endpoint http://registry-1-stage.docker.io/v1/"
time="2016-04-14T18:05:41-07:00" level=debug msg="Error unmarshalling the _ping PingResult: json: cannot unmarshal bool into Go value of type registry.PingResult"
time="2016-04-14T18:05:41-07:00" level=debug msg="Registry version header: '0.8.12'"
time="2016-04-14T18:05:41-07:00" level=debug msg="PingResult.Version: \"0.8.12\""
time="2016-04-14T18:05:41-07:00" level=debug msg="Registry standalone header: 'False'"
time="2016-04-14T18:05:41-07:00" level=debug msg="PingResult.Standalone: false"
time="2016-04-14T18:05:41-07:00" level=debug msg="Skipping non-TLS endpoint http://registry-1-stage.docker.io for host/port that appears to use TLS"
panic: runtime error: index out of range

goroutine 1 [running]:
panic(0x920440, 0xc082002030)
        C:/tools/go/src/runtime/panic.go:464 +0x3f4
github.com/estesp/manifest-tool/docker.PutManifestList(0xc0820a4370, 0xc082008340, 0x2e, 0x0, 0x0, 0x0, 0x0)
        C:/code/go/src/github.com/estesp/manifest-tool/docker/createml.go:74 +0x4a89
main.glob.func2(0xc0820a4370)
        C:/code/go/src/github.com/estesp/manifest-tool/pushml.go:16 +0x13a
github.com/estesp/manifest-tool/vendor/github.com/codegangsta/cli.Command.Run(0x9c8078, 0x6, 0x0, 0x0, 0xa7e9e0, 0x34, 0x0, 0x0, 0x0, 0x0, ...)
        C:/code/go/src/github.com/estesp/manifest-tool/vendor/github.com/codegangsta/cli/command.go:101 +0xdc4
github.com/estesp/manifest-tool/vendor/github.com/codegangsta/cli.(*App).Run(0xc082056780, 0xc082008300, 0x4, 0x4, 0x0, 0x0)
        C:/code/go/src/github.com/estesp/manifest-tool/vendor/github.com/codegangsta/cli/app.go:127 +0xaa9
main.main()
        C:/code/go/src/github.com/estesp/manifest-tool/main.go:54 +0x5e5
friism commented 8 years ago

I think this is user error caused by one of the tags missing - the error handling should probably be improved. I think this array can be empty: https://github.com/estesp/manifest-tool/blob/master/docker/createml.go#L74

estesp commented 8 years ago

oh man..that's ugly. The error check is after that assignment, which will most likely be a nil object if there is an error. I'll fix that..thanks!

estesp commented 8 years ago

Let me know if this resolves the problem--fixed it here when I used a bad tag/image