MCPcopy Index your code
hub / github.com/coder/coder / Builder

Struct Builder

coderd/wsbuilder/wsbuilder.go:52–97  ·  view source on GitHub ↗

Builder encapsulates the business logic of inserting a new workspace build into the database. Builder follows the so-called "Builder" pattern where options that customize the kind of build you get return a new instance of the Builder with the option applied. Example: b = wsbuilder.New(workspace,

Source from the content-addressed store, hash-verified

50// b = wsbuilder.New(workspace, transition).VersionID(vID).Initiator(me)
51// build, job, err := b.Build(...)
52type Builder struct {
53 // settings that control the kind of build you get
54 workspace database.Workspace
55 trans database.WorkspaceTransition
56 version versionTarget
57 state stateTarget
58 logLevel string
59 deploymentValues *codersdk.DeploymentValues
60 experiments codersdk.Experiments
61 usageChecker UsageChecker
62
63 richParameterValues []codersdk.WorkspaceBuildParameter
64 initiator uuid.UUID
65 reason database.BuildReason
66 templateVersionPresetID uuid.UUID
67
68 // used during build, makes function arguments less verbose
69 ctx context.Context
70 store database.Store
71 fileCache *files.CacheCloser
72
73 // cache of objects, so we only fetch once
74 template *database.Template
75 templateVersion *database.TemplateVersion
76 templateVersionJob *database.ProvisionerJob
77 terraformValues *database.TemplateVersionTerraformValue
78 templateVersionParameters *[]previewtypes.Parameter
79 templateVersionVariables *[]database.TemplateVersionVariable
80 templateVersionWorkspaceTags *[]database.TemplateVersionWorkspaceTag
81 lastBuild *database.WorkspaceBuild
82 lastBuildErr *error
83 lastBuildParameters *[]database.WorkspaceBuildParameter
84 lastBuildJob *database.ProvisionerJob
85 parameterNames *[]string
86 parameterValues *[]string
87 templateVersionPresetParameterValues *[]database.TemplateVersionPresetParameter
88 parameterRender dynamicparameters.Renderer
89 workspaceTags *map[string]string
90 task *database.Task
91 hasTask *bool // A workspace without a task will have a nil `task` and false `hasTask`.
92
93 prebuiltWorkspaceBuildStage sdkproto.PrebuiltWorkspaceBuildStage
94 verifyNoLegacyParametersOnce bool
95
96 buildMetrics *Metrics
97}
98
99type UsageChecker interface {
100 CheckBuildUsage(ctx context.Context, store database.Store, templateVersion *database.TemplateVersion, task *database.Task, transition database.WorkspaceTransition) (UsageCheckResponse, error)

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected