feat: allow specifying devcontainer on agent in terraform (#16997)

This change allows specifying devcontainers in terraform and plumbs it
through to the agent via agent manifest.

This will be used for autostarting devcontainers in a workspace.

Depends on coder/terraform-provider-coder#368
Updates #16423
This commit is contained in:
Mathias Fredriksson
2025-03-20 19:09:39 +02:00
committed by GitHub
parent 287e3198d8
commit 69ba27e347
49 changed files with 2615 additions and 1253 deletions
@@ -2096,6 +2096,30 @@ func InsertWorkspaceResource(ctx context.Context, db database.Store, jobID uuid.
return xerrors.Errorf("insert agent scripts: %w", err)
}
if devcontainers := prAgent.GetDevcontainers(); len(devcontainers) > 0 {
var (
devContainerIDs = make([]uuid.UUID, 0, len(devcontainers))
devContainerWorkspaceFolders = make([]string, 0, len(devcontainers))
devContainerConfigPaths = make([]string, 0, len(devcontainers))
)
for _, dc := range devcontainers {
devContainerIDs = append(devContainerIDs, uuid.New())
devContainerWorkspaceFolders = append(devContainerWorkspaceFolders, dc.WorkspaceFolder)
devContainerConfigPaths = append(devContainerConfigPaths, dc.ConfigPath)
}
_, err = db.InsertWorkspaceAgentDevcontainers(ctx, database.InsertWorkspaceAgentDevcontainersParams{
WorkspaceAgentID: agentID,
CreatedAt: dbtime.Now(),
ID: devContainerIDs,
WorkspaceFolder: devContainerWorkspaceFolders,
ConfigPath: devContainerConfigPaths,
})
if err != nil {
return xerrors.Errorf("insert agent devcontainer: %w", err)
}
}
for _, app := range prAgent.Apps {
// Similar logic is duplicated in terraform/resources.go.
slug := app.Slug