Skip to content

Commit ceb74d6

Browse files
authored
Merge branch 'main' into lilac/web-editors
2 parents 1144376 + c339066 commit ceb74d6

File tree

159 files changed

+6857
-3003
lines changed

Some content is hidden

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

159 files changed

+6857
-3003
lines changed

.github/workflows/ci.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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: 1 addition & 1 deletion
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

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: 16 additions & 16 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(chan struct{})
461461
collectDone := make(chan struct{})
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
defer ticker.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
if err != nil {
931931
return xerrors.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
if xerrors.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
if err := manifestOK.wait(ctx); err != nil {
10131013
return xerrors.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
if err := networkOK.wait(ctx); err != nil {
10461046
return xerrors.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-
return func(ctx context.Context, aAPI proto.DRPCAgentClient24) error {
1059+
func (a *agent) handleManifest(manifestOK *checkpoint) func(ctx context.Context, aAPI proto.DRPCAgentClient26) error {
1060+
return func(ctx context.Context, aAPI proto.DRPCAgentClient26) error {
10611061
var (
10621062
sentResult = false
10631063
err error
@@ -1187,8 +1187,8 @@ func (a *agent) handleManifest(manifestOK *checkpoint) func(ctx context.Context,
11871187

11881188
// createOrUpdateNetwork waits for the manifest to be set using manifestOK, then creates or updates
11891189
// the tailnet using the information in the manifest
1190-
func (a *agent) createOrUpdateNetwork(manifestOK, networkOK *checkpoint) func(context.Context, proto.DRPCAgentClient24) error {
1191-
return func(ctx context.Context, _ proto.DRPCAgentClient24) (retErr error) {
1190+
func (a *agent) createOrUpdateNetwork(manifestOK, networkOK *checkpoint) func(context.Context, proto.DRPCAgentClient26) error {
1191+
return func(ctx context.Context, _ proto.DRPCAgentClient26) (retErr error) {
11921192
if err := manifestOK.wait(ctx); err != nil {
11931193
return xerrors.Errorf("no manifest: %w", err)
11941194
}
@@ -1960,7 +1960,7 @@ const (
19601960

19611961
type apiConnRoutineManager struct {
19621962
logger slog.Logger
1963-
aAPI proto.DRPCAgentClient24
1963+
aAPI proto.DRPCAgentClient26
19641964
tAPI tailnetproto.DRPCTailnetClient24
19651965
eg *errgroup.Group
19661966
stopCtx context.Context
@@ -1969,7 +1969,7 @@ type apiConnRoutineManager struct {
19691969

19701970
func newAPIConnRoutineManager(
19711971
gracefulCtx, hardCtx context.Context, logger slog.Logger,
1972-
aAPI proto.DRPCAgentClient24, tAPI tailnetproto.DRPCTailnetClient24,
1972+
aAPI proto.DRPCAgentClient26, tAPI tailnetproto.DRPCTailnetClient24,
19731973
) *apiConnRoutineManager {
19741974
// routines that remain in operation during graceful shutdown use the remainCtx. They'll still
19751975
// exit if the errgroup hits an error, which usually means a problem with the conn.
@@ -2002,7 +2002,7 @@ func newAPIConnRoutineManager(
20022002
// but for Tailnet.
20032003
func (a *apiConnRoutineManager) startAgentAPI(
20042004
name string, behavior gracefulShutdownBehavior,
2005-
f func(context.Context, proto.DRPCAgentClient24) error,
2005+
f func(context.Context, proto.DRPCAgentClient26) error,
20062006
) {
20072007
logger := a.logger.With(slog.F("name", name))
20082008
var ctx context.Context

agent/agentcontainers/api.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,8 @@ func (api *API) updateContainers(ctx context.Context) error {
378378

379379
return xerrors.Errorf("list containers failed: %w", err)
380380
}
381+
// Clone to avoid test flakes due to data manipulation.
382+
updated.Containers = slices.Clone(updated.Containers)
381383

382384
api.mu.Lock()
383385
defer api.mu.Unlock()

0 commit comments

Comments
 (0)