Thanks to visit codestin.com
Credit goes to github.com

Skip to content

[pull] main from coder:main #83

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 12, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cli/testdata/coder_list_--output_json.golden
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"template_allow_user_cancel_workspace_jobs": false,
"template_active_version_id": "============[version ID]============",
"template_require_active_version": false,
"template_use_classic_parameter_flow": false,
"template_use_classic_parameter_flow": true,
"latest_build": {
"id": "========[workspace build ID]========",
"created_at": "====[timestamp]=====",
Expand Down
3 changes: 0 additions & 3 deletions coderd/apidoc/docs.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 0 additions & 3 deletions coderd/apidoc/swagger.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 0 additions & 3 deletions coderd/coderd.go
Original file line number Diff line number Diff line change
Expand Up @@ -1153,9 +1153,6 @@ func New(options *Options) *API {
})

r.Group(func(r chi.Router) {
r.Use(
httpmw.RequireExperiment(api.Experiments, codersdk.ExperimentDynamicParameters),
)
r.Route("/dynamic-parameters", func(r chi.Router) {
r.Post("/evaluate", api.templateVersionDynamicParametersEvaluate)
r.Get("/", api.templateVersionDynamicParametersWebsocket)
Expand Down
1 change: 1 addition & 0 deletions coderd/database/dbmem/dbmem.go
Original file line number Diff line number Diff line change
Expand Up @@ -9345,6 +9345,7 @@ func (q *FakeQuerier) InsertTemplate(_ context.Context, arg database.InsertTempl
AllowUserAutostart: true,
AllowUserAutostop: true,
MaxPortSharingLevel: arg.MaxPortSharingLevel,
UseClassicParameterFlow: true,
}
q.templates = append(q.templates, template)
return nil
Expand Down
2 changes: 1 addition & 1 deletion coderd/database/dump.sql

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
ALTER TABLE templates ALTER COLUMN use_classic_parameter_flow SET DEFAULT false;

UPDATE templates SET use_classic_parameter_flow = false
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
-- All templates should opt out of dynamic parameters by default.
ALTER TABLE templates ALTER COLUMN use_classic_parameter_flow SET DEFAULT true;

UPDATE templates SET use_classic_parameter_flow = true
14 changes: 8 additions & 6 deletions coderd/parameters_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,7 @@ import (
func TestDynamicParametersOwnerSSHPublicKey(t *testing.T) {
t.Parallel()

cfg := coderdtest.DeploymentValues(t)
cfg.Experiments = []string{string(codersdk.ExperimentDynamicParameters)}
ownerClient := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true, DeploymentValues: cfg})
ownerClient := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
owner := coderdtest.CreateFirstUser(t, ownerClient)
templateAdmin, _ := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID, rbac.RoleTemplateAdmin())

Expand Down Expand Up @@ -251,6 +249,7 @@ func TestDynamicParametersWithTerraformValues(t *testing.T) {
Value: "GO",
},
}
request.EnableDynamicParameters = true
})
coderdtest.AwaitWorkspaceBuildJobCompleted(t, setup.client, wrk.LatestBuild.ID)

Expand Down Expand Up @@ -354,14 +353,11 @@ type dynamicParamsTest struct {
}

