1package moby_buildkit_v1_frontend //nolint:golint 2 3import "github.com/moby/buildkit/util/apicaps" 4 5var Caps apicaps.CapList 6 7// Every backwards or forwards non-compatible change needs to add a new capability row. 8// By default new capabilities should be experimental. After merge a capability is 9// considered immutable. After a capability is marked stable it should not be disabled. 10 11const ( 12 CapSolveBase apicaps.CapID = "solve.base" 13 CapSolveInlineReturn apicaps.CapID = "solve.inlinereturn" 14 CapResolveImage apicaps.CapID = "resolveimage" 15 CapResolveImageResolveMode apicaps.CapID = "resolveimage.resolvemode" 16 CapReadFile apicaps.CapID = "readfile" 17 CapReturnResult apicaps.CapID = "return" 18 CapReturnMap apicaps.CapID = "returnmap" 19 CapReadDir apicaps.CapID = "readdir" 20 CapStatFile apicaps.CapID = "statfile" 21 CapImportCaches apicaps.CapID = "importcaches" 22 23 // CapProtoRefArray is a capability to return arrays of refs instead of single 24 // refs. This capability is only for the wire format change and shouldn't be 25 // used in frontends for feature detection. 26 CapProtoRefArray apicaps.CapID = "proto.refarray" 27 28 // CapReferenceOutput is a capability to use a reference of a solved result as 29 // an llb.Output. 30 CapReferenceOutput apicaps.CapID = "reference.output" 31 32 // CapFrontendInputs is a capability to request frontend inputs from the 33 // LLBBridge GRPC server. 34 CapFrontendInputs apicaps.CapID = "frontend.inputs" 35 36 // CapGatewaySolveMetadata can be used to check if solve calls from gateway reliably return metadata 37 CapGatewaySolveMetadata apicaps.CapID = "gateway.solve.metadata" 38 39 // CapGatewayExec is the capability to create and interact with new 40 // containers directly through the gateway 41 CapGatewayExec apicaps.CapID = "gateway.exec" 42 43 // CapFrontendCaps can be used to check that frontends define support for certain capabilities 44 CapFrontendCaps apicaps.CapID = "frontend.caps" 45 46 // CapGatewayEvaluateSolve is a capability to immediately unlazy solve 47 // results. This is generally used by the client to return and handle solve 48 // errors. 49 CapGatewayEvaluateSolve apicaps.CapID = "gateway.solve.evaluate" 50) 51 52func init() { 53 54 Caps.Init(apicaps.Cap{ 55 ID: CapSolveBase, 56 Enabled: true, 57 Status: apicaps.CapStatusExperimental, 58 }) 59 60 Caps.Init(apicaps.Cap{ 61 ID: CapSolveInlineReturn, 62 Name: "inline return from solve", 63 Enabled: true, 64 Deprecated: true, 65 Status: apicaps.CapStatusExperimental, 66 }) 67 68 Caps.Init(apicaps.Cap{ 69 ID: CapResolveImage, 70 Name: "resolve remote image config", 71 Enabled: true, 72 Status: apicaps.CapStatusExperimental, 73 }) 74 75 Caps.Init(apicaps.Cap{ 76 ID: CapResolveImageResolveMode, 77 Name: "resolve remote image config with custom resolvemode", 78 Enabled: true, 79 Status: apicaps.CapStatusExperimental, 80 }) 81 82 Caps.Init(apicaps.Cap{ 83 ID: CapReadFile, 84 Name: "read static file", 85 Enabled: true, 86 Status: apicaps.CapStatusExperimental, 87 }) 88 89 Caps.Init(apicaps.Cap{ 90 ID: CapReturnResult, 91 Name: "return solve result", 92 Enabled: true, 93 Status: apicaps.CapStatusExperimental, 94 }) 95 96 Caps.Init(apicaps.Cap{ 97 ID: CapReturnMap, 98 Name: "return reference map", 99 Enabled: true, 100 Status: apicaps.CapStatusExperimental, 101 }) 102 103 Caps.Init(apicaps.Cap{ 104 ID: CapReadDir, 105 Name: "read static directory", 106 Enabled: true, 107 Status: apicaps.CapStatusExperimental, 108 }) 109 110 Caps.Init(apicaps.Cap{ 111 ID: CapStatFile, 112 Name: "stat a file", 113 Enabled: true, 114 Status: apicaps.CapStatusExperimental, 115 }) 116 117 Caps.Init(apicaps.Cap{ 118 ID: CapImportCaches, 119 Name: "import caches", 120 Enabled: true, 121 Status: apicaps.CapStatusExperimental, 122 }) 123 124 Caps.Init(apicaps.Cap{ 125 ID: CapProtoRefArray, 126 Name: "wire format ref arrays", 127 Enabled: true, 128 Status: apicaps.CapStatusExperimental, 129 }) 130 131 Caps.Init(apicaps.Cap{ 132 ID: CapReferenceOutput, 133 Name: "reference output", 134 Enabled: true, 135 Status: apicaps.CapStatusExperimental, 136 }) 137 138 Caps.Init(apicaps.Cap{ 139 ID: CapFrontendInputs, 140 Name: "frontend inputs", 141 Enabled: true, 142 Status: apicaps.CapStatusExperimental, 143 }) 144 145 Caps.Init(apicaps.Cap{ 146 ID: CapGatewaySolveMetadata, 147 Name: "gateway metadata", 148 Enabled: true, 149 Status: apicaps.CapStatusExperimental, 150 }) 151 152 Caps.Init(apicaps.Cap{ 153 ID: CapGatewayExec, 154 Name: "gateway exec", 155 Enabled: true, 156 Status: apicaps.CapStatusExperimental, 157 }) 158 159 Caps.Init(apicaps.Cap{ 160 ID: CapFrontendCaps, 161 Name: "frontend capabilities", 162 Enabled: true, 163 Status: apicaps.CapStatusExperimental, 164 }) 165 166 Caps.Init(apicaps.Cap{ 167 ID: CapGatewayEvaluateSolve, 168 Name: "gateway evaluate solve", 169 Enabled: true, 170 Status: apicaps.CapStatusExperimental, 171 }) 172} 173