mirror of
https://github.com/coder/coder.git
synced 2025-07-15 22:20:27 +00:00
Add provision job metadata to identify prebuilds
Signed-off-by: Danny Kopping <danny@coder.com>
This commit is contained in:
@ -323,7 +323,8 @@ func (c Controller) provision(ctx context.Context, db database.Store, prebuildID
|
||||
Reason(database.BuildReasonInitiator).
|
||||
Initiator(PrebuildOwnerUUID).
|
||||
ActiveVersion().
|
||||
VersionID(template.ActiveVersionID)
|
||||
VersionID(template.ActiveVersionID).
|
||||
MarkPrebuild()
|
||||
// RichParameterValues(req.RichParameterValues) // TODO: fetch preset's params
|
||||
|
||||
_, provisionerJob, _, err := builder.Build(
|
||||
|
@ -621,6 +621,7 @@ func (s *server) acquireProtoJob(ctx context.Context, job database.ProvisionerJo
|
||||
WorkspaceOwnerSshPrivateKey: ownerSSHPrivateKey,
|
||||
WorkspaceBuildId: workspaceBuild.ID.String(),
|
||||
WorkspaceOwnerLoginType: string(owner.LoginType),
|
||||
IsPrebuild: input.IsPrebuild,
|
||||
},
|
||||
LogLevel: input.LogLevel,
|
||||
},
|
||||
@ -2345,6 +2346,7 @@ type TemplateVersionImportJob struct {
|
||||
type WorkspaceProvisionJob struct {
|
||||
WorkspaceBuildID uuid.UUID `json:"workspace_build_id"`
|
||||
DryRun bool `json:"dry_run"`
|
||||
IsPrebuild bool `json:"is_prebuild,omitempty"`
|
||||
LogLevel string `json:"log_level,omitempty"`
|
||||
}
|
||||
|
||||
|
@ -72,6 +72,7 @@ type Builder struct {
|
||||
lastBuildJob *database.ProvisionerJob
|
||||
parameterNames *[]string
|
||||
parameterValues *[]string
|
||||
prebuild bool
|
||||
|
||||
verifyNoLegacyParametersOnce bool
|
||||
}
|
||||
@ -168,6 +169,12 @@ func (b Builder) RichParameterValues(p []codersdk.WorkspaceBuildParameter) Build
|
||||
return b
|
||||
}
|
||||
|
||||
func (b Builder) MarkPrebuild() Builder {
|
||||
// nolint: revive
|
||||
b.prebuild = true
|
||||
return b
|
||||
}
|
||||
|
||||
// SetLastWorkspaceBuildInTx prepopulates the Builder's cache with the last workspace build. This allows us
|
||||
// to avoid a repeated database query when the Builder's caller also needs the workspace build, e.g. auto-start &
|
||||
// auto-stop.
|
||||
@ -295,6 +302,7 @@ func (b *Builder) buildTx(authFunc func(action policy.Action, object rbac.Object
|
||||
input, err := json.Marshal(provisionerdserver.WorkspaceProvisionJob{
|
||||
WorkspaceBuildID: workspaceBuildID,
|
||||
LogLevel: b.logLevel,
|
||||
IsPrebuild: b.prebuild,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, nil, nil, BuildError{
|
||||
|
@ -262,6 +262,9 @@ func provisionEnv(
|
||||
"CODER_WORKSPACE_TEMPLATE_VERSION="+metadata.GetTemplateVersion(),
|
||||
"CODER_WORKSPACE_BUILD_ID="+metadata.GetWorkspaceBuildId(),
|
||||
)
|
||||
if metadata.GetIsPrebuild() {
|
||||
env = append(env, "CODER_WORKSPACE_IS_PREBUILD=true")
|
||||
}
|
||||
for key, value := range provisionersdk.AgentScriptEnv() {
|
||||
env = append(env, key+"="+value)
|
||||
}
|
||||
@ -278,6 +281,7 @@ func provisionEnv(
|
||||
// The idea behind using TF_LOG=JSON instead of TF_LOG=debug is ensuring the proper log format.
|
||||
env = append(env, "TF_LOG=JSON")
|
||||
}
|
||||
|
||||
return env, nil
|
||||
}
|
||||
|
||||
|
@ -355,6 +355,7 @@ func (p *Server) acquireAndRunOne(client proto.DRPCProvisionerDaemonClient) {
|
||||
slog.F("workspace_build_id", build.WorkspaceBuildId),
|
||||
slog.F("workspace_id", build.Metadata.WorkspaceId),
|
||||
slog.F("workspace_name", build.WorkspaceName),
|
||||
slog.F("is_prebuild", build.Metadata.IsPrebuild),
|
||||
)
|
||||
|
||||
span.SetAttributes(
|
||||
@ -364,6 +365,7 @@ func (p *Server) acquireAndRunOne(client proto.DRPCProvisionerDaemonClient) {
|
||||
attribute.String("workspace_owner_id", build.Metadata.WorkspaceOwnerId),
|
||||
attribute.String("workspace_owner", build.Metadata.WorkspaceOwner),
|
||||
attribute.String("workspace_transition", build.Metadata.WorkspaceTransition.String()),
|
||||
attribute.Bool("is_prebuild", build.Metadata.IsPrebuild),
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -275,6 +275,7 @@ message Metadata {
|
||||
string workspace_owner_ssh_private_key = 16;
|
||||
string workspace_build_id = 17;
|
||||
string workspace_owner_login_type = 18;
|
||||
bool is_prebuild = 19;
|
||||
}
|
||||
|
||||
// Config represents execution configuration shared by all subsequent requests in the Session
|
||||
|
4
site/e2e/provisionerGenerated.ts
generated
4
site/e2e/provisionerGenerated.ts
generated
@ -289,6 +289,7 @@ export interface Metadata {
|
||||
workspaceOwnerSshPrivateKey: string;
|
||||
workspaceBuildId: string;
|
||||
workspaceOwnerLoginType: string;
|
||||
isPrebuild: boolean;
|
||||
}
|
||||
|
||||
/** Config represents execution configuration shared by all subsequent requests in the Session */
|
||||
@ -961,6 +962,9 @@ export const Metadata = {
|
||||
if (message.workspaceOwnerLoginType !== "") {
|
||||
writer.uint32(146).string(message.workspaceOwnerLoginType);
|
||||
}
|
||||
if (message.isPrebuild === true) {
|
||||
writer.uint32(152).bool(message.isPrebuild);
|
||||
}
|
||||
return writer;
|
||||
},
|
||||
};
|
||||
|
Reference in New Issue
Block a user