@@ -2039,6 +2039,31 @@ func InsertWorkspaceResource(ctx context.Context, db database.Store, jobID uuid.
2039
2039
}
2040
2040
}
2041
2041
2042
+ var (
2043
+ devcontainers = prAgent .GetDevcontainers ()
2044
+ devcontainerIDs = make ([]uuid.UUID , 0 , len (devcontainers ))
2045
+ devcontainerWorkspaceFolders = make ([]string , 0 , len (devcontainers ))
2046
+ devcontainerConfigPaths = make ([]string , 0 , len (devcontainers ))
2047
+ )
2048
+ if len (devcontainers ) > 0 {
2049
+ for _ , dc := range devcontainers {
2050
+ devcontainerIDs = append (devcontainerIDs , uuid .New ())
2051
+ devcontainerWorkspaceFolders = append (devcontainerWorkspaceFolders , dc .WorkspaceFolder )
2052
+ devcontainerConfigPaths = append (devcontainerConfigPaths , dc .ConfigPath )
2053
+ }
2054
+
2055
+ _ , err = db .InsertWorkspaceAgentDevcontainers (ctx , database.InsertWorkspaceAgentDevcontainersParams {
2056
+ WorkspaceAgentID : agentID ,
2057
+ CreatedAt : dbtime .Now (),
2058
+ ID : devcontainerIDs ,
2059
+ WorkspaceFolder : devcontainerWorkspaceFolders ,
2060
+ ConfigPath : devcontainerConfigPaths ,
2061
+ })
2062
+ if err != nil {
2063
+ return xerrors .Errorf ("insert agent devcontainer: %w" , err )
2064
+ }
2065
+ }
2066
+
2042
2067
logSourceIDs := make ([]uuid.UUID , 0 , len (prAgent .Scripts ))
2043
2068
logSourceDisplayNames := make ([]string , 0 , len (prAgent .Scripts ))
2044
2069
logSourceIcons := make ([]string , 0 , len (prAgent .Scripts ))
@@ -2066,6 +2091,22 @@ func InsertWorkspaceResource(ctx context.Context, db database.Store, jobID uuid.
2066
2091
scriptRunOnStart = append (scriptRunOnStart , script .RunOnStart )
2067
2092
scriptRunOnStop = append (scriptRunOnStop , script .RunOnStop )
2068
2093
}
2094
+ // Add a log source and script for each devcontainer so we can
2095
+ // track logs and timings for each.
2096
+ for _ , id := range devcontainerIDs {
2097
+ logSourceIDs = append (logSourceIDs , uuid .New ())
2098
+ logSourceDisplayNames = append (logSourceDisplayNames , "Dev Container" )
2099
+ logSourceIcons = append (logSourceIcons , "/emojis/1f4e6.png" ) // Emoji package. Or perhaps /icon/container.svg?
2100
+ scriptIDs = append (scriptIDs , id ) // Re-use the devcontainer ID as the script ID for identification.
2101
+ scriptDisplayName = append (scriptDisplayName , "Dev Container" ) // TODO(mafredri): Make it unique? Grab from id used in TF?
2102
+ scriptLogPaths = append (scriptLogPaths , "" )
2103
+ scriptSources = append (scriptSources , "" )
2104
+ scriptCron = append (scriptCron , "" )
2105
+ scriptTimeout = append (scriptTimeout , 0 )
2106
+ scriptStartBlocksLogin = append (scriptStartBlocksLogin , false )
2107
+ scriptRunOnStart = append (scriptRunOnStart , false )
2108
+ scriptRunOnStop = append (scriptRunOnStop , false )
2109
+ }
2069
2110
2070
2111
_ , err = db .InsertWorkspaceAgentLogSources (ctx , database.InsertWorkspaceAgentLogSourcesParams {
2071
2112
WorkspaceAgentID : agentID ,
@@ -2096,30 +2137,6 @@ func InsertWorkspaceResource(ctx context.Context, db database.Store, jobID uuid.
2096
2137
return xerrors .Errorf ("insert agent scripts: %w" , err )
2097
2138
}
2098
2139
2099
- if devcontainers := prAgent .GetDevcontainers (); len (devcontainers ) > 0 {
2100
- var (
2101
- devContainerIDs = make ([]uuid.UUID , 0 , len (devcontainers ))
2102
- devContainerWorkspaceFolders = make ([]string , 0 , len (devcontainers ))
2103
- devContainerConfigPaths = make ([]string , 0 , len (devcontainers ))
2104
- )
2105
- for _ , dc := range devcontainers {
2106
- devContainerIDs = append (devContainerIDs , uuid .New ())
2107
- devContainerWorkspaceFolders = append (devContainerWorkspaceFolders , dc .WorkspaceFolder )
2108
- devContainerConfigPaths = append (devContainerConfigPaths , dc .ConfigPath )
2109
- }
2110
-
2111
- _ , err = db .InsertWorkspaceAgentDevcontainers (ctx , database.InsertWorkspaceAgentDevcontainersParams {
2112
- WorkspaceAgentID : agentID ,
2113
- CreatedAt : dbtime .Now (),
2114
- ID : devContainerIDs ,
2115
- WorkspaceFolder : devContainerWorkspaceFolders ,
2116
- ConfigPath : devContainerConfigPaths ,
2117
- })
2118
- if err != nil {
2119
- return xerrors .Errorf ("insert agent devcontainer: %w" , err )
2120
- }
2121
- }
2122
-
2123
2140
for _ , app := range prAgent .Apps {
2124
2141
// Similar logic is duplicated in terraform/resources.go.
2125
2142
slug := app .Slug
0 commit comments