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

Commitf27941a

Browse files
Merge remote-tracking branch 'origin/main' into yevhenii/prebuilds-autoscaling-mechanism
2 parents67a314b +9b9b894 commitf27941a

File tree

268 files changed

+12819
-4992
lines changed

Some content is hidden

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

268 files changed

+12819
-4992
lines changed

‎.editorconfig

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ indent_style = tab
1111
indent_style =space
1212
indent_size =2
1313

14+
[*.proto]
15+
indent_style =space
16+
indent_size =2
17+
1418
[coderd/database/dump.sql]
1519
indent_style =space
1620
indent_size =4

‎.github/workflows/ci.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ jobs:
187187
188188
# Check for any typos
189189
-name:Check for typos
190-
uses:crate-ci/typos@0f0ccba9ed1df83948f0c15026e4f5ccfce46109# v1.32.0
190+
uses:crate-ci/typos@b1ae8d918b6e85bd611117d3d9a3be4f903ee5e4# v1.33.1
191191
with:
192192
config:.github/workflows/typos.toml
193193

@@ -902,7 +902,7 @@ jobs:
902902
# the check to pass. This is desired in PRs, but not in mainline.
903903
-name:Publish to Chromatic (non-mainline)
904904
if:github.ref != 'refs/heads/main' && github.repository_owner == 'coder'
905-
uses:chromaui/action@d7afd50124cf4f337bcd943e7f45cfa85a5e4476# v12.0.0
905+
uses:chromaui/action@8536229ee904071f8edce292596f6dbe0da96b9b# v12.1.1
906906
env:
907907
NODE_OPTIONS:"--max_old_space_size=4096"
908908
STORYBOOK:true
@@ -934,7 +934,7 @@ jobs:
934934
# infinitely "in progress" in mainline unless we re-review each build.
935935
-name:Publish to Chromatic (mainline)
936936
if:github.ref == 'refs/heads/main' && github.repository_owner == 'coder'
937-
uses:chromaui/action@d7afd50124cf4f337bcd943e7f45cfa85a5e4476# v12.0.0
937+
uses:chromaui/action@8536229ee904071f8edce292596f6dbe0da96b9b# v12.1.1
938938
env:
939939
NODE_OPTIONS:"--max_old_space_size=4096"
940940
STORYBOOK:true
@@ -1526,7 +1526,7 @@ jobs:
15261526
uses:google-github-actions/setup-gcloud@77e7a554d41e2ee56fc945c52dfd3f33d12def9a# v2.1.4
15271527

15281528
-name:Set up Flux CLI
1529-
uses:fluxcd/flux2/action@8d5f40dca5aa5d3c0fc3414457dda15a0ac92fa4# v2.5.1
1529+
uses:fluxcd/flux2/action@b73c7f7191086ca7629840e680e71873349787f8# v2.6.1
15301530
with:
15311531
# Keep this and the github action up to date with the version of flux installed in dogfood cluster
15321532
version:"2.5.1"

‎.github/workflows/contrib.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242
# branch should not be protected
4343
branch:"main"
4444
# Some users have signed a corporate CLA with Coder so are exempt from signing our community one.
45-
allowlist:"coryb,aaronlehmann,dependabot*"
45+
allowlist:"coryb,aaronlehmann,dependabot*,blink-so*"
4646

4747
release-labels:
4848
runs-on:ubuntu-latest

‎.github/workflows/docs-ci.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
-name:Setup Node
2929
uses:./.github/actions/setup-node
3030

31-
-uses:tj-actions/changed-files@3981e4f74104e7a4c67a835e1e5dd5d9eb0f0a57# v45.0.7
31+
-uses:tj-actions/changed-files@115870536a85eaf050e369291c7895748ff12aea# v45.0.7
3232
id:changed-files
3333
with:
3434
files:|

‎.github/workflows/scorecard.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
persist-credentials:false
3131

3232
-name:"Run analysis"
33-
uses:ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186# v2.4.1
33+
uses:ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde# v2.4.2
3434
with:
3535
results_file:results.sarif
3636
results_format:sarif
@@ -47,6 +47,6 @@ jobs:
4747

