Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commita278ae5

Browse files
committed
Merge branch 'main' into resource_acl_list
2 parentsbd34d20 +20bcb04 commita278ae5

File tree

288 files changed

+8924
-4564
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

288 files changed

+8924
-4564
lines changed

‎.github/workflows/welcome.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ on:
55
jobs:
66
test:
77
runs-on:ubuntu-latest
8+
permissions:
9+
pull-requests:write
810
steps:
911
-uses:wow-actions/welcome@v1
1012
with:

‎Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ COPY --chown=coder:coder --chmod=700 empty-dir /home/coder
2525

2626
USER coder:coder
2727
ENV HOME=/home/coder
28+
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt
2829
WORKDIR /home/coder
2930

3031
ENTRYPOINT ["/opt/coder","server" ]

‎Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ gen/mark-fresh:
410410
# Runs migrations to output a dump of the database schema after migrations are
411411
# applied.
412412
coderd/database/dump.sql: coderd/database/gen/dump/main.go$(wildcard coderd/database/migrations/*.sql)
413-
go run coderd/database/gen/dump/main.go
413+
go run./coderd/database/gen/dump/main.go
414414

415415
# Generates Go code for querying the database.
416416
coderd/database/querier.go: coderd/database/sqlc.yaml coderd/database/dump.sql$(wildcard coderd/database/queries/*.sql) coderd/database/gen/enum/main.go

‎agent/agent.go

Lines changed: 60 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import (
3333

3434
"cdr.dev/slog"
3535
"github.com/coder/coder/agent/usershell"
36+
"github.com/coder/coder/codersdk"
3637
"github.com/coder/coder/pty"
3738
"github.com/coder/coder/tailnet"
3839
"github.com/coder/retry"
@@ -49,55 +50,41 @@ const (
4950
MagicSessionErrorCode=229
5051
)
5152

52-
var (
53-
// tailnetIP is a static IPv6 address with the Tailscale prefix that is used to route
54-
// connections from clients to this node. A dynamic address is not required because a Tailnet
55-
// client only dials a single agent at a time.
56-
tailnetIP=netip.MustParseAddr("fd7a:115c:a1e0:49d6:b259:b7ac:b1b2:48f4")
57-
tailnetSSHPort=1
58-
tailnetReconnectingPTYPort=2
59-
tailnetSpeedtestPort=3
60-
)
61-
6253
typeOptionsstruct {
63-
CoordinatorDialerCoordinatorDialer
64-
FetchMetadataFetchMetadata
65-
66-
StatsReporterStatsReporter
67-
ReconnectingPTYTimeout time.Duration
68-
EnvironmentVariablesmap[string]string
69-
Logger slog.Logger
70-
}
71-
72-
typeMetadatastruct {
73-
DERPMap*tailcfg.DERPMap`json:"derpmap"`
74-
EnvironmentVariablesmap[string]string`json:"environment_variables"`
75-
StartupScriptstring`json:"startup_script"`
76-
Directorystring`json:"directory"`
54+
CoordinatorDialerCoordinatorDialer
55+
FetchMetadataFetchMetadata
56+
StatsReporterStatsReporter
57+
WorkspaceAgentAppsWorkspaceAgentApps
58+
PostWorkspaceAgentAppHealthPostWorkspaceAgentAppHealth
59+
ReconnectingPTYTimeout time.Duration
60+
EnvironmentVariablesmap[string]string
61+
Logger slog.Logger
7762
}
7863

7964
// CoordinatorDialer is a function that constructs a new broker.
8065
// A dialer must be passed in to allow for reconnects.
81-
typeCoordinatorDialerfunc(ctxcontext.Context) (net.Conn,error)
66+
typeCoordinatorDialerfunc(context.Context) (net.Conn,error)
8267

8368
// FetchMetadata is a function to obtain metadata for the agent.
84-
typeFetchMetadatafunc(ctxcontext.Context) (Metadata,error)
69+
typeFetchMetadatafunc(context.Context) (codersdk.WorkspaceAgentMetadata,error)
8570

8671
funcNew(optionsOptions) io.Closer {
8772
ifoptions.ReconnectingPTYTimeout==0 {
8873
options.ReconnectingPTYTimeout=5*time.Minute
8974
}
9075
ctx,cancelFunc:=context.WithCancel(context.Background())
9176
server:=&agent{
92-
reconnectingPTYTimeout:options.ReconnectingPTYTimeout,
93-
logger:options.Logger,
94-
closeCancel:cancelFunc,
95-
closed:make(chanstruct{}),
96-
envVars:options.EnvironmentVariables,
97-
coordinatorDialer:options.CoordinatorDialer,
98-
fetchMetadata:options.FetchMetadata,
99-
stats:&Stats{},
100-
statsReporter:options.StatsReporter,
77+
reconnectingPTYTimeout:options.ReconnectingPTYTimeout,
78+
logger:options.Logger,
79+
closeCancel:cancelFunc,
80+
closed:make(chanstruct{}),
81+
envVars:options.EnvironmentVariables,
82+
coordinatorDialer:options.CoordinatorDialer,
83+
fetchMetadata:options.FetchMetadata,
84+
stats:&Stats{},
85+
statsReporter:options.StatsReporter,
86+
workspaceAgentApps:options.WorkspaceAgentApps,
87+
postWorkspaceAgentAppHealth:options.PostWorkspaceAgentAppHealth,
10188
}
10289
server.init(ctx)
10390
returnserver
@@ -120,14 +107,16 @@ type agent struct {
120107
fetchMetadataFetchMetadata
121108
sshServer*ssh.Server
122109

123-
network*tailnet.Conn
124-
coordinatorDialerCoordinatorDialer
125-
stats*Stats
126-
statsReporterStatsReporter
110+
network*tailnet.Conn
111+
coordinatorDialerCoordinatorDialer
112+
stats*Stats
113+
statsReporterStatsReporter
114+
workspaceAgentAppsWorkspaceAgentApps
115+
postWorkspaceAgentAppHealthPostWorkspaceAgentAppHealth
127116
}
128117

129118
func (a*agent)run(ctx context.Context) {
130-
varmetadataMetadata
119+
varmetadatacodersdk.WorkspaceAgentMetadata
131120
varerrerror
132121
// An exponential back-off occurs when the connection is failing to dial.
133122
// This is to prevent server spam in case of a coderd outage.
@@ -168,6 +157,10 @@ func (a *agent) run(ctx context.Context) {
168157
ifmetadata.DERPMap!=nil {
169158
goa.runTailnet(ctx,metadata.DERPMap)
170159
}
160+
161+
ifa.workspaceAgentApps!=nil&&a.postWorkspaceAgentAppHealth!=nil {
162+
goNewWorkspaceAppHealthReporter(a.logger,a.workspaceAgentApps,a.postWorkspaceAgentAppHealth)(ctx)
163+
}
171164
}
172165

173166
func (a*agent)runTailnet(ctx context.Context,derpMap*tailcfg.DERPMap) {
@@ -182,7 +175,7 @@ func (a *agent) runTailnet(ctx context.Context, derpMap *tailcfg.DERPMap) {
182175
}
183176
varerrerror
184177
a.network,err=tailnet.NewConn(&tailnet.Options{
185-
Addresses: []netip.Prefix{netip.PrefixFrom(tailnetIP,128)},
178+
Addresses: []netip.Prefix{netip.PrefixFrom(codersdk.TailnetIP,128)},
186179
DERPMap:derpMap,
187180
Logger:a.logger.Named("tailnet"),
188181
})
@@ -199,7 +192,7 @@ func (a *agent) runTailnet(ctx context.Context, derpMap *tailcfg.DERPMap) {
199192
})
200193
goa.runCoordinator(ctx)
201194

202-
sshListener,err:=a.network.Listen("tcp",":"+strconv.Itoa(tailnetSSHPort))
195+
sshListener,err:=a.network.Listen("tcp",":"+strconv.Itoa(codersdk.TailnetSSHPort))
203196
iferr!=nil {
204197
a.logger.Critical(ctx,"listen for ssh",slog.Error(err))
205198
return
@@ -213,7 +206,7 @@ func (a *agent) runTailnet(ctx context.Context, derpMap *tailcfg.DERPMap) {
213206
goa.sshServer.HandleConn(a.stats.wrapConn(conn))
214207
}
215208
}()
216-
reconnectingPTYListener,err:=a.network.Listen("tcp",":"+strconv.Itoa(tailnetReconnectingPTYPort))
209+
reconnectingPTYListener,err:=a.network.Listen("tcp",":"+strconv.Itoa(codersdk.TailnetReconnectingPTYPort))
217210
iferr!=nil {
218211
a.logger.Critical(ctx,"listen for reconnecting pty",slog.Error(err))
219212
return
@@ -239,15 +232,15 @@ func (a *agent) runTailnet(ctx context.Context, derpMap *tailcfg.DERPMap) {
239232
iferr!=nil {
240233
continue
241234
}
242-
varmsgreconnectingPTYInit
235+
varmsgcodersdk.ReconnectingPTYInit
243236
err=json.Unmarshal(data,&msg)
244237
iferr!=nil {
245238
continue
246239
}
247240
goa.handleReconnectingPTY(ctx,msg,conn)
248241
}
249242
}()
250-
speedtestListener,err:=a.network.Listen("tcp",":"+strconv.Itoa(tailnetSpeedtestPort))
243+
speedtestListener,err:=a.network.Listen("tcp",":"+strconv.Itoa(codersdk.TailnetSpeedtestPort))
251244
iferr!=nil {
252245
a.logger.Critical(ctx,"listen for speedtest",slog.Error(err))
253246
return
@@ -272,6 +265,15 @@ func (a *agent) runTailnet(ctx context.Context, derpMap *tailcfg.DERPMap) {
272265

273266
// runCoordinator listens for nodes and updates the self-node as it changes.
274267
func (a*agent)runCoordinator(ctx context.Context) {
268+
for {
269+
reconnect:=a.runCoordinatorWithRetry(ctx)
270+
if!reconnect {
271+
return
272+
}
273+
}
274+
}
275+
276+
func (a*agent)runCoordinatorWithRetry(ctx context.Context) (reconnectbool) {
275277
varcoordinator net.Conn
276278
varerrerror
277279
// An exponential back-off occurs when the connection is failing to dial.
@@ -280,38 +282,38 @@ func (a *agent) runCoordinator(ctx context.Context) {
280282
coordinator,err=a.coordinatorDialer(ctx)
281283
iferr!=nil {
282284
iferrors.Is(err,context.Canceled) {
283-
return
285+
returnfalse
284286
}
285287
ifa.isClosed() {
286-
return
288+
returnfalse
287289
}
288290
a.logger.Warn(context.Background(),"failed to dial",slog.Error(err))
289291
continue
290292
}
293+
//nolint:revive // Defer is ok because we're exiting this loop.
294+
defercoordinator.Close()
291295
a.logger.Info(context.Background(),"connected to coordination server")
292296
break
293297
}
294298
select {
295299
case<-ctx.Done():
296-
return
300+
returnfalse
297301
default:
298302
}
299-
defercoordinator.Close()
300303
sendNodes,errChan:=tailnet.ServeCoordinator(coordinator,a.network.UpdateNodes)
301304
a.network.SetNodeCallback(sendNodes)
302305
select {
303306
case<-ctx.Done():
304-
return
307+
returnfalse
305308
caseerr:=<-errChan:
306309
ifa.isClosed() {
307-
return
310+
returnfalse
308311
}
309312
iferrors.Is(err,context.Canceled) {
310-
return
313+
returnfalse
311314
}
312315
a.logger.Debug(ctx,"node broker accept exited; restarting connection",slog.Error(err))
313-
a.runCoordinator(ctx)
314-
return
316+
returntrue
315317
}
316318
}
317319

@@ -434,7 +436,7 @@ func (a *agent) init(ctx context.Context) {
434436

435437
goa.run(ctx)
436438
ifa.statsReporter!=nil {
437-
cl,err:=a.statsReporter(ctx,a.logger,func()*Stats {
439+
cl,err:=a.statsReporter(ctx,a.logger,func()*codersdk.AgentStats {
438440
returna.stats.Copy()
439441
})
440442
iferr!=nil {
@@ -469,7 +471,7 @@ func (a *agent) createCommand(ctx context.Context, rawCommand string, env []stri
469471
ifrawMetadata==nil {
470472
returnnil,xerrors.Errorf("no metadata was provided: %w",err)
471473
}
472-
metadata,valid:=rawMetadata.(Metadata)
474+
metadata,valid:=rawMetadata.(codersdk.WorkspaceAgentMetadata)
473475
if!valid {
474476
returnnil,xerrors.Errorf("metadata is the wrong type: %T",metadata)
475477
}
@@ -625,7 +627,7 @@ func (a *agent) handleSSHSession(session ssh.Session) (retErr error) {
625627
returncmd.Wait()
626628
}
627629

628-
func (a*agent)handleReconnectingPTY(ctx context.Context,msgreconnectingPTYInit,conn net.Conn) {
630+
func (a*agent)handleReconnectingPTY(ctx context.Context,msgcodersdk.ReconnectingPTYInit,conn net.Conn) {
629631
deferconn.Close()
630632

631633
varrpty*reconnectingPTY
@@ -766,7 +768,7 @@ func (a *agent) handleReconnectingPTY(ctx context.Context, msg reconnectingPTYIn
766768
rpty.activeConnsMutex.Unlock()
767769
}()
768770
decoder:=json.NewDecoder(conn)
769-
varreqReconnectingPTYRequest
771+
varreqcodersdk.ReconnectingPTYRequest
770772
for {
771773
err=decoder.Decode(&req)
772774
ifxerrors.Is(err,io.EOF) {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp