diff --git a/cmd/build.go b/cmd/build.go index f0ea6f0..ab80a9d 100644 --- a/cmd/build.go +++ b/cmd/build.go @@ -62,6 +62,7 @@ func init() { // TODO: set the raw flag to true by default in future. flags.BoolVar(&buildConfig.Raw, "raw", false, "turning on this flag will build model artifact layers in raw format") flags.BoolVar(&buildConfig.Reasoning, "reasoning", false, "turning on this flag will mark this model as reasoning model in the config") + flags.BoolVar(&buildConfig.NoCreationTime, "no-creation-time", false, "turning on this flag will not set createdAt in the config, which will be helpful for repeated builds") if err := viper.BindPFlags(flags); err != nil { panic(fmt.Errorf("bind cache list flags to viper: %w", err)) diff --git a/pkg/backend/build.go b/pkg/backend/build.go index f4edc5c..e6f9b8e 100644 --- a/pkg/backend/build.go +++ b/pkg/backend/build.go @@ -113,6 +113,7 @@ func (b *backend) Build(ctx context.Context, modelfilePath, workDir, target stri SourceURL: sourceInfo.URL, SourceRevision: revision, Reasoning: cfg.Reasoning, + NoCreationTime: cfg.NoCreationTime, }, layers) if err != nil { return fmt.Errorf("failed to build model config: %w", err) diff --git a/pkg/backend/build/builder.go b/pkg/backend/build/builder.go index 25d2538..1786005 100644 --- a/pkg/backend/build/builder.go +++ b/pkg/backend/build/builder.go @@ -257,15 +257,18 @@ func BuildModelConfig(modelConfig *buildconfig.Model, layers []ocispec.Descripto } } - createdAt := time.Now() descriptor := modelspec.ModelDescriptor{ - CreatedAt: &createdAt, Family: modelConfig.Family, Name: modelConfig.Name, SourceURL: modelConfig.SourceURL, Revision: modelConfig.SourceRevision, } + if !modelConfig.NoCreationTime { + createdAt := time.Now() + descriptor.CreatedAt = &createdAt + } + diffIDs := make([]godigest.Digest, 0, len(layers)) for _, layer := range layers { diffIDs = append(diffIDs, layer.Digest) diff --git a/pkg/backend/build/config/model.go b/pkg/backend/build/config/model.go index b934bd8..335deb5 100644 --- a/pkg/backend/build/config/model.go +++ b/pkg/backend/build/config/model.go @@ -28,4 +28,5 @@ type Model struct { SourceURL string SourceRevision string Reasoning bool + NoCreationTime bool } diff --git a/pkg/config/build.go b/pkg/config/build.go index f4d963a..27dd23d 100644 --- a/pkg/config/build.go +++ b/pkg/config/build.go @@ -35,6 +35,7 @@ type Build struct { SourceRevision string Raw bool Reasoning bool + NoCreationTime bool } func NewBuild() *Build { @@ -50,6 +51,7 @@ func NewBuild() *Build { SourceRevision: "", Raw: false, Reasoning: false, + NoCreationTime: false, } }