4848
# Upload the results to GitHub's code scanning dashboard.
4949
-name:"Upload to code-scanning"
50-
uses:github/codeql-action/upload-sarif@ff0a06e83cb2de871e5a09832bc6a81e7276941f# v3.28.18
50+
uses:github/codeql-action/upload-sarif@fca7ace96b7d713c7035871441bd52efbe39e27e# v3.28.19
5151
with:
5252
sarif_file:results.sarif

‎.github/workflows/security.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ jobs:
3838
uses:./.github/actions/setup-go
3939

4040
-name:Initialize CodeQL
41-
uses:github/codeql-action/init@ff0a06e83cb2de871e5a09832bc6a81e7276941f# v3.28.18
41+
uses:github/codeql-action/init@fca7ace96b7d713c7035871441bd52efbe39e27e# v3.28.19
4242
with:
4343
languages:go, javascript
4444

@@ -48,7 +48,7 @@ jobs:
4848
rm Makefile
4949
5050
-name:Perform CodeQL Analysis
51-
uses:github/codeql-action/analyze@ff0a06e83cb2de871e5a09832bc6a81e7276941f# v3.28.18
51+
uses:github/codeql-action/analyze@fca7ace96b7d713c7035871441bd52efbe39e27e# v3.28.19
5252

5353
-name:Send Slack notification on failure
5454
if:${{ failure() }}
@@ -142,15 +142,15 @@ jobs:
142142
echo "image=$(cat "$image_job")" >> $GITHUB_OUTPUT
143143
144144
-name:Run Trivy vulnerability scanner
145-
uses:aquasecurity/trivy-action@6c175e9c4083a92bbca2f9724c8a5e33bc2d97a5
145+
uses:aquasecurity/trivy-action@76071ef0d7ec797419534a183b498b4d6366cf37
146146
with:
147147
image-ref:${{ steps.build.outputs.image }}
148148
format:sarif
149149
output:trivy-results.sarif
150150
severity:"CRITICAL,HIGH"
151151

152152
-name:Upload Trivy scan results to GitHub Security tab
153-
uses:github/codeql-action/upload-sarif@ff0a06e83cb2de871e5a09832bc6a81e7276941f# v3.28.18
153+
uses:github/codeql-action/upload-sarif@fca7ace96b7d713c7035871441bd52efbe39e27e# v3.28.19
154154
with:
155155
sarif_file:trivy-results.sarif
156156
category:"Trivy"

‎README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,10 @@ We are always working on new integrations. Please feel free to open an issue and
109109
###Official
110110

