@@ -240,6 +240,72 @@ COPY foo /foo
240240 require .Equal (t , md .BuildRef , rec .Ref )
241241 require .Equal (t , addr + "?ref=main" , rec .Name )
242242 })
243+
244+ t .Run ("bake git" , func (t * testing.T ) {
245+ bakefile := []byte (`
246+ target "default" {
247+ dockerfile-inline = <<EOT
248+ FROM scratch
249+ COPY foo /foo
250+ EOT
251+ }
252+ ` )
253+ dir := tmpdir (
254+ t ,
255+ fstest .CreateFile ("docker-bake.hcl" , bakefile , 0600 ),
256+ fstest .CreateFile ("foo" , []byte ("foo" ), 0600 ),
257+ )
258+ dirDest := t .TempDir ()
259+
260+ git , err := gitutil .New (gitutil .WithWorkingDir (dir ))
261+ require .NoError (t , err )
262+
263+ gittestutil .GitInit (git , t )
264+ gittestutil .GitAdd (git , t , "docker-bake.hcl" , "foo" )
265+ gittestutil .GitCommit (git , t , "initial commit" )
266+ addr := gittestutil .GitServeHTTP (git , t )
267+
268+ out , err := bakeCmd (sb , withDir (dir ),
269+ withArgs (addr , "--set" , "*.output=type=local,dest=" + dirDest , "--metadata-file" , filepath .Join (dir , "md.json" )),
270+ )
271+ require .NoError (t , err , out )
272+ require .FileExists (t , filepath .Join (dirDest , "foo" ))
273+
274+ dt , err := os .ReadFile (filepath .Join (dir , "md.json" ))
275+ require .NoError (t , err )
276+
277+ type mdT struct {
278+ Default struct {
279+ BuildRef string `json:"buildx.build.ref"`
280+ } `json:"default"`
281+ }
282+ var md mdT
283+ err = json .Unmarshal (dt , & md )
284+ require .NoError (t , err )
285+
286+ refParts := strings .Split (md .Default .BuildRef , "/" )
287+ require .Len (t , refParts , 3 )
288+
289+ cmd := buildxCmd (sb , withArgs ("history" , "ls" , "--filter=ref=" + refParts [2 ], "--format=json" ))
290+ bout , err := cmd .Output ()
291+ require .NoError (t , err , string (bout ))
292+
293+ type recT struct {
294+ Ref string `json:"ref"`
295+ Name string `json:"name"`
296+ Status string `json:"status"`
297+ CreatedAt * time.Time `json:"created_at"`
298+ CompletedAt * time.Time `json:"completed_at"`
299+ TotalSteps int32 `json:"total_steps"`
300+ CompletedSteps int32 `json:"completed_steps"`
301+ CachedSteps int32 `json:"cached_steps"`
302+ }
303+ var rec recT
304+ err = json .Unmarshal (bout , & rec )
305+ require .NoError (t , err )
306+ require .Equal (t , md .Default .BuildRef , rec .Ref )
307+ require .Equal (t , addr , rec .Name )
308+ })
243309}
244310
245311type buildRef struct {
0 commit comments