@@ -420,3 +420,32 @@ CMD ["echo", "nerdctl-build-notag-string"]
420
420
base .Cmd ("images" ).AssertOutContains ("<none>" )
421
421
base .Cmd ("image" , "prune" , "--force" , "--all" ).AssertOK ()
422
422
}
423
+
424
+ // TestBuildSourceDateEpoch tests that $SOURCE_DATE_EPOCH is propagated from the client env
425
+ // https://github.com/docker/buildx/pull/1482
426
+ func TestBuildSourceDateEpoch (t * testing.T ) {
427
+ testutil .RequiresBuild (t )
428
+ testutil .DockerIncompatible (t ) // Needs buildx v0.10 (https://github.com/docker/buildx/pull/1489)
429
+ base := testutil .NewBase (t )
430
+ imageName := testutil .Identifier (t )
431
+ defer base .Cmd ("rmi" , imageName ).AssertOK ()
432
+
433
+ dockerfile := fmt .Sprintf (`FROM %s
434
+ ARG SOURCE_DATE_EPOCH
435
+ RUN echo $SOURCE_DATE_EPOCH >/source-date-epoch
436
+ CMD ["cat", "/source-date-epoch"]
437
+ ` , testutil .CommonImage )
438
+
439
+ buildCtx , err := createBuildContext (dockerfile )
440
+ assert .NilError (t , err )
441
+ defer os .RemoveAll (buildCtx )
442
+
443
+ const sourceDateEpochEnvStr = "1111111111"
444
+ t .Setenv ("SOURCE_DATE_EPOCH" , sourceDateEpochEnvStr )
445
+ base .Cmd ("build" , "-t" , imageName , buildCtx ).AssertOK ()
446
+ base .Cmd ("run" , "--rm" , imageName ).AssertOutExactly (sourceDateEpochEnvStr + "\n " )
447
+
448
+ const sourceDateEpochArgStr = "2222222222"
449
+ base .Cmd ("build" , "-t" , imageName , "--build-arg" , "SOURCE_DATE_EPOCH=" + sourceDateEpochArgStr , buildCtx ).AssertOK ()
450
+ base .Cmd ("run" , "--rm" , imageName ).AssertOutExactly (sourceDateEpochArgStr + "\n " )
451
+ }
0 commit comments