111111
-[**VS Code Extension**](https://marketplace.visualstudio.com/items?itemName=coder.coder-remote): Open any Coder workspace in VS Code with a single click
112-
-[**JetBrains Gateway Extension**](https://plugins.jetbrains.com/plugin/19620-coder): Open any Coder workspace in JetBrains Gateway with a single click
112+
-[**JetBrains Toolbox Plugin**](https://plugins.jetbrains.com/plugin/26968-coder): Open any Coder workspace from JetBrains Toolbox with a single click
113+
-[**JetBrains Gateway Plugin**](https://plugins.jetbrains.com/plugin/19620-coder): Open any Coder workspace in JetBrains Gateway with a single click
113114
-[**Dev Container Builder**](https://github.com/coder/envbuilder): Build development environments using`devcontainer.json` on Docker, Kubernetes, and OpenShift
114-
-[**Module Registry**](https://registry.coder.com):Extend development environments with common use-cases
115+
-[**Coder Registry**](https://registry.coder.com):Build and extend development environments with common use-cases
115116
-[**Kubernetes Log Stream**](https://github.com/coder/coder-logstream-kube): Stream Kubernetes Pod events to the Coder startup logs
116117
-[**Self-Hosted VS Code Extension Marketplace**](https://github.com/coder/code-marketplace): A private extension marketplace that works in restricted or airgapped networks integrating with[code-server](https://github.com/coder/code-server).
117118
-[**Setup Coder**](https://github.com/marketplace/actions/setup-coder): An action to setup coder CLI in GitHub workflows.

‎agent/agent.go

Lines changed: 32 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,7 @@ func (t *trySingleflight) Do(key string, fn func()) {
456456
fn()
457457
}
458458

459-
func (a*agent)reportMetadata(ctx context.Context,aAPI proto.DRPCAgentClient24)error {
459+
func (a*agent)reportMetadata(ctx context.Context,aAPI proto.DRPCAgentClient26)error {
460460
tickerDone:=make(chanstruct{})
461461
collectDone:=make(chanstruct{})
462462
ctx,cancel:=context.WithCancel(ctx)
@@ -672,7 +672,7 @@ func (a *agent) reportMetadata(ctx context.Context, aAPI proto.DRPCAgentClient24
672672

673673
// reportLifecycle reports the current lifecycle state once. All state
674674
// changes are reported in order.
675-
func (a*agent)reportLifecycle(ctx context.Context,aAPI proto.DRPCAgentClient24)error {
675+
func (a*agent)reportLifecycle(ctx context.Context,aAPI proto.DRPCAgentClient26)error {
676676
for {
677677
select {
678678
case<-a.lifecycleUpdate:
@@ -752,7 +752,7 @@ func (a *agent) setLifecycle(state codersdk.WorkspaceAgentLifecycle) {
752752
}
753753

754754
// reportConnectionsLoop reports connections to the agent for auditing.
755-
func (a*agent)reportConnectionsLoop(ctx context.Context,aAPI proto.DRPCAgentClient24)error {
755+
func (a*agent)reportConnectionsLoop(ctx context.Context,aAPI proto.DRPCAgentClient26)error {
756756
for {
757757
select {
758758
case<-a.reportConnectionsUpdate:
@@ -872,7 +872,7 @@ func (a *agent) reportConnection(id uuid.UUID, connectionType proto.Connection_T
872872
// fetchServiceBannerLoop fetches the service banner on an interval. It will
873873
// not be fetched immediately; the expectation is that it is primed elsewhere
874874
// (and must be done before the session actually starts).
875-
func (a*agent)fetchServiceBannerLoop(ctx context.Context,aAPI proto.DRPCAgentClient24)error {
875+
func (a*agent)fetchServiceBannerLoop(ctx context.Context,aAPI proto.DRPCAgentClient26)error {
876876
ticker:=time.NewTicker(a.announcementBannersRefreshInterval)
877877
deferticker.Stop()
878878
for {
@@ -925,7 +925,7 @@ func (a *agent) run() (retErr error) {
925925
connMan:=newAPIConnRoutineManager(a.gracefulCtx,a.hardCtx,a.logger,aAPI,tAPI)
926926

927927
connMan.startAgentAPI("init notification banners",gracefulShutdownBehaviorStop,
928-
func(ctx context.Context,aAPI proto.DRPCAgentClient24)error {
928+
func(ctx context.Context,aAPI proto.DRPCAgentClient26)error {
929929
bannersProto,err:=aAPI.GetAnnouncementBanners(ctx,&proto.GetAnnouncementBannersRequest{})
930930
iferr!=nil {
931931
returnxerrors.Errorf("fetch service banner: %w",err)
@@ -942,7 +942,7 @@ func (a *agent) run() (retErr error) {
942942
// sending logs gets gracefulShutdownBehaviorRemain because we want to send logs generated by
943943
// shutdown scripts.
944944
connMan.startAgentAPI("send logs",gracefulShutdownBehaviorRemain,
945-
func(ctx context.Context,aAPI proto.DRPCAgentClient24)error {
945+
func(ctx context.Context,aAPI proto.DRPCAgentClient26)error {
946946
err:=a.logSender.SendLoop(ctx,aAPI)
947947
ifxerrors.Is(err,agentsdk.ErrLogLimitExceeded) {
948948
// we don't want this error to tear down the API connection and propagate to the
@@ -961,7 +961,7 @@ func (a *agent) run() (retErr error) {
961961
connMan.startAgentAPI("report metadata",gracefulShutdownBehaviorStop,a.reportMetadata)
962962

963963
// resources monitor can cease as soon as we start gracefully shutting down.
964-
connMan.startAgentAPI("resources monitor",gracefulShutdownBehaviorStop,func(ctx context.Context,aAPI proto.DRPCAgentClient24)error {
964+
connMan.startAgentAPI("resources monitor",gracefulShutdownBehaviorStop,func(ctx context.Context,aAPI proto.DRPCAgentClient26)error {
965965
logger:=a.logger.Named("resources_monitor")
966966
clk:=quartz.NewReal()
967967
config,err:=aAPI.GetResourcesMonitoringConfiguration(ctx,&proto.GetResourcesMonitoringConfigurationRequest{})
@@ -1008,7 +1008,7 @@ func (a *agent) run() (retErr error) {
10081008
connMan.startAgentAPI("handle manifest",gracefulShutdownBehaviorStop,a.handleManifest(manifestOK))
10091009

10101010
connMan.startAgentAPI("app health reporter",gracefulShutdownBehaviorStop,
1011-
func(ctx context.Context,aAPI proto.DRPCAgentClient24)error {
1011+
func(ctx context.Context,aAPI proto.DRPCAgentClient26)error {
10121012
iferr:=manifestOK.wait(ctx);err!=nil {
10131013
returnxerrors.Errorf("no manifest: %w",err)
10141014
}
@@ -1041,7 +1041,7 @@ func (a *agent) run() (retErr error) {
10411041

10421042
connMan.startAgentAPI("fetch service banner loop",gracefulShutdownBehaviorStop,a.fetchServiceBannerLoop)
10431043

1044-
connMan.startAgentAPI("stats report loop",gracefulShutdownBehaviorStop,func(ctx context.Context,aAPI proto.DRPCAgentClient24)error {
1044+
connMan.startAgentAPI("stats report loop",gracefulShutdownBehaviorStop,func(ctx context.Context,aAPI proto.DRPCAgentClient26)error {
10451045
iferr:=networkOK.wait(ctx);err!=nil {
10461046
returnxerrors.Errorf("no network: %w",err)
10471047
}
@@ -1056,8 +1056,8 @@ func (a *agent) run() (retErr error) {
10561056
}
10571057

10581058
// handleManifest returns a function that fetches and processes the manifest
1059-
func (a*agent)handleManifest(manifestOK*checkpoint)func(ctx context.Context,aAPI proto.DRPCAgentClient24)error {
1060-
returnfunc(ctx context.Context,aAPI proto.DRPCAgentClient24)error {
1059+
func (a*agent)handleManifest(manifestOK*checkpoint)func(ctx context.Context,aAPI proto.DRPCAgentClient26)error {
1060+
returnfunc(ctx context.Context,aAPI proto.DRPCAgentClient26)error {
10611061
var (
10621062
sentResult=false
10631063
errerror
@@ -1080,6 +1080,18 @@ func (a *agent) handleManifest(manifestOK *checkpoint) func(ctx context.Context,
10801080
ifmanifest.AgentID==uuid.Nil {
10811081
returnxerrors.New("nil agentID returned by manifest")
10821082
}
1083+
ifmanifest.ParentID!=uuid.Nil {
1084+
// This is a sub agent, disable all the features that should not
1085+
// be used by sub agents.
1086+
a.logger.Debug(ctx,"sub agent detected, disabling features",
1087+
slog.F("parent_id",manifest.ParentID),
1088+
slog.F("agent_id",manifest.AgentID),
1089+
)
1090+
ifa.experimentalDevcontainersEnabled {
1091+
a.logger.Info(ctx,"devcontainers are not supported on sub agents, disabling feature")
1092+
a.experimentalDevcontainersEnabled=false
1093+
}
1094+
}
10831095
a.client.RewriteDERPMap(manifest.DERPMap)
10841096

10851097
// Expand the directory and send it back to coderd so external
@@ -1187,8 +1199,8 @@ func (a *agent) handleManifest(manifestOK *checkpoint) func(ctx context.Context,
11871199

11881200
// createOrUpdateNetwork waits for the manifest to be set using manifestOK, then creates or updates
11891201
// the tailnet using the information in the manifest
1190-
func (a*agent)createOrUpdateNetwork(manifestOK,networkOK*checkpoint)func(context.Context, proto.DRPCAgentClient24)error {
1191-
returnfunc(ctx context.Context,_ proto.DRPCAgentClient24) (retErrerror) {
1202+
func (a*agent)createOrUpdateNetwork(manifestOK,networkOK*checkpoint)func(context.Context, proto.DRPCAgentClient26)error {
1203+
returnfunc(ctx context.Context,aAPI proto.DRPCAgentClient26) (retErrerror) {
11921204
iferr:=manifestOK.wait(ctx);err!=nil {
11931205
returnxerrors.Errorf("no manifest: %w",err)
11941206
}
@@ -1200,14 +1212,15 @@ func (a *agent) createOrUpdateNetwork(manifestOK, networkOK *checkpoint) func(co
12001212
network:=a.network
12011213
a.closeMutex.Unlock()
12021214
ifnetwork==nil {
1203-
keySeed,err:=SSHKeySeed(manifest.OwnerUsername,manifest.WorkspaceName,manifest.AgentName)
1215+
keySeed,err:=SSHKeySeed(manifest.OwnerName,manifest.WorkspaceName,manifest.AgentName)
12041216
iferr!=nil {
12051217
returnxerrors.Errorf("generate SSH key seed: %w",err)
12061218
}
12071219
// use the graceful context here, because creating the tailnet is not itself tied to the
12081220
// agent API.
12091221
network,err=a.createTailnet(
12101222
a.gracefulCtx,
1223+
aAPI,
12111224
manifest.AgentID,
12121225
manifest.DERPMap,
12131226
manifest.DERPForceWebSockets,
@@ -1355,6 +1368,7 @@ func (a *agent) trackGoroutine(fn func()) error {
13551368

13561369
func (a*agent)createTailnet(
13571370
ctx context.Context,
1371+
aAPI proto.DRPCAgentClient26,
13581372
agentID uuid.UUID,
13591373
derpMap*tailcfg.DERPMap,
13601374
derpForceWebSockets,disableDirectConnectionsbool,
@@ -1487,7 +1501,7 @@ func (a *agent) createTailnet(
14871501
}()
14881502
iferr=a.trackGoroutine(func() {
14891503
deferapiListener.Close()
1490-
apiHandler,closeAPIHAndler:=a.apiHandler()
1504+
apiHandler,closeAPIHAndler:=a.apiHandler(aAPI)
14911505
deferfunc() {
14921506
_=closeAPIHAndler()
14931507
}()
@@ -1960,7 +1974,7 @@ const (
19601974

19611975
typeapiConnRoutineManagerstruct {
19621976
logger slog.Logger
1963-
aAPI proto.DRPCAgentClient24
1977+
aAPI proto.DRPCAgentClient26
19641978
tAPI tailnetproto.DRPCTailnetClient24
19651979
eg*errgroup.Group
19661980
stopCtx context.Context
@@ -1969,7 +1983,7 @@ type apiConnRoutineManager struct {
19691983

19701984
funcnewAPIConnRoutineManager(
19711985
gracefulCtx,hardCtx context.Context,logger slog.Logger,
1972-
aAPI proto.DRPCAgentClient24,tAPI tailnetproto.DRPCTailnetClient24,
1986+
aAPI proto.DRPCAgentClient26,tAPI tailnetproto.DRPCTailnetClient24,
19731987
)*apiConnRoutineManager {
19741988
// routines that remain in operation during graceful shutdown use the remainCtx. They'll still
19751989
// exit if the errgroup hits an error, which usually means a problem with the conn.
@@ -2002,7 +2016,7 @@ func newAPIConnRoutineManager(
20022016
// but for Tailnet.
20032017
func (a*apiConnRoutineManager)startAgentAPI(
20042018
namestring,behaviorgracefulShutdownBehavior,
2005-
ffunc(context.Context, proto.DRPCAgentClient24)error,
2019+
ffunc(context.Context, proto.DRPCAgentClient26)error,
20062020
) {
20072021
logger:=a.logger.With(slog.F("name",name))
20082022
varctx context.Context

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp