mirror of
https://github.com/moby/buildkit.git
synced 2026-11-06 05:16:45 +00:00
exporter: add compatibility version 30
Add compatibility-version 30 for the new OCI media type default while keeping version 20 pinned to the historical image exporter behavior through v0.31.x. Track omitted oci-mediatypes separately from explicit false, add v30 compatibility goldens, and document the supported compatibility versions. Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
This commit is contained in:
25 files changed
+428
-26
No files matched your search
@@ -0,0 +1 @@
|
||||
{"architecture":"amd64","config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["sh"],"Image":"sha256:919de79e94ce464098cec8a4796f27aa2d0c93985e27f6a157c8bbb557568013","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"container":"adfa050237a5fcf9f1e5ad6351b3665e4b99e0c12f33bdd3535b8fb001f9dd2e","container_config":{"Hostname":"adfa050237a5","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["/bin/sh","-c","#(nop) ","CMD [\"sh\"]"],"Image":"sha256:919de79e94ce464098cec8a4796f27aa2d0c93985e27f6a157c8bbb557568013","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":{}},"created":"2015-10-21T07:28:00Z","docker_version":"20.10.23","history":[{"created":"2015-10-21T07:28:00Z","created_by":"/bin/sh -c #(nop) ADD file:7e9002edaafd4e4579b65c8f0aaabde1aeb7fd3f8d95579f7fd3443cef785fd1 in / "},{"created":"2015-10-21T07:28:00Z","created_by":"/bin/sh -c #(nop) CMD [\"sh\"]","empty_layer":true},{"created":"2015-10-21T07:28:00Z","created_by":"mkdir /proc, mkdir /sys, mkdir /base, mkfile /base/base.txt","comment":"buildkit.exporter.image.v0"},{"created":"2015-10-21T07:28:00Z","created_by":"mkdir /inputs/git, mkfile /inputs/llb.txt, copy /artifact.txt /inputs/http.txt, copy /git.txt /inputs/git/git.txt, copy /sub/nested.txt /inputs/git/nested.txt","comment":"buildkit.exporter.image.v0"},{"created":"2015-10-21T07:28:00Z","created_by":"mount / from exec sh -eux -c \nmkdir -p /generated/deeper\necho exec-fixture \u003e /generated/exec.txt\necho nested-exec \u003e /generated/deeper/nested.txt\n","comment":"buildkit.exporter.image.v0"}],"os":"linux","rootfs":{"type":"layers","diff_ids":["sha256:fe4922f0a3ca2aa707ca0f8cc53937e947fec1157a09302baf11904258d67d17","sha256:007165e99d6304af5653e8a8cc1c8886e5719cf31bf09cbd9f50fa09008ef654","sha256:9228085939d1444bd500ac8a4f8ee9d39fed1e5905da0968ffed61887ab41042","sha256:672c0da84adab23797eebbf41315e289f03b02e266bdd6f6e88a7736583a4466"]}}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"schemaVersion": 2,
|
||||
"mediaType": "application/vnd.oci.image.manifest.v1+json",
|
||||
"config": {
|
||||
"mediaType": "application/vnd.oci.image.config.v1+json",
|
||||
"digest": "sha256:1772fd0a3b45a62fc5e23737bf8aa63ea2cb178a02e57cec4d14ef9e6fcc4c95",
|
||||
"size": 2295
|
||||
},
|
||||
"layers": [
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:430ee4fa77d640d42de0c6357e4cff7249712a28284310bda8293050c6cbc5d8",
|
||||
"size": 2219886,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:48cef04b9e3890175d531912bd6307b344eb1d16caba14f32989e8034466dde4",
|
||||
"size": 175,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:3096f0079befb9bacfab7003f9de4604477e81ef1cd0d4bb9f967db5aba7bebc",
|
||||
"size": 242,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:163f5dbfba981d0b1e6e9c5a1ba003efa40e7e7d38e8471653e1f1b2abd370d9",
|
||||
"size": 201,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"architecture":"amd64","config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["sh"],"Image":"sha256:919de79e94ce464098cec8a4796f27aa2d0c93985e27f6a157c8bbb557568013","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"container":"adfa050237a5fcf9f1e5ad6351b3665e4b99e0c12f33bdd3535b8fb001f9dd2e","container_config":{"Hostname":"adfa050237a5","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["/bin/sh","-c","#(nop) ","CMD [\"sh\"]"],"Image":"sha256:919de79e94ce464098cec8a4796f27aa2d0c93985e27f6a157c8bbb557568013","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":{}},"created":"2015-10-21T07:28:00Z","docker_version":"20.10.23","history":[{"created":"2015-10-21T07:28:00Z","created_by":"/bin/sh -c #(nop) ADD file:7e9002edaafd4e4579b65c8f0aaabde1aeb7fd3f8d95579f7fd3443cef785fd1 in / "},{"created":"2015-10-21T07:28:00Z","created_by":"/bin/sh -c #(nop) CMD [\"sh\"]","empty_layer":true},{"created":"2015-10-21T07:28:00Z","created_by":"mkdir /proc, mkdir /sys, mkdir /base, mkfile /base/base.txt","comment":"buildkit.exporter.image.v0"},{"created":"2015-10-21T07:28:00Z","created_by":"mkdir /inputs/git, mkfile /inputs/llb.txt, copy /artifact.txt /inputs/http.txt, copy /git.txt /inputs/git/git.txt, copy /sub/nested.txt /inputs/git/nested.txt","comment":"buildkit.exporter.image.v0"},{"created":"2015-10-21T07:28:00Z","created_by":"mount / from exec sh -eux -c \nmkdir -p /generated/deeper\necho exec-fixture \u003e /generated/exec.txt\necho nested-exec \u003e /generated/deeper/nested.txt\n","comment":"buildkit.exporter.image.v0"}],"os":"linux","rootfs":{"type":"layers","diff_ids":["sha256:fe4922f0a3ca2aa707ca0f8cc53937e947fec1157a09302baf11904258d67d17","sha256:007165e99d6304af5653e8a8cc1c8886e5719cf31bf09cbd9f50fa09008ef654","sha256:9228085939d1444bd500ac8a4f8ee9d39fed1e5905da0968ffed61887ab41042","sha256:672c0da84adab23797eebbf41315e289f03b02e266bdd6f6e88a7736583a4466"]}}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"schemaVersion": 2,
|
||||
"mediaType": "application/vnd.oci.image.manifest.v1+json",
|
||||
"config": {
|
||||
"mediaType": "application/vnd.oci.image.config.v1+json",
|
||||
"digest": "sha256:1772fd0a3b45a62fc5e23737bf8aa63ea2cb178a02e57cec4d14ef9e6fcc4c95",
|
||||
"size": 2295
|
||||
},
|
||||
"layers": [
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:3b2645dc700f1550f22b0915aea1fb70755d0cccd4171499c7a18f396a284d48",
|
||||
"size": 4492656,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:426dfb571c2a1f52cb66e0a69fbe2348348afc4ba893cba5754a841882d91773",
|
||||
"size": 3612,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:5c3240cc0bcdc46a4ff085359eba4d0ffe7e5e161c5f376e79f2264719041668",
|
||||
"size": 6172,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:847e9b228e5b81db2fe943892d3602808b8f94ec498afe963a23bf8ab1d39a26",
|
||||
"size": 4124,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"architecture":"amd64","config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["sh"],"Image":"sha256:919de79e94ce464098cec8a4796f27aa2d0c93985e27f6a157c8bbb557568013","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"container":"adfa050237a5fcf9f1e5ad6351b3665e4b99e0c12f33bdd3535b8fb001f9dd2e","container_config":{"Hostname":"adfa050237a5","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["/bin/sh","-c","#(nop) ","CMD [\"sh\"]"],"Image":"sha256:919de79e94ce464098cec8a4796f27aa2d0c93985e27f6a157c8bbb557568013","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":{}},"created":"2015-10-21T07:28:00Z","docker_version":"20.10.23","history":[{"created":"2015-10-21T07:28:00Z","created_by":"/bin/sh -c #(nop) ADD file:7e9002edaafd4e4579b65c8f0aaabde1aeb7fd3f8d95579f7fd3443cef785fd1 in / "},{"created":"2015-10-21T07:28:00Z","created_by":"/bin/sh -c #(nop) CMD [\"sh\"]","empty_layer":true},{"created":"2015-10-21T07:28:00Z","created_by":"mkdir /proc, mkdir /sys, mkdir /base, mkfile /base/base.txt","comment":"buildkit.exporter.image.v0"},{"created":"2015-10-21T07:28:00Z","created_by":"mkdir /inputs/git, mkfile /inputs/llb.txt, copy /artifact.txt /inputs/http.txt, copy /git.txt /inputs/git/git.txt, copy /sub/nested.txt /inputs/git/nested.txt","comment":"buildkit.exporter.image.v0"},{"created":"2015-10-21T07:28:00Z","created_by":"mount / from exec sh -eux -c \nmkdir -p /generated/deeper\necho exec-fixture \u003e /generated/exec.txt\necho nested-exec \u003e /generated/deeper/nested.txt\n","comment":"buildkit.exporter.image.v0"}],"os":"linux","rootfs":{"type":"layers","diff_ids":["sha256:fe4922f0a3ca2aa707ca0f8cc53937e947fec1157a09302baf11904258d67d17","sha256:007165e99d6304af5653e8a8cc1c8886e5719cf31bf09cbd9f50fa09008ef654","sha256:9228085939d1444bd500ac8a4f8ee9d39fed1e5905da0968ffed61887ab41042","sha256:672c0da84adab23797eebbf41315e289f03b02e266bdd6f6e88a7736583a4466"]}}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"schemaVersion": 2,
|
||||
"mediaType": "application/vnd.oci.image.manifest.v1+json",
|
||||
"config": {
|
||||
"mediaType": "application/vnd.oci.image.config.v1+json",
|
||||
"digest": "sha256:1772fd0a3b45a62fc5e23737bf8aa63ea2cb178a02e57cec4d14ef9e6fcc4c95",
|
||||
"size": 2295
|
||||
},
|
||||
"layers": [
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:86961eaccfc75a8eea4385f921d5aa55c8bb752f1c92a7c3189ae4a4fc37a45c",
|
||||
"size": 2216704,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:f39e671d2c987aa1cedb5d830a68d394ce7f72502ec50d6bd11efaa71bb697d2",
|
||||
"size": 168,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:ba67dd0bb35371d02be3b950c6d617e1f22f55861fc5a7d0d354c8fbb2f77b56",
|
||||
"size": 228,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:ca66b99f9916a22accc57a790d407b442a10791859f9d0a6b6c8108857c3c608",
|
||||
"size": 187,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"architecture":"amd64","config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["sh"],"Image":"sha256:919de79e94ce464098cec8a4796f27aa2d0c93985e27f6a157c8bbb557568013","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"container":"adfa050237a5fcf9f1e5ad6351b3665e4b99e0c12f33bdd3535b8fb001f9dd2e","container_config":{"Hostname":"adfa050237a5","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["/bin/sh","-c","#(nop) ","CMD [\"sh\"]"],"Image":"sha256:919de79e94ce464098cec8a4796f27aa2d0c93985e27f6a157c8bbb557568013","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":{}},"created":"2015-10-21T07:28:00Z","docker_version":"20.10.23","history":[{"created":"2015-10-21T07:28:00Z","created_by":"/bin/sh -c #(nop) ADD file:7e9002edaafd4e4579b65c8f0aaabde1aeb7fd3f8d95579f7fd3443cef785fd1 in / "},{"created":"2015-10-21T07:28:00Z","created_by":"/bin/sh -c #(nop) CMD [\"sh\"]","empty_layer":true},{"created":"2015-10-21T07:28:00Z","created_by":"mkdir /proc, mkdir /sys, mkdir /base, mkfile /base/base.txt","comment":"buildkit.exporter.image.v0"},{"created":"2015-10-21T07:28:00Z","created_by":"mkdir /inputs/git, mkfile /inputs/llb.txt, copy /artifact.txt /inputs/http.txt, copy /git.txt /inputs/git/git.txt, copy /sub/nested.txt /inputs/git/nested.txt","comment":"buildkit.exporter.image.v0"},{"created":"2015-10-21T07:28:00Z","created_by":"mount / from exec sh -eux -c \nmkdir -p /generated/deeper\necho exec-fixture \u003e /generated/exec.txt\necho nested-exec \u003e /generated/deeper/nested.txt\n","comment":"buildkit.exporter.image.v0"}],"os":"linux","rootfs":{"type":"layers","diff_ids":["sha256:fe4922f0a3ca2aa707ca0f8cc53937e947fec1157a09302baf11904258d67d17","sha256:007165e99d6304af5653e8a8cc1c8886e5719cf31bf09cbd9f50fa09008ef654","sha256:9228085939d1444bd500ac8a4f8ee9d39fed1e5905da0968ffed61887ab41042","sha256:672c0da84adab23797eebbf41315e289f03b02e266bdd6f6e88a7736583a4466"]}}
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
"schemaVersion": 2,
|
||||
"mediaType": "application/vnd.oci.image.manifest.v1+json",
|
||||
"config": {
|
||||
"mediaType": "application/vnd.oci.image.config.v1+json",
|
||||
"digest": "sha256:1772fd0a3b45a62fc5e23737bf8aa63ea2cb178a02e57cec4d14ef9e6fcc4c95",
|
||||
"size": 2295
|
||||
},
|
||||
"layers": [
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:430ee4fa77d640d42de0c6357e4cff7249712a28284310bda8293050c6cbc5d8",
|
||||
"size": 2219886,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:48cef04b9e3890175d531912bd6307b344eb1d16caba14f32989e8034466dde4",
|
||||
"size": 175,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:3096f0079befb9bacfab7003f9de4604477e81ef1cd0d4bb9f967db5aba7bebc",
|
||||
"size": 242,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:163f5dbfba981d0b1e6e9c5a1ba003efa40e7e7d38e8471653e1f1b2abd370d9",
|
||||
"size": 201,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
}
|
||||
],
|
||||
"annotations": {
|
||||
"org.opencontainers.image.title": "compatibility-test"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"architecture":"amd64","config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["sh"],"Image":"sha256:919de79e94ce464098cec8a4796f27aa2d0c93985e27f6a157c8bbb557568013","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"container":"adfa050237a5fcf9f1e5ad6351b3665e4b99e0c12f33bdd3535b8fb001f9dd2e","container_config":{"Hostname":"adfa050237a5","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["/bin/sh","-c","#(nop) ","CMD [\"sh\"]"],"Image":"sha256:919de79e94ce464098cec8a4796f27aa2d0c93985e27f6a157c8bbb557568013","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":{}},"created":"2015-10-21T07:28:00Z","docker_version":"20.10.23","history":[{"created":"2015-10-21T07:28:00Z","created_by":"/bin/sh -c #(nop) ADD file:7e9002edaafd4e4579b65c8f0aaabde1aeb7fd3f8d95579f7fd3443cef785fd1 in / "},{"created":"2015-10-21T07:28:00Z","created_by":"/bin/sh -c #(nop) CMD [\"sh\"]","empty_layer":true},{"created":"2015-10-21T07:28:00Z","created_by":"mkdir /proc, mkdir /sys, mkdir /base, mkfile /base/base.txt","comment":"buildkit.exporter.image.v0"},{"created":"2015-10-21T07:28:00Z","created_by":"mkdir /inputs/git, mkfile /inputs/llb.txt, copy /artifact.txt /inputs/http.txt, copy /git.txt /inputs/git/git.txt, copy /sub/nested.txt /inputs/git/nested.txt","comment":"buildkit.exporter.image.v0"},{"created":"2015-10-21T07:28:00Z","created_by":"mount / from exec sh -eux -c \nmkdir -p /generated/deeper\necho exec-fixture \u003e /generated/exec.txt\necho nested-exec \u003e /generated/deeper/nested.txt\n","comment":"buildkit.exporter.image.v0"}],"os":"linux","rootfs":{"type":"layers","diff_ids":["sha256:fe4922f0a3ca2aa707ca0f8cc53937e947fec1157a09302baf11904258d67d17","sha256:007165e99d6304af5653e8a8cc1c8886e5719cf31bf09cbd9f50fa09008ef654","sha256:9228085939d1444bd500ac8a4f8ee9d39fed1e5905da0968ffed61887ab41042","sha256:672c0da84adab23797eebbf41315e289f03b02e266bdd6f6e88a7736583a4466"]}}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"schemaVersion": 2,
|
||||
"mediaType": "application/vnd.oci.image.manifest.v1+json",
|
||||
"config": {
|
||||
"mediaType": "application/vnd.oci.image.config.v1+json",
|
||||
"digest": "sha256:1772fd0a3b45a62fc5e23737bf8aa63ea2cb178a02e57cec4d14ef9e6fcc4c95",
|
||||
"size": 2295
|
||||
},
|
||||
"layers": [
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:430ee4fa77d640d42de0c6357e4cff7249712a28284310bda8293050c6cbc5d8",
|
||||
"size": 2219886,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:48cef04b9e3890175d531912bd6307b344eb1d16caba14f32989e8034466dde4",
|
||||
"size": 175,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:3096f0079befb9bacfab7003f9de4604477e81ef1cd0d4bb9f967db5aba7bebc",
|
||||
"size": 242,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:163f5dbfba981d0b1e6e9c5a1ba003efa40e7e7d38e8471653e1f1b2abd370d9",
|
||||
"size": 201,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"architecture":"amd64","config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["sh"],"Image":"sha256:919de79e94ce464098cec8a4796f27aa2d0c93985e27f6a157c8bbb557568013","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"container":"adfa050237a5fcf9f1e5ad6351b3665e4b99e0c12f33bdd3535b8fb001f9dd2e","container_config":{"Hostname":"adfa050237a5","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["/bin/sh","-c","#(nop) ","CMD [\"sh\"]"],"Image":"sha256:919de79e94ce464098cec8a4796f27aa2d0c93985e27f6a157c8bbb557568013","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":{}},"created":"2015-10-21T07:28:00Z","docker_version":"20.10.23","history":[{"created":"2015-10-21T07:28:00Z","created_by":"/bin/sh -c #(nop) ADD file:7e9002edaafd4e4579b65c8f0aaabde1aeb7fd3f8d95579f7fd3443cef785fd1 in / "},{"created":"2015-10-21T07:28:00Z","created_by":"/bin/sh -c #(nop) CMD [\"sh\"]","empty_layer":true},{"created":"2015-10-21T07:28:00Z","created_by":"mkdir /proc, mkdir /sys, mkdir /base, mkfile /base/base.txt","comment":"buildkit.exporter.image.v0"},{"created":"2015-10-21T07:28:00Z","created_by":"mkdir /inputs/git, mkfile /inputs/llb.txt, copy /artifact.txt /inputs/http.txt, copy /git.txt /inputs/git/git.txt, copy /sub/nested.txt /inputs/git/nested.txt","comment":"buildkit.exporter.image.v0"},{"created":"2015-10-21T07:28:00Z","created_by":"mount / from exec sh -eux -c \nmkdir -p /generated/deeper\necho exec-fixture \u003e /generated/exec.txt\necho nested-exec \u003e /generated/deeper/nested.txt\n","comment":"buildkit.exporter.image.v0"}],"os":"linux","rootfs":{"type":"layers","diff_ids":["sha256:fe4922f0a3ca2aa707ca0f8cc53937e947fec1157a09302baf11904258d67d17","sha256:007165e99d6304af5653e8a8cc1c8886e5719cf31bf09cbd9f50fa09008ef654","sha256:9228085939d1444bd500ac8a4f8ee9d39fed1e5905da0968ffed61887ab41042","sha256:672c0da84adab23797eebbf41315e289f03b02e266bdd6f6e88a7736583a4466"]}}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"schemaVersion": 2,
|
||||
"mediaType": "application/vnd.oci.image.manifest.v1+json",
|
||||
"config": {
|
||||
"mediaType": "application/vnd.oci.image.config.v1+json",
|
||||
"digest": "sha256:1772fd0a3b45a62fc5e23737bf8aa63ea2cb178a02e57cec4d14ef9e6fcc4c95",
|
||||
"size": 2295
|
||||
},
|
||||
"layers": [
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:430ee4fa77d640d42de0c6357e4cff7249712a28284310bda8293050c6cbc5d8",
|
||||
"size": 2219886,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:48cef04b9e3890175d531912bd6307b344eb1d16caba14f32989e8034466dde4",
|
||||
"size": 175,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:3096f0079befb9bacfab7003f9de4604477e81ef1cd0d4bb9f967db5aba7bebc",
|
||||
"size": 242,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
|
||||
"digest": "sha256:163f5dbfba981d0b1e6e9c5a1ba003efa40e7e7d38e8471653e1f1b2abd370d9",
|
||||
"size": 201,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"architecture":"amd64","config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["sh"],"Image":"sha256:919de79e94ce464098cec8a4796f27aa2d0c93985e27f6a157c8bbb557568013","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"container":"adfa050237a5fcf9f1e5ad6351b3665e4b99e0c12f33bdd3535b8fb001f9dd2e","container_config":{"Hostname":"adfa050237a5","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["/bin/sh","-c","#(nop) ","CMD [\"sh\"]"],"Image":"sha256:919de79e94ce464098cec8a4796f27aa2d0c93985e27f6a157c8bbb557568013","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":{}},"created":"2015-10-21T07:28:00Z","docker_version":"20.10.23","history":[{"created":"2015-10-21T07:28:00Z","created_by":"/bin/sh -c #(nop) ADD file:7e9002edaafd4e4579b65c8f0aaabde1aeb7fd3f8d95579f7fd3443cef785fd1 in / "},{"created":"2015-10-21T07:28:00Z","created_by":"/bin/sh -c #(nop) CMD [\"sh\"]","empty_layer":true},{"created":"2015-10-21T07:28:00Z","created_by":"mkdir /proc, mkdir /sys, mkdir /base, mkfile /base/base.txt","comment":"buildkit.exporter.image.v0"},{"created":"2015-10-21T07:28:00Z","created_by":"mkdir /inputs/git, mkfile /inputs/llb.txt, copy /artifact.txt /inputs/http.txt, copy /git.txt /inputs/git/git.txt, copy /sub/nested.txt /inputs/git/nested.txt","comment":"buildkit.exporter.image.v0"},{"created":"2015-10-21T07:28:00Z","created_by":"mount / from exec sh -eux -c \nmkdir -p /generated/deeper\necho exec-fixture \u003e /generated/exec.txt\necho nested-exec \u003e /generated/deeper/nested.txt\n","comment":"buildkit.exporter.image.v0"}],"os":"linux","rootfs":{"type":"layers","diff_ids":["sha256:fe4922f0a3ca2aa707ca0f8cc53937e947fec1157a09302baf11904258d67d17","sha256:007165e99d6304af5653e8a8cc1c8886e5719cf31bf09cbd9f50fa09008ef654","sha256:9228085939d1444bd500ac8a4f8ee9d39fed1e5905da0968ffed61887ab41042","sha256:672c0da84adab23797eebbf41315e289f03b02e266bdd6f6e88a7736583a4466"]}}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"schemaVersion": 2,
|
||||
"mediaType": "application/vnd.oci.image.manifest.v1+json",
|
||||
"config": {
|
||||
"mediaType": "application/vnd.oci.image.config.v1+json",
|
||||
"digest": "sha256:1772fd0a3b45a62fc5e23737bf8aa63ea2cb178a02e57cec4d14ef9e6fcc4c95",
|
||||
"size": 2295
|
||||
},
|
||||
"layers": [
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar",
|
||||
"digest": "sha256:fe4922f0a3ca2aa707ca0f8cc53937e947fec1157a09302baf11904258d67d17",
|
||||
"size": 4492288,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar",
|
||||
"digest": "sha256:007165e99d6304af5653e8a8cc1c8886e5719cf31bf09cbd9f50fa09008ef654",
|
||||
"size": 3584,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar",
|
||||
"digest": "sha256:9228085939d1444bd500ac8a4f8ee9d39fed1e5905da0968ffed61887ab41042",
|
||||
"size": 6144,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar",
|
||||
"digest": "sha256:672c0da84adab23797eebbf41315e289f03b02e266bdd6f6e88a7736583a4466",
|
||||
"size": 4096,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{"architecture":"amd64","config":{"Hostname":"","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["sh"],"Image":"sha256:919de79e94ce464098cec8a4796f27aa2d0c93985e27f6a157c8bbb557568013","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":null},"container":"adfa050237a5fcf9f1e5ad6351b3665e4b99e0c12f33bdd3535b8fb001f9dd2e","container_config":{"Hostname":"adfa050237a5","Domainname":"","User":"","AttachStdin":false,"AttachStdout":false,"AttachStderr":false,"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd":["/bin/sh","-c","#(nop) ","CMD [\"sh\"]"],"Image":"sha256:919de79e94ce464098cec8a4796f27aa2d0c93985e27f6a157c8bbb557568013","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":{}},"created":"2015-10-21T07:28:00Z","docker_version":"20.10.23","history":[{"created":"2015-10-21T07:28:00Z","created_by":"/bin/sh -c #(nop) ADD file:7e9002edaafd4e4579b65c8f0aaabde1aeb7fd3f8d95579f7fd3443cef785fd1 in / "},{"created":"2015-10-21T07:28:00Z","created_by":"/bin/sh -c #(nop) CMD [\"sh\"]","empty_layer":true},{"created":"2015-10-21T07:28:00Z","created_by":"mkdir /proc, mkdir /sys, mkdir /base, mkfile /base/base.txt","comment":"buildkit.exporter.image.v0"},{"created":"2015-10-21T07:28:00Z","created_by":"mkdir /inputs/git, mkfile /inputs/llb.txt, copy /artifact.txt /inputs/http.txt, copy /git.txt /inputs/git/git.txt, copy /sub/nested.txt /inputs/git/nested.txt","comment":"buildkit.exporter.image.v0"},{"created":"2015-10-21T07:28:00Z","created_by":"mount / from exec sh -eux -c \nmkdir -p /generated/deeper\necho exec-fixture \u003e /generated/exec.txt\necho nested-exec \u003e /generated/deeper/nested.txt\n","comment":"buildkit.exporter.image.v0"}],"os":"linux","rootfs":{"type":"layers","diff_ids":["sha256:fe4922f0a3ca2aa707ca0f8cc53937e947fec1157a09302baf11904258d67d17","sha256:007165e99d6304af5653e8a8cc1c8886e5719cf31bf09cbd9f50fa09008ef654","sha256:9228085939d1444bd500ac8a4f8ee9d39fed1e5905da0968ffed61887ab41042","sha256:672c0da84adab23797eebbf41315e289f03b02e266bdd6f6e88a7736583a4466"]}}
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"schemaVersion": 2,
|
||||
"mediaType": "application/vnd.oci.image.manifest.v1+json",
|
||||
"config": {
|
||||
"mediaType": "application/vnd.oci.image.config.v1+json",
|
||||
"digest": "sha256:1772fd0a3b45a62fc5e23737bf8aa63ea2cb178a02e57cec4d14ef9e6fcc4c95",
|
||||
"size": 2295
|
||||
},
|
||||
"layers": [
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+zstd",
|
||||
"digest": "sha256:732ad1c88bfbc8aa6f9d98b0aa872a79298affbec456265500477eaf7b3acad4",
|
||||
"size": 1997110,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+zstd",
|
||||
"digest": "sha256:72a37ade5c8308d1328a61790c83d4f6cc2e6a18cdbf96f17058766d61758100",
|
||||
"size": 170,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+zstd",
|
||||
"digest": "sha256:cdd742478917b2382493c0c3ccf484ffa94833015e81b7b084c608bb8405affa",
|
||||
"size": 232,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
},
|
||||
{
|
||||
"mediaType": "application/vnd.oci.image.layer.v1.tar+zstd",
|
||||
"digest": "sha256:ef0abf1996faa0809cea6e2f7f971089f5990894c5b267927f9776e073a75325",
|
||||
"size": 186,
|
||||
"annotations": {
|
||||
"buildkit/rewritten-timestamp": "1445412480"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+14
-3
@@ -88,13 +88,24 @@ See also the [documentation](/frontend/dockerfile/docs/reference.md#buildkit-bui
|
||||
BuildKit currently supports these values:
|
||||
|
||||
- `10` for the `v0.13.0` and `v0.14.0` historical path
|
||||
- `20` for the `v0.15.0+` path and current behavior
|
||||
- `20` for the `v0.15.0` through `v0.31.x` path
|
||||
- `30` for the current path
|
||||
|
||||
### `30`
|
||||
|
||||
`30` is the current compatibility version.
|
||||
|
||||
Compared to `20`, `30` changes the default image exporter media type behavior:
|
||||
|
||||
- when `oci-mediatypes` is not set, image exports default to OCI media types
|
||||
|
||||
### `20`
|
||||
|
||||
`20` is the current compatibility version.
|
||||
`20` represents the historical `v0.15.0` through `v0.31.x` path.
|
||||
|
||||
It matches released BuildKit output from `v0.15.0` and newer for the compatibility test matrix in `client/compatibility_test.go`.
|
||||
It matches the `v0.15.0` through `v0.31.x` output covered by the compatibility test matrix in `client/compatibility_test.go`.
|
||||
|
||||
Compared to `30`, image exports that do not set `oci-mediatypes` keep the historical `20` media type behavior. Image exports without attestations default to Docker media types. Image exports with attestations use OCI media types because attestations require them.
|
||||
|
||||
### `10`
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ import (
|
||||
"github.com/moby/buildkit/exporter/containerimage/exptypes"
|
||||
"github.com/moby/buildkit/session"
|
||||
"github.com/moby/buildkit/snapshot"
|
||||
"github.com/moby/buildkit/solver/llbsolver/compat"
|
||||
"github.com/moby/buildkit/util/compression"
|
||||
"github.com/moby/buildkit/util/contentutil"
|
||||
"github.com/moby/buildkit/util/errutil"
|
||||
@@ -77,7 +78,6 @@ func (e *imageExporter) Resolve(ctx context.Context, id int, opt map[string]stri
|
||||
RefCfg: cacheconfig.RefConfig{
|
||||
Compression: compression.New(compression.Default),
|
||||
},
|
||||
OCITypes: true,
|
||||
ForceInlineAttestations: true,
|
||||
},
|
||||
store: true,
|
||||
@@ -233,6 +233,7 @@ func (e *imageExporterInstance) Export(ctx context.Context, src *exporter.Source
|
||||
return nil, nil, nil, err
|
||||
}
|
||||
opts.Annotations = opts.Annotations.Merge(as)
|
||||
opts.SetOCITypesDefault(defaultImageOCITypes(buildInfo.CompatibilityVersion, src))
|
||||
|
||||
ctx, done, err := leaseutil.WithLease(ctx, e.opt.LeaseManager, leaseutil.MakeTemporary)
|
||||
if err != nil {
|
||||
@@ -578,6 +579,13 @@ func addAnnotations(m map[digest.Digest]map[string]string, desc ocispecs.Descrip
|
||||
maps.Copy(a, desc.Annotations)
|
||||
}
|
||||
|
||||
func defaultImageOCITypes(compatibilityVersion int, src *exporter.Source) bool {
|
||||
if compatibilityVersion >= compat.CompatibilityVersion031 {
|
||||
return true
|
||||
}
|
||||
return len(src.Attestations) > 0
|
||||
}
|
||||
|
||||
func NewDescriptorReference(desc ocispecs.Descriptor, release func(context.Context) error) exporter.DescriptorReference {
|
||||
return &descriptorReference{
|
||||
desc: desc,
|
||||
|
||||
@@ -14,7 +14,7 @@ import (
|
||||
type ImageCommitOpts struct {
|
||||
ImageName string
|
||||
RefCfg cacheconfig.RefConfig
|
||||
OCITypes bool
|
||||
OCITypes *bool
|
||||
OCIArtifact bool
|
||||
Annotations AnnotationsGroup
|
||||
Epoch *epoch.Epoch
|
||||
@@ -47,7 +47,9 @@ func (c *ImageCommitOpts) Load(ctx context.Context, opt map[string]string) (map[
|
||||
case exptypes.OptKeyName:
|
||||
c.ImageName = v
|
||||
case exptypes.OptKeyOCITypes:
|
||||
err = parseBool(&c.OCITypes, k, v)
|
||||
var b bool
|
||||
err = parseBool(&b, k, v)
|
||||
c.OCITypes = &b
|
||||
case exptypes.OptKeyOCIArtifact:
|
||||
err = parseBool(&c.OCIArtifact, k, v)
|
||||
case exptypes.OptKeyForceInlineAttestations:
|
||||
@@ -65,11 +67,8 @@ func (c *ImageCommitOpts) Load(ctx context.Context, opt map[string]string) (map[
|
||||
}
|
||||
}
|
||||
|
||||
if c.RefCfg.Compression.Type.OnlySupportOCITypes() && !c.OCITypes {
|
||||
return nil, errors.Errorf("exporter option \"compression=%s\" conflicts with \"oci-mediatypes=false\"", c.RefCfg.Compression.Type)
|
||||
}
|
||||
if c.OCIArtifact && !c.OCITypes {
|
||||
return nil, errors.New("exporter option \"oci-artifact=true\" conflicts with \"oci-mediatypes=false\"")
|
||||
if err := c.Validate(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
c.Annotations = c.Annotations.Merge(as)
|
||||
@@ -77,6 +76,29 @@ func (c *ImageCommitOpts) Load(ctx context.Context, opt map[string]string) (map[
|
||||
return rest, nil
|
||||
}
|
||||
|
||||
func (c *ImageCommitOpts) Validate() error {
|
||||
if c.OCITypes == nil {
|
||||
return nil
|
||||
}
|
||||
if c.RefCfg.Compression.Type.OnlySupportOCITypes() && !c.OCITypesEnabled() {
|
||||
return errors.Errorf("exporter option \"compression=%s\" conflicts with \"oci-mediatypes=false\"", c.RefCfg.Compression.Type)
|
||||
}
|
||||
if c.OCIArtifact && !c.OCITypesEnabled() {
|
||||
return errors.New("exporter option \"oci-artifact=true\" conflicts with \"oci-mediatypes=false\"")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *ImageCommitOpts) SetOCITypesDefault(v bool) {
|
||||
if c.OCITypes == nil {
|
||||
c.OCITypes = &v
|
||||
}
|
||||
}
|
||||
|
||||
func (c *ImageCommitOpts) OCITypesEnabled() bool {
|
||||
return c.OCITypes != nil && *c.OCITypes
|
||||
}
|
||||
|
||||
func parseBool(dest *bool, key string, value string) error {
|
||||
b, err := strconv.ParseBool(value)
|
||||
if err != nil {
|
||||
|
||||
@@ -12,6 +12,6 @@ import (
|
||||
)
|
||||
|
||||
func patchImageLayers(ctx context.Context, remote *solver.Remote, history []ocispecs.History, ref cache.ImmutableRef, opts *ImageCommitOpts, _ session.Group) (*solver.Remote, []ocispecs.History, error) {
|
||||
remote, history = normalizeLayersAndHistory(ctx, remote, history, ref, opts.OCITypes)
|
||||
remote, history = normalizeLayersAndHistory(ctx, remote, history, ref, opts.OCITypesEnabled())
|
||||
return remote, history, nil
|
||||
}
|
||||
@@ -19,7 +19,7 @@ import (
|
||||
// metadata of filesystem view for the entire image.
|
||||
func patchImageLayers(ctx context.Context, remote *solver.Remote, history []ocispecs.History, ref cache.ImmutableRef, opts *ImageCommitOpts, sg session.Group) (*solver.Remote, []ocispecs.History, error) {
|
||||
if opts.RefCfg.Compression.Type != compression.Nydus {
|
||||
remote, history = normalizeLayersAndHistory(ctx, remote, history, ref, opts.OCITypes)
|
||||
remote, history = normalizeLayersAndHistory(ctx, remote, history, ref, opts.OCITypesEnabled())
|
||||
return remote, history, nil
|
||||
}
|
||||
|
||||
@@ -29,6 +29,6 @@ func patchImageLayers(ctx context.Context, remote *solver.Remote, history []ocis
|
||||
}
|
||||
remote.Descriptors = append(remote.Descriptors, *desc)
|
||||
|
||||
remote, history = normalizeLayersAndHistory(ctx, remote, history, ref, opts.OCITypes)
|
||||
remote, history = normalizeLayersAndHistory(ctx, remote, history, ref, opts.OCITypesEnabled())
|
||||
return remote, history, nil
|
||||
}
|
||||
@@ -69,6 +69,9 @@ func (ic *ImageWriter) Commit(ctx context.Context, inp *exporter.Source, session
|
||||
if _, ok := inp.Metadata[exptypes.ExporterPlatformsKey]; len(inp.Refs) > 0 && !ok {
|
||||
return nil, errors.Errorf("unable to export multiple refs, missing platforms mapping")
|
||||
}
|
||||
if err := opts.Validate(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if compatibilityVersion == compat.CompatibilityVersion013 && opts.RefCfg.Compression.Type == compression.Zstd {
|
||||
feature := fmt.Sprintf("%s exporter compression=%s", exporterType, opts.RefCfg.Compression.Type.String())
|
||||
return nil, solvererrdefs.NewUnsupportedCompatibilityFeatureError(compatibilityVersion, feature)
|
||||
@@ -113,7 +116,7 @@ func (ic *ImageWriter) Commit(ctx context.Context, inp *exporter.Source, session
|
||||
return nil, errors.Errorf("invalid annotation: no platform %s found in source", pk)
|
||||
}
|
||||
}
|
||||
if !opts.OCITypes && len(a.Index)+len(a.IndexDescriptor)+len(a.ManifestDescriptor) > 0 {
|
||||
if !opts.OCITypesEnabled() && len(a.Index)+len(a.IndexDescriptor)+len(a.ManifestDescriptor) > 0 {
|
||||
return nil, errors.New("cannot export annotations with \"oci-mediatypes=false\"")
|
||||
}
|
||||
}
|
||||
@@ -201,7 +204,7 @@ func (ic *ImageWriter) Commit(ctx context.Context, inp *exporter.Source, session
|
||||
return mfstDesc, nil
|
||||
}
|
||||
|
||||
if !opts.OCITypes && len(inp.Attestations) > 0 {
|
||||
if !opts.OCITypesEnabled() && len(inp.Attestations) > 0 {
|
||||
return nil, errors.New("cannot export attestations with \"oci-mediatypes=false\"")
|
||||
}
|
||||
|
||||
@@ -237,7 +240,7 @@ func (ic *ImageWriter) Commit(ctx context.Context, inp *exporter.Source, session
|
||||
},
|
||||
}
|
||||
|
||||
if !opts.OCITypes {
|
||||
if !opts.OCITypesEnabled() {
|
||||
idx.MediaType = images.MediaTypeDockerSchema2ManifestList
|
||||
}
|
||||
|
||||
@@ -514,7 +517,7 @@ func (ic *ImageWriter) commitDistributionManifest(ctx context.Context, opts *Ima
|
||||
)
|
||||
|
||||
// Use docker media types for older Docker versions and registries
|
||||
if !opts.OCITypes {
|
||||
if !opts.OCITypesEnabled() {
|
||||
manifestType = images.MediaTypeDockerSchema2Manifest
|
||||
configType = images.MediaTypeDockerSchema2Config
|
||||
}
|
||||
@@ -537,7 +540,7 @@ func (ic *ImageWriter) commitDistributionManifest(ctx context.Context, opts *Ima
|
||||
}
|
||||
|
||||
for i, desc := range remote.Descriptors {
|
||||
desc.Annotations = RemoveInternalLayerAnnotations(desc.Annotations, opts.OCITypes)
|
||||
desc.Annotations = RemoveInternalLayerAnnotations(desc.Annotations, opts.OCITypesEnabled())
|
||||
mfst.Layers = append(mfst.Layers, desc)
|
||||
labels[fmt.Sprintf("containerd.io/gc.ref.content.%d", i+1)] = desc.Digest.String()
|
||||
}
|
||||
@@ -584,7 +587,7 @@ func (ic *ImageWriter) commitAttestationsManifest(ctx context.Context, opts *Ima
|
||||
manifestType = ocispecs.MediaTypeImageManifest
|
||||
configType = ocispecs.MediaTypeImageConfig
|
||||
)
|
||||
if !opts.OCITypes {
|
||||
if !opts.OCITypesEnabled() {
|
||||
manifestType = images.MediaTypeDockerSchema2Manifest
|
||||
configType = images.MediaTypeDockerSchema2Config
|
||||
}
|
||||
@@ -650,7 +653,7 @@ func (ic *ImageWriter) commitAttestationsManifest(ctx context.Context, opts *Ima
|
||||
"containerd.io/gc.ref.content.0": configDesc.Digest.String(),
|
||||
}
|
||||
for i, desc := range layers {
|
||||
desc.Annotations = RemoveInternalLayerAnnotations(desc.Annotations, opts.OCITypes)
|
||||
desc.Annotations = RemoveInternalLayerAnnotations(desc.Annotations, opts.OCITypesEnabled())
|
||||
mfst.Layers = append(mfst.Layers, desc)
|
||||
labels[fmt.Sprintf("containerd.io/gc.ref.content.%d", i+1)] = desc.Digest.String()
|
||||
}
|
||||
|
||||
@@ -61,6 +61,7 @@ func New(opt Opt) (exporter.Exporter, error) {
|
||||
}
|
||||
|
||||
func (e *imageExporter) Resolve(ctx context.Context, id int, opt map[string]string) (exporter.ExporterInstance, error) {
|
||||
ociTypes := e.opt.Variant == VariantOCI
|
||||
i := &imageExporterInstance{
|
||||
imageExporter: e,
|
||||
id: id,
|
||||
@@ -70,7 +71,7 @@ func (e *imageExporter) Resolve(ctx context.Context, id int, opt map[string]stri
|
||||
RefCfg: cacheconfig.RefConfig{
|
||||
Compression: compression.New(compression.Default),
|
||||
},
|
||||
OCITypes: e.opt.Variant == VariantOCI,
|
||||
OCITypes: &ociTypes,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,8 @@ import (
|
||||
const (
|
||||
CompatibilityVersion013 = 10
|
||||
CompatibilityVersion015 = 20
|
||||
CompatibilityVersionCurrent = CompatibilityVersion015
|
||||
CompatibilityVersion031 = 30
|
||||
CompatibilityVersionCurrent = CompatibilityVersion031
|
||||
)
|
||||
|
||||
// JobValueKey is the key used to store the compatibility version on a solver
|
||||
@@ -19,6 +20,7 @@ const JobValueKey = "llb.compatibilityversion"
|
||||
var supportedCompatibilityVersions = []int{
|
||||
CompatibilityVersion013,
|
||||
CompatibilityVersion015,
|
||||
CompatibilityVersion031,
|
||||
}
|
||||
|
||||
func SupportedCompatibilityVersions() []int {
|
||||
|
||||
@@ -7,13 +7,13 @@ import (
|
||||
)
|
||||
|
||||
func TestSupportedCompatibilityVersions(t *testing.T) {
|
||||
require.Equal(t, []int{10, 20}, SupportedCompatibilityVersions())
|
||||
require.Equal(t, 20, CompatibilityVersionCurrent)
|
||||
require.Equal(t, []int{10, 20, 30}, SupportedCompatibilityVersions())
|
||||
require.Equal(t, 30, CompatibilityVersionCurrent)
|
||||
}
|
||||
|
||||
func TestValidateCompatibilityVersion(t *testing.T) {
|
||||
require.NoError(t, ValidateCompatibilityVersion(CompatibilityVersion013))
|
||||
require.NoError(t, ValidateCompatibilityVersion(CompatibilityVersionCurrent))
|
||||
require.ErrorContains(t, ValidateCompatibilityVersion(11), "unsupported compatibility-version 11")
|
||||
require.ErrorContains(t, ValidateCompatibilityVersion(30), "upgrade buildkit")
|
||||
require.ErrorContains(t, ValidateCompatibilityVersion(40), "upgrade buildkit")
|
||||
}
|
||||
Reference in new issue
Block a user