func setupDynamicParamsTest(t *testing.T, args setupDynamicParamsTestParams) dynamicParamsTest {
cfg := coderdtest.DeploymentValues(t)
cfg.Experiments = []string{string(codersdk.ExperimentDynamicParameters)}
ownerClient, _, api := coderdtest.NewWithAPI(t, &coderdtest.Options{
Database: args.db,
Pubsub: args.ps,
IncludeProvisionerDaemon: true,
ProvisionerDaemonVersion: args.provisionerDaemonVersion,
DeploymentValues: cfg,
})

owner := coderdtest.CreateFirstUser(t, ownerClient)
Expand All @@ -384,6 +380,12 @@ func setupDynamicParamsTest(t *testing.T, args setupDynamicParamsTestParams) dyn
coderdtest.AwaitTemplateVersionJobCompleted(t, templateAdmin, version.ID)
tpl := coderdtest.CreateTemplate(t, templateAdmin, owner.OrganizationID, version.ID)

var err error
tpl, err = templateAdmin.UpdateTemplateMeta(t.Context(), tpl.ID, codersdk.UpdateTemplateMeta{
UseClassicParameterFlow: ptr.Ref(false),
})
require.NoError(t, err)

ctx := testutil.Context(t, testutil.WaitShort)
stream, err := templateAdmin.TemplateVersionDynamicParameters(ctx, version.ID)
if args.expectWebsocketError {
Expand Down
2 changes: 1 addition & 1 deletion coderd/templates_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1548,7 +1548,7 @@ func TestPatchTemplateMeta(t *testing.T) {
user := coderdtest.CreateFirstUser(t, client)
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
require.False(t, template.UseClassicParameterFlow, "default is false")
require.True(t, template.UseClassicParameterFlow, "default is true")

bTrue := true
bFalse := false
Expand Down
16 changes: 2 additions & 14 deletions coderd/workspacebuilds.go
Original file line number Diff line number Diff line change
Expand Up @@ -384,20 +384,8 @@ func (api *API) postWorkspaceBuilds(rw http.ResponseWriter, r *http.Request) {
builder = builder.State(createBuild.ProvisionerState)
}

// Only defer to dynamic parameters if the experiment is enabled.
if api.Experiments.Enabled(codersdk.ExperimentDynamicParameters) {
if createBuild.EnableDynamicParameters != nil {
// Explicit opt-in
builder = builder.DynamicParameters(*createBuild.EnableDynamicParameters)
}
} else {
if createBuild.EnableDynamicParameters != nil {
api.Logger.Warn(ctx, "ignoring dynamic parameter field sent by request, the experiment is not enabled",
slog.F("field", *createBuild.EnableDynamicParameters),
slog.F("user", apiKey.UserID.String()),
slog.F("transition", string(createBuild.Transition)),
)
}
if createBuild.EnableDynamicParameters != nil {
builder = builder.DynamicParameters(*createBuild.EnableDynamicParameters)
}

workspaceBuild, provisionerJob, provisionerDaemons, err = builder.Build(
Expand Down
2 changes: 1 addition & 1 deletion coderd/workspaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -717,7 +717,7 @@ func createWorkspace(
builder = builder.MarkPrebuiltWorkspaceClaim()
}

if req.EnableDynamicParameters && api.Experiments.Enabled(codersdk.ExperimentDynamicParameters) {
if req.EnableDynamicParameters {
builder = builder.DynamicParameters(req.EnableDynamicParameters)
}

Expand Down
21 changes: 10 additions & 11 deletions coderd/wsbuilder/wsbuilder.go
Original file line number Diff line number Diff line change
Expand Up @@ -1042,8 +1042,15 @@ func (b *Builder) checkRunningBuild() error {
}

func (b *Builder) usingDynamicParameters() bool {
if !b.experiments.Enabled(codersdk.ExperimentDynamicParameters) {
// Experiment required
if b.dynamicParametersEnabled != nil {
return *b.dynamicParametersEnabled
}

tpl, err := b.getTemplate()
if err != nil {
return false // Let another part of the code get this error
}
if tpl.UseClassicParameterFlow {
return false
}

Expand All @@ -1056,15 +1063,7 @@ func (b *Builder) usingDynamicParameters() bool {
return false
}

if b.dynamicParametersEnabled != nil {
return *b.dynamicParametersEnabled
}

tpl, err := b.getTemplate()
if err != nil {
return false // Let another part of the code get this error
}
return !tpl.UseClassicParameterFlow
return true
}

func ProvisionerVersionSupportsDynamicParameters(version string) bool {
Expand Down
9 changes: 5 additions & 4 deletions coderd/wsbuilder/wsbuilder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -894,10 +894,11 @@ func withTemplate(mTx *dbmock.MockStore) {
mTx.EXPECT().GetTemplateByID(gomock.Any(), templateID).
Times(1).
Return(database.Template{
ID: templateID,
OrganizationID: orgID,
Provisioner: database.ProvisionerTypeTerraform,
ActiveVersionID: activeVersionID,
ID: templateID,
OrganizationID: orgID,
Provisioner: database.ProvisionerTypeTerraform,
ActiveVersionID: activeVersionID,
UseClassicParameterFlow: true,
}, nil)
}

Expand Down
1 change: 0 additions & 1 deletion codersdk/deployment.go
Original file line number Diff line number Diff line change
Expand Up @@ -3356,7 +3356,6 @@ const (
ExperimentNotifications Experiment = "notifications" // Sends notifications via SMTP and webhooks following certain events.
ExperimentWorkspaceUsage Experiment = "workspace-usage" // Enables the new workspace usage tracking.
ExperimentWebPush Experiment = "web-push" // Enables web push notifications through the browser.
ExperimentDynamicParameters Experiment = "dynamic-parameters" // Enables dynamic parameters when creating a workspace.
ExperimentWorkspacePrebuilds Experiment = "workspace-prebuilds" // Enables the new workspace prebuilds feature.
ExperimentAgenticChat Experiment = "agentic-chat" // Enables the new agentic AI chat feature.
ExperimentAITasks Experiment = "ai-tasks" // Enables the new AI tasks feature.
Expand Down
4 changes: 2 additions & 2 deletions docs/install/kubernetes.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ We support two release channels: mainline and stable - read the
helm install coder coder-v2/coder \
--namespace coder \
--values values.yaml \
--version 2.22.1
--version 2.23.1
```

- **Stable** Coder release:
Expand All @@ -144,7 +144,7 @@ We support two release channels: mainline and stable - read the
helm install coder coder-v2/coder \
--namespace coder \
--values values.yaml \
--version 2.19.0
--version 2.22.1
```

You can watch Coder start up by running `kubectl get pods -n coder`. Once Coder
Expand Down
10 changes: 5 additions & 5 deletions docs/install/releases/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,13 @@ pages.
<!-- RELEASE_CALENDAR_START -->
| Release name | Release Date | Status | Latest Release |
|------------------------------------------------|-------------------|------------------|----------------------------------------------------------------|
| [2.17](https://coder.com/changelog/coder-2-17) | November 04, 2024 | Not Supported | [v2.17.3](https://github.com/coder/coder/releases/tag/v2.17.3) |
| [2.18](https://coder.com/changelog/coder-2-18) | December 03, 2024 | Not Supported | [v2.18.5](https://github.com/coder/coder/releases/tag/v2.18.5) |
| [2.19](https://coder.com/changelog/coder-2-19) | February 04, 2025 | Not Supported | [v2.19.3](https://github.com/coder/coder/releases/tag/v2.19.3) |
| [2.20](https://coder.com/changelog/coder-2-20) | March 04, 2025 | Security Support | [v2.20.3](https://github.com/coder/coder/releases/tag/v2.20.3) |
| [2.21](https://coder.com/changelog/coder-2-21) | April 02, 2025 | Stable | [v2.21.3](https://github.com/coder/coder/releases/tag/v2.21.3) |
| [2.22](https://coder.com/changelog/coder-2-22) | May 16, 2025 | Mainline | [v2.22.0](https://github.com/coder/coder/releases/tag/v2.22.0) |
| 2.23 | | Not Released | N/A |
| [2.20](https://coder.com/changelog/coder-2-20) | March 04, 2025 | Not Supported | [v2.20.3](https://github.com/coder/coder/releases/tag/v2.20.3) |
| [2.21](https://coder.com/changelog/coder-2-21) | April 02, 2025 | Security Support | [v2.21.3](https://github.com/coder/coder/releases/tag/v2.21.3) |
| [2.22](https://coder.com/changelog/coder-2-22) | May 16, 2025 | Stable | [v2.22.1](https://github.com/coder/coder/releases/tag/v2.22.1) |
| [2.23](https://coder.com/changelog/coder-2-23) | June 03, 2025 | Mainline | [v2.23.1](https://github.com/coder/coder/releases/tag/v2.23.1) |
| 2.24 | | Not Released | N/A |
<!-- RELEASE_CALENDAR_END -->

> [!TIP]
Expand Down
1 change: 0 additions & 1 deletion docs/reference/api/schemas.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 1 addition & 3 deletions enterprise/coderd/parameters_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,14 @@ import (
func TestDynamicParametersOwnerGroups(t *testing.T) {
t.Parallel()

cfg := coderdtest.DeploymentValues(t)
cfg.Experiments = []string{string(codersdk.ExperimentDynamicParameters)}
ownerClient, owner := coderdenttest.New(t,
&coderdenttest.Options{
LicenseOptions: &coderdenttest.LicenseOptions{
Features: license.Features{
codersdk.FeatureTemplateRBAC: 1,
},
},
Options: &coderdtest.Options{IncludeProvisionerDaemon: true, DeploymentValues: cfg},
Options: &coderdtest.Options{IncludeProvisionerDaemon: true},
},
)
templateAdmin, templateAdminUser := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID, rbac.RoleTemplateAdmin())
Expand Down
8 changes: 7 additions & 1 deletion enterprise/coderd/workspaces_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1698,7 +1698,7 @@ func TestWorkspaceTemplateParamsChange(t *testing.T) {

logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: false})
dv := coderdtest.DeploymentValues(t)
dv.Experiments = []string{string(codersdk.ExperimentDynamicParameters)}

client, owner := coderdenttest.New(t, &coderdenttest.Options{
Options: &coderdtest.Options{
Logger: &logger,
Expand Down Expand Up @@ -1736,6 +1736,12 @@ func TestWorkspaceTemplateParamsChange(t *testing.T) {
require.NoError(t, err, "failed to create template version")
coderdtest.AwaitTemplateVersionJobCompleted(t, templateAdmin, tv.ID)
tpl := coderdtest.CreateTemplate(t, templateAdmin, owner.OrganizationID, tv.ID)

// Set to dynamic params
tpl, err = client.UpdateTemplateMeta(ctx, tpl.ID, codersdk.UpdateTemplateMeta{
UseClassicParameterFlow: ptr.Ref(false),
})
require.NoError(t, err, "failed to update template meta")
require.False(t, tpl.UseClassicParameterFlow, "template to use dynamic parameters")

// When: we create a workspace build using the above template but with
Expand Down
2 changes: 2 additions & 0 deletions site/e2e/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1011,6 +1011,8 @@ export const updateWorkspace = async (
await page.getByTestId("workspace-update-button").click();
await page.getByTestId("confirm-button").click();

await page.waitForSelector('[data-testid="dialog"]', { state: "visible" });

await fillParameters(page, richParameters, buildParameters);
await page.getByRole("button", { name: /update parameters/i }).click();

Expand Down
1 change: 0 additions & 1 deletion site/src/api/typesGenerated.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

This file was deleted.

Loading
Loading