Visitar URL original
[cli/deployment] settings: remove the experimental Pulumi.<stack>.deploy.yaml feature by borisschlosser · Pull Request #23480 · pulumi/pulumi · GitHub
Skip to content

[cli/deployment] settings: remove the experimental Pulumi.<stack>.deploy.yaml feature - #23480

Merged
borisschlosser merged 7 commits into
masterfrom
boris/deployment-settings-edit-drop-encrypt-endpoint
Jul 6, 2026
Merged

borisschlosser merged 7 commits into
masterfrom
boris/deployment-settings-edit-drop-encrypt-endpoint

Conversation

@borisschlosser

@borisschlosser borisschlosser commented Jun 8, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Removes the experimental, undocumented Pulumi.<stack>.deploy.yaml deployment-settings-file feature from the CLI and SDK. Deployment settings are now managed exclusively in Pulumi Cloud via pulumi deployment settings get / edit / destroy.

What's removed

Commands (all experimental / hidden):

  • deployment settings init, pull, configure, env — authored and mutated the local file.
  • deployment settings push (update / up) — the only command that read the local file and uploaded it.
  • The --config-file flag.

Secret handling: edit now sends --secret-env values to the settings endpoint in plaintext-secret wire form ({"secret": VALUE}) and lets the server encrypt them, so the CLI no longer makes a separate encrypt round-trip. The corresponding backend.Backend interface method, client method, and mocks are removed.

SDK helpers (sdk/go/common/workspace): LoadProjectStackDeployment, DetectProjectStackDeployment, the ProjectStackDeployment type, DeploymentSuffix, and the SaveProjectStackDeployment / .Save writers.

Kept: get / edit / destroy — all cloud-direct, no local file involved.

Testing

  • go build ./... for the pkg and sdk modules — clean
  • go test ./pkg/cmd/pulumi/deployment/... and (in sdk/) ./go/common/workspace/... — pass

🤖 Generated with Claude Code

borisschlosser and others added 3 commits June 8, 2026 15:27
… of the encrypt endpoint

`pulumi deployment settings edit --secret-env KEY=VALUE` previously made a
separate POST to /api/stacks/.../deployments/settings/encrypt for every secret
to obtain a ciphertext, then embedded that ciphertext in the PATCH
deployment-settings request.

The PATCH deployment-settings endpoint already encrypts plaintext secret values
server-side with the stack's deployment-settings key (UpsertSettings ->
encryptSettings in pulumi-service). So the edit flow can simply send each secret
in plaintext-secret wire form ({"secret": VALUE}) in the patch body and let the
server encrypt it, eliminating one round-trip per secret.

This only changes the `deployment settings edit` flow, which sends settings
straight to the server. The `configure` and `env` flows still use the encrypt
endpoint because they persist encrypted secrets to a local deploy settings file,
where plaintext must never be written.

Signed-off-by: Boris Schlosser <boris@pulumi.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Boris Schlosser <boris@pulumi.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…d the encrypt endpoint

The deployment settings commands previously offered a local-file workflow built around
Pulumi.<stack>.deploy.yaml. The init/pull/configure/env subcommands created and mutated that
file, encrypting each secret up front via the deployments/settings/encrypt endpoint before
writing the ciphertext to disk.

That encrypt endpoint is no longer needed: the PATCH deployment-settings endpoint encrypts
plaintext secret values server-side, and the cloud-direct `edit` command already relies on it.
The encrypt endpoint was only still reachable through the local-file create/modify commands.

This removes the create/modify path entirely:

- Removes the experimental `init`, `pull`, `configure`, and `env` subcommands (the only writers
  of the local deploy file and the only remaining callers of the encrypt endpoint).
- Removes EncryptStackDeploymentSettingsSecret from the backend interface, the cloud/diy/mock
  backends, the httpstate client, and the settings/encrypt endpoint registration.
- Removes the SDK write helpers workspace.SaveProjectStackDeployment and
  ProjectStackDeployment.Save.

The read path is intentionally kept so existing files still work: `push` reads an existing
deploy file and uploads it, `destroy`/`get`/`edit` operate directly on Pulumi Cloud, and the
SDK read helpers plus the --config-file flag remain.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@borisschlosser borisschlosser changed the title [cli/deployment] settings edit: rely on PATCH server-side encryption instead of the encrypt endpoint [cli/deployment] settings: remove the local deploy.yaml write path and the encrypt endpoint Jun 9, 2026
borisschlosser and others added 3 commits July 3, 2026 12:29
Fully removes the Pulumi.<stack>.deploy.yaml deployment settings file
feature. The write path was already dropped earlier in this PR; this
removes the remaining read path:

- `pulumi deployment settings push` (aliases update/up) command.
- The `--config-file` flag and its plumbing through the settings
  command dependencies (ConfigFile / Deployment fields).
- The PUT `UpdateStackDeploymentSettings` chain: Backend interface
  method, cloud/diy impls, MockBackend field+impl, and the client PUT
  wrapper. The PATCH sibling used by `edit` is kept.
- SDK helpers that read the file: DetectProjectStackDeployment,
  DetectProjectStackDeploymentPath, DeploymentSuffix,
  LoadProjectStackDeployment(Bytes), and the ProjectStackDeployment type.
- The read-path tests (TestDSFileParsing, TestDetectProjectStackDeploymentPath).

`destroy` is decoupled from the removed file read: initializeDeploymentSettingsCmd
no longer loads the local file, and `destroy`/`get`/`edit` continue to
manage settings directly in Pulumi Cloud.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ttings-edit-drop-encrypt-endpoint

# Conflicts:
#	pkg/cmd/pulumi/deployment/deployment_settings_utils.go
#	pkg/cmd/pulumi/deployment/deployment_settings_utils_test.go
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@borisschlosser borisschlosser changed the title [cli/deployment] settings: remove the local deploy.yaml write path and the encrypt endpoint [cli/deployment] settings: remove the experimental Pulumi.<stack>.deploy.yaml feature Jul 3, 2026
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@borisschlosser

Copy link
Copy Markdown
Contributor Author

End-to-end testing

Built the CLI from this PR and tested it against a Pulumi service instance with a real GitHub organization. Also ran a released v3.248.0 CLI (which still ships the deployment-settings-file commands) against the same service to check backward compatibility.

This PR's CLI

  • The removed commands — deployment settings init / pull / configure / env / push — and the --config-file flag are gone; get / edit / destroy work.
  • deployment settings edit --secret-env KEY=VALUE stores the value encrypted (the server encrypts it) — verified the stored value is ciphertext, not plaintext.
  • edit / get / destroy round-trip correctly (create → read back → delete).

Backward compatibility with older CLIs

  • A released v3.248.0 CLI's file-based workflow still works against the same service: pull (download settings into Pulumi.<stack>.deploy.yaml), env --secret (add an encrypted variable), and push (upload the file) all succeed.
  • The two CLIs interoperate: after v3.248.0 pushed a deploy.yaml, this PR's CLI read the same settings back — including the encrypted secret.
  • So dropping these commands doesn't break users still on older releases.

End-to-end

  • A stack whose deployment settings were configured with this CLI deployed successfully on a git push (push-to-deploy), confirming the settings flow works end to end.

All green. ✅

@borisschlosser
borisschlosser marked this pull request as ready for review July 3, 2026 16:57
@borisschlosser
borisschlosser requested a review from a team as a code owner July 3, 2026 16:57

@iwahbe iwahbe left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Less code = less bugs 😄

@borisschlosser
borisschlosser added this pull request to the merge queue Jul 6, 2026
Merged via the queue into master with commit aa889ff Jul 6, 2026
235 of 238 checks passed
@borisschlosser
borisschlosser deleted the boris/deployment-settings-edit-drop-encrypt-endpoint branch July 6, 2026 13:35
@i-am-tom i-am-tom mentioned this pull request Jul 8, 2026
@pulumi-bot

Copy link
Copy Markdown
Contributor

This PR has been shipped in release v3.251.0.

pull Bot pushed a commit to makesoftwaresafe/pulumi that referenced this pull request Jul 8, 2026
## 3.251.0 (2026-07-08)

### Features

- [programgen/pcl] Invoke functions declared with multi-argument inputs
using positional arguments in PCL
[pulumi#23571](pulumi#23571)
- [sdkgen] Generate SDKs and programs for extension-parameterized
packages [pulumi#23579](pulumi#23579)
- [engine] Add `TargetSnippets` to deployment options to target snippets
by UUID.

### Bug Fixes

- [cli/display] Prevent plugin debug logs from appearing as raw JSON in
the CLI's output when logging with `--logtostderr`
[pulumi#23633](pulumi#23633)
- [cli] Show a `retain` marker for retain-on-delete resources in
`--diff` output
- [sdk/nodejs] Don't include the version in module paths when
serializing functions when using pnpm
- [cli] Don't miscopy out archives

### Improvements

- [cli/deployment] `pulumi deployment settings` no longer writes the
local `Pulumi.<stack>.deploy.yaml` file: the experimental `init`,
`pull`, `configure`, and `env` subcommands have been removed, and the
CLI no longer calls the deployment-settings encrypt endpoint.
`get`/`edit`/`destroy` continue to manage settings directly in Pulumi
Cloud [pulumi#23480](pulumi#23480)
- [cli/import] Support importing resources under parameterized providers
from a converter or import file
[pulumi#23763](pulumi#23763)
- [cli/import] Support importing resources under extension-parameterized
providers [pulumi#23779](pulumi#23779)
- [engine] Add OpenTelemetry spans to the StackReference read path so
performance traces can pinpoint slow snapshot fetches, deserialization,
or secret decryption
- [cli/deployment] The deployment settings file
(`Pulumi.<stack>.deploy.yaml`) has been removed entirely. The
experimental `pulumi deployment settings push` (`update`/`up`) command,
the `--config-file` flag, and the SDK helpers that read the file have
been removed. Manage deployment settings directly in Pulumi Cloud with
`pulumi deployment settings get`, `edit`, and `destroy`
[pulumi#23480](pulumi#23480)
- [cli/env] Report the new revision number when an environment
definition is updated (e.g. `pulumi env edit`, `pulumi env provider`,
`pulumi env version rollback`)
[pulumi#23799](pulumi#23799)
- [cli/convert] Add an `ecosystem` field to converter mapping requests
so a converter can request mappings for the ecosystem it consumes rather
than its own name [pulumi#23804](pulumi#23804)

### Miscellaneous

- [cli] Add `pulumi neo --debug-update` and `pulumi neo --debug-preview`
flags to investigate a failed update or preview, suggested in the
failure output [pulumi#23499](pulumi#23499)
- [cli/env] Fold the Pulumi ESC engine and CLI into the pulumi/pulumi
monorepo, removing the sdk↔esc Go module cycle. Internal refactor with
no user-facing behavior change; `pulumi env`/`pulumi esc` are
unaffected. [pulumi#23746](pulumi#23746)
sakshichitnis27 added a commit to sakshichitnis27/pulumi that referenced this pull request Oct 24, 2026
The deployment settings init command was removed in pulumi#23480.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants