CHANGELOG ========= ## HEAD (Unreleased) - Lock dep ts-node to v8.5.4 [#3733](https://github.com/pulumi/pulumi/pull/3733) - Improvements to `pulumi policy` functionality. Add ability to remove & disable Policy Packs. - Breaking change for Policy which is in Public Preview: Change `pulumi policy apply` to `pulumi policy enable`, and allow users to specify the Policy Group. - Add Permalink to output when publishing a Policy Pack. - Add `pulumi policy ls` and `pulumi policy group ls` to list Policy related resources. ## 1.8.1 (2019-12-20) - Fix a panic in `pulumi stack select`. [#3687](https://github.com/pulumi/pulumi/pull/3687) ## 1.8.0 (2019-12-19) - Update version of TypeScript used by Pulumi to `3.7.3`. [#3627](https://github.com/pulumi/pulumi/pull/3627) - Add support for GOOGLE_CREDENTIALS when using Google Cloud Storage backend. [#2906](https://github.com/pulumi/pulumi/pull/2906) ```sh export GOOGLE_CREDENTIALS="$(cat ~/service-account-credentials.json)" pulumi login gs://my-bucket ``` - Support for using `Config`, `getProject()`, `getStack()`, and `isDryRun()` from Policy Packs. [#3612](https://github.com/pulumi/pulumi/pull/3612) - Top-level Stack component in the .NET SDK. [#3618](https://github.com/pulumi/pulumi/pull/3618) - Add the .NET Core 3.0 runtime to the `pulumi/pulumi` container. [#3616](https://github.com/pulumi/pulumi/pull/3616) - Add `pulumi preview` support for `--refresh`, `--target`, `--replace`, `--target-replace` and `--target-dependents` to align with `pulumi up`. [#3675](https://github.com/pulumi/pulumi/pull/3675) - `ComponentResource`s now have built-in support for asynchronously constructing their children. [#3676](https://github.com/pulumi/pulumi/pull/3676) - `Output.apply` (for the JS, Python and .Net sdks) has updated semantics, and will lift dependencies from inner Outputs to the returned Output. [#3663](https://github.com/pulumi/pulumi/pull/3663) - Fix bug in determining PRNumber and BuildURL for an Azure Pipelines CI environment. [#3677](https://github.com/pulumi/pulumi/pull/3677) - Improvements to `pulumi policy` functionality. Add ability to remove & disable Policy Packs. - Breaking change for Policy which is in Public Preview: Change `pulumi policy apply` to `pulumi policy enable`, and allow users to specify the Policy Group. ## 1.7.1 (2019-12-13) - Fix [SxS issue](https://github.com/pulumi/pulumi/issues/3652) introduced in 1.7.0 when assigning `Output`s across different versions of the `@pulumi/pulumi` SDK. [#3658](https://github.com/pulumi/pulumi/pull/3658) ## 1.7.0 (2019-12-11) - A Pulumi JavaScript/TypeScript program can now consist of a single exported top level function. This allows for an easy approach to create a Pulumi program that needs to perform `async`/`await` operations at the top-level. [#3321](https://github.com/pulumi/pulumi/pull/3321) ```ts // JavaScript module.exports = async () => { } //TypeScript export = async () => { } ``` ## 1.6.1 (2019-11-26) - Support passing a parent and providers for `ReadResource`, `RegisterResource`, and `Invoke` in the go SDK. [#3563](https://github.com/pulumi/pulumi/pull/3563) - Fix go SDK ReadResource. [#3581](https://github.com/pulumi/pulumi/pull/3581) - Fix go SDK DeleteBeforeReplace. [#3572](https://github.com/pulumi/pulumi/pull/3572) - Support for setting the `PULUMI_PREFER_YARN` environment variable to opt-in to using `yarn` instead of `npm` for installing Node.js dependencies. [#3556](https://github.com/pulumi/pulumi/pull/3556) - Fix regression that prevented relative paths passed to `--policy-pack` from working. [#3565](https://github.com/pulumi/pulumi/issues/3564) ## 1.6.0 (2019-11-20) - Support for config.GetObject and related variants for Golang. [#3526](https://github.com/pulumi/pulumi/pull/3526) - Add support for IgnoreChanges in the go SDK. [#3514](https://github.com/pulumi/pulumi/pull/3514) - Support for a `go run` style workflow. Building or installing a pulumi program written in go is now optional. [#3503](https://github.com/pulumi/pulumi/pull/3503) - Re-apply "propagate resource inputs to resource state during preview, including first-class unknown values." The new set of changes have additional fixes to ensure backwards compatibility with earlier code. This allows the preview to better estimate the state of a resource after an update, including property values that were populated using defaults calculated by the provider. [#3327](https://github.com/pulumi/pulumi/pull/3327) - Validate StackName when passing a non-default secrets provider to `pulumi stack init` - Add support for go1.13.x - `pulumi update --target` and `pulumi destroy --target` will both error if they determine a dependent resource needs to be updated, destroyed, or created that was not was specified in the `--target` list. To proceed with an `update/destroy` after this error, either specify all the reported resources as `--target`s, or pass the `--target-dependents` flag to allow necessary changes to unspecified dependent targets. - Support for node 13.x, building with gcc 8 and newer. [#3512] (https://github.com/pulumi/pulumi/pull/3512) - Codepaths which could result in a hang will print a message to the console indicating the problem, along with a link to documentation on how to restructure code to best address it. ### Compatibility - `StackReference.getOutputSync` and `requireOutputSync` are deprecated as they may cause hangs on some combinations of Node and certain OS platforms. `StackReference.getOutput` and `requireOutput` should be used instead. ## 1.5.2 (2019-11-13) - `pulumi policy publish` now determines the Policy Pack name from the Policy Pack, and the the `org-name` CLI argument is now optional. If not specified; the current user account is used. [#3459](https://github.com/pulumi/pulumi/pull/3459) - Refactor the Output API in the Go SDK. [#3496](https://github.com/pulumi/pulumi/pull/3496) ## 1.5.1 (2019-11-06) - Include the .NET language provider in the Windows SDK. ## 1.5.0 (2019-11-06) - Gracefully handle errors when resources use duplicate aliases. - Use the update token for renew_lease calls and update the API version to 5. [#3348](https://github.com/pulumi/pulumi/pull/3348) - Improve startup time performance by 0.5-1s by checking for a newer CLI release in parallel. [#3441](https://github.com/pulumi/pulumi/pull/3441) - Add an experimental `pulumi watch` command. [#3391](https://github.com/pulumi/pulumi/pull/3391) ## 1.4.1 (2019-11-01) - Adds a **preview** of .NET support for Pulumi. This code is an preview state and is subject to change at any point. - Fix another colorizer issue that could cause garbled output for messages that did not end in colorization tags. [#3417](https://github.com/pulumi/pulumi/pull/3417) - Verify deployment integrity during import and issue an error if verification fails. The state file can still be imported by passing the `--force` flag. [#3422](https://github.com/pulumi/pulumi/pull/3422) - Omit unknowns in resources in stack outputs during preview. [#3427](https://github.com/pulumi/pulumi/pull/3427) - `pulumi update` can now be instructed that a set of resources should be replaced by adding a `--replace urn` argument. Multiple resources can be specified using `--replace urn1 --replace urn2`. In order to replace exactly one resource and leave other resources unchanged, invoke `pulumi update --replace urn --target urn`, or `pulumi update --target-replace urn` for short. [#3418](https://github.com/pulumi/pulumi/pull/3418) - `pulumi stack` now renders the stack as a tree view. [#3430](https://github.com/pulumi/pulumi/pull/3430) - Support for lists and maps in config. [#3342](https://github.com/pulumi/pulumi/pull/3342) - `ResourceProvider#StreamInvoke` implemented, will be the basis for streaming APIs in `pulumi query`. [#3424](https://github.com/pulumi/pulumi/pull/3424) ## 1.4.0 (2019-10-24) - `FileAsset` in the Python SDK now accepts anything implementing `os.PathLike` in addition to `str`. [#3368](https://github.com/pulumi/pulumi/pull/3368) - Fix colorization on Windows 10, and fix a colorizer bug that could cause garbled output for resources with long status messages. [#3385](https://github.com/pulumi/pulumi/pull/3385) ## 1.3.4 (2019-10-18) - Remove unintentional console outupt introduced in 1.3.3. ## 1.3.3 (2019-10-17) - Fix an issue with first-class providers introduced in 1.3.2. ## 1.3.2 (2019-10-16) - Fix hangs and crashes related to use of `getResource` (i.e. `aws.ec2.getSubnetIds(...)`) methods, including frequent hangs on Node.js 12. This fixes https://github.com/pulumi/pulumi/issues/3260) and [hangs](https://github.com/pulumi/pulumi/issues/3309). Some less common existing styles of using `getResource` calls are also deprecated as part of this change, and users should see https://www.pulumi.com/docs/troubleshooting/#synchronous-call for details on adjusting their code if needed. ## 1.3.1 (2019-10-09) - Revert "propagate resource inputs to resource state during preview". These changes had a critical issue that needs further investigation. ## 1.3.0 (2019-10-09) - Propagate resource inputs to resource state during preview, including first-class unknown values. This allows the preview to better estimate the state of a resource after an update, including property values that were populated using defaults calculated by the provider. [#3245](https://github.com/pulumi/pulumi/pull/3245) - Fetch version information from the Homebrew JSON API for CLIs installed using `brew`. [#3290](https://github.com/pulumi/pulumi/pull/3290) - Support renaming stack projects via `pulumi stack rename`. [#3292](https://github.com/pulumi/pulumi/pull/3292) - Add `helm` to `pulumi/pulumi` Dockerhub container [#3294](https://github.com/pulumi/pulumi/pull/3294) - Make the location of `.pulumi` folder configurable with an environment variable. [#3300](https://github.com/pulumi/pulumi/pull/3300) (Fixes [#2966](https://github.com/pulumi/pulumi/issues/2966)) - `pulumi update` can now be scoped to update a single resource by adding a `--target urn` or `-t urn` argument. Multiple resources can be specified using `-t urn1 -t urn2`. - Adds the ability to provide transformations to modify the properties and resource options that will be used for any child resource of a component or stack. [#3174](https://github.com/pulumi/pulumi/pull/3174) - Add resource transformations support in Python. [#3319](https://github.com/pulumi/pulumi/pull/3319) ## 1.2.0 (2019-09-26) - Support emitting high-level execution trace data to a file and add a debug-only command to view trace data. [#3238](https://github.com/pulumi/pulumi/pull/3238) - Fix parsing of GitLab urls with subgroups. [#3239](https://github.com/pulumi/pulumi/pull/3239) - `pulumi refresh` can now be scoped to refresh a subset of resources by adding a `--target urn` or `-t urn` argument. Multiple resources can be specified using `-t urn1 -t urn2`. - `pulumi destroy` can now be scoped to delete a single resource (and its dependents) by adding a `--target urn` or `-t urn` argument. Multiple resources can be specified using `-t urn1 -t urn2`. - Avoid re-encrypting secret values on each checkpoint write. These changes should improve update times for stacks that contain secret values. [#3183](https://github.com/pulumi/pulumi/pull/3183) - Add Codefresh CI detection. - Add `-c` (config array) flag to the `preview` command. ## 1.1.0 (2019-09-11) - Fix a bug that caused the Python runtime to ignore unhandled exceptions and erroneously report that a Pulumi program executed successfully. [#3170](https://github.com/pulumi/pulumi/pull/3170) - Read operations are no longer considered changes for the purposes of `--expect-no-changes`. [#3197](https://github.com/pulumi/pulumi/pull/3197) - Increase the MaxCallRecvMsgSize for interacting with the gRPC server. [#3201](https://github.com/pulumi/pulumi/pull/3201) - Do not ask for a passphrase in non-interactive sessions (fix [#2758](https://github.com/pulumi/pulumi/issues/2758)). [#3204](https://github.com/pulumi/pulumi/pull/3204) - Support combining the filestate backend (local or remote storage) with the cloud-backed secrets providers (KMS, etc.). [#3198](https://github.com/pulumi/pulumi/pull/3198) - Moved `@pulumi/pulumi` to target `es2016` instead of `es6`. As `@pulumi/pulumi` programs run inside Nodejs, this should not change anything externally as Nodejs already provides es2016 support. Internally, this makes more APIs available for `@pulumi/pulumi` to use in its implementation. - Fix the --stack option of the `pulumi new` command. ([#3131](https://github.com/pulumi/pulumi/pull/3131) fixes [#2880](https://github.com/pulumi/pulumi/issues/2880)) ## 1.0.0 (2019-09-03) - No significant changes. ## 1.0.0-rc.1 (2019-08-28) - Print a Welcome to Pulumi message for users during interactive logins to the Pulumi CLI. [#3145](https://github.com/pulumi/pulumi/pull/3145) - Filter the list of templates shown by default during `pulumi new`. [#3147](https://github.com/pulumi/pulumi/pull/3147) ## 1.0.0-beta.4 (2019-08-22) - Fix a crash when using StackReference from the `1.0.0-beta.3` version of `@pulumi/pulumi` and `1.0.0-beta.2` or earlier of the CLI. - Allow Un/MashalProperties to reject Asset and AssetArchive types. (partial fix for https://github.com/pulumi/pulumi-kubernetes/issues/737) ## 1.0.0-beta.3 (2019-08-21) - When using StackReference to fetch output values from another stack, do not mark a value as secret if it was not secret in the stack you referenced. (fixes [#2744](https://github.com/pulumi/pulumi/issues/2744)). - Allow resource IDs to be changed during `pulumi refresh` operations - Do not crash when renaming a stack that has never been updated, when using the local backend. (fixes [#2654](https://github.com/pulumi/pulumi/issues/2654)) - Fix intermittet "NoSuchKey" issues when using the S3 based backend. (fixes [#2714](https://github.com/pulumi/pulumi/issues/2714)). - Support filting stacks by organization or tags when using `pulumi stack ls`. (fixes [#2712](https://github.com/pulumi/pulumi/issues/), [#2769](https://github.com/pulumi/pulumi/issues/2769) - Explicitly setting `deleteBeforeReplace` to `false` now overrides the provider's decision. [#3118](https://github.com/pulumi/pulumi/pull/3118) - Fail read steps (e.g. the step generated by a call to `aws.s3.Bucket.get()`) if the requested resource does not exist. [#3123](https://github.com/pulumi/pulumi/pull/3123) ## 1.0.0-beta.2 (2019-08-13) - Fix the package version compatibility checks in the NodeJS language host. [#3083](https://github.com/pulumi/pulumi/pull/3083) ## 1.0.0-beta.1 (2019-08-13) - Do not propagate input properties to missing output properties during preview. The old behavior can cause issues that are difficult to diagnose in cases where the actual value of the output property differs from the value of the input property, and can cause `apply`s to run at unexpected times. If this change causes issues in a Pulumi program, the original behavior can be enabled by setting the `PULUMI_ENABLE_LEGACY_APPLY` environment variable to `true`. - Fix a bug in the GitHub Actions program preventing errors from being rendered in the Actions log on github.com. [#3036](https://github.com/pulumi/pulumi/pull/3036) - Fix a bug in the Node.JS SDK that caused failure details for provider functions to go unreported. [#3048](https://github.com/pulumi/pulumi/pull/3048) - Fix a bug in the Python SDK that caused crashes when using asynchronous data sources. [#3056](https://github.com/pulumi/pulumi/pull/3056) - Fix crash when exporting secrets from a pulumi app [#2962](https://github.com/pulumi/pulumi/issues/2962) - Fix a panic in logger when a secret contains non-printable characters [#3074](https://github.com/pulumi/pulumi/pull/3074) - Check the uniqueness of the project name during pulumi new [#3065](https://github.com/pulumi/pulumi/pull/3065) ## 0.17.28 (2019-08-05) - Retry renaming a temporary folder during plugin installation [#3008](https://github.com/pulumi/pulumi/pull/3008) - Add support for additional Pulumi secrets providers using AWS KMS, Azure KeyVault, Google Cloud KMS and HashiCorp Vault. These secrets providers can be configured at stack creation time using `pulumi stack init b --secrets-provider="awskms://alias/LukeTesting?region=us-west-2"`, and ensure that all encrypted data associated with the stack is encrypted using the target cloud platform encryption keys. This augments the previous choice between using the app.pulumi.com-managed secrets encryption or a fully-client-side local passphrase encryption. [#2994](https://github.com/pulumi/pulumi/pull/2994) - Add `Output.concat` to Python SDK [#3006](https://github.com/pulumi/pulumi/pull/3006) - Add `requireOutput` to `StackReference` [#3007](https://github.com/pulumi/pulumi/pull/3007) - Arbitrary values can now be exported from a Python app. This includes dictionaries, lists, class instances, and the like. Values are treated as "plain old python data" and generally kept as simple values (like strings, numbers, etc.) or the simple collections supported by the Pulumi data model (specifically, dictionaries and lists). - Fix `get_secret` in Python SDK always returning None. - Make `pulumi.runtime.invoke` synchronous in the Python SDK [#3019](https://github.com/pulumi/pulumi/pull/3019) - Fix a bug in the Python SDK that caused input properties that are coroutines to be awaited twice. [#3024](https://github.com/pulumi/pulumi/pull/3024) ### Compatibility - Deprecated functions in `@pulumi/pulumi` will now issue warnings if you call them. Please migrate off of these functions as they will be removed in a future release. The deprecated functions are. 1. `function computeCodePaths(extraIncludePaths?: string[], ...)`. Use the `computeCodePaths` overload that takes a `CodePathOptions` instead. 2. `function serializeFunctionAsync`. Please use `serializeFunction` instead. ## 0.17.27 (2019-07-29) - Fix an error message from the logging subsystem which was introduced in v0.17.26 [#2989](https://github.com/pulumi/pulumi/pull/2997) - Add support for property paths in `ignoreChanges`, and pass `ignoreChanges` to providers [#3005](https://github.com/pulumi/pulumi/pull/3005). This allows differences between the actual and desired state of the resource that are not captured by differences in the resource's inputs to be ignored (including differences that may occur due to resource provider bugs). ## 0.17.26 (2019-07-26) - Add `get_object`, `require_object`, `get_secret_object` and `require_secret_object` APIs to Python `config` module [#2959](https://github.com/pulumi/pulumi/pull/2959) - Fix unexpected provider replacements when upgrading from older CLIs and older providers [pulumi/pulumi-kubernetes#645](https://github.com/pulumi/pulumi-kubernetes/issues/645) - Add *Python* support for renaming resources via the `aliases` resource option. Adding aliases allows new resources to match resources from previous deployments which used different names, maintaining the identity of the resource and avoiding replacements or re-creation of the resource. This was previously added to the *JavaScript* sdk in 0.17.15. [#2974](https://github.com/pulumi/pulumi/pull/2974) ## 0.17.25 (2019-07-19) - Support for Dynamic Providers in Python [#2900](https://github.com/pulumi/pulumi/pull/2900) ## 0.17.24 (2019-07-19) - Fix a crash when two different versions of `@pulumi/pulumi` are used in the same Pulumi program [#2942](https://github.com/pulumi/pulumi/issues/2942) ## 0.17.23 (2019-07-16) - `pulumi new` allows specifying a local path to templates (resolves [#2672](https://github.com/pulumi/pulumi/issues/2672)) - Fix an issue where a file archive created on Windows would contain back-slashes [#2784](https://github.com/pulumi/pulumi/issues/2784) - Fix an issue where output values of a resource would not be present when they contained secret values, when using Python. - Fix an issue where emojis are printed in non-interactive mode. (fixes [#2871](https://github.com/pulumi/pulumi/issues/2871)) - Promises/Outputs can now be directly exported as the top-level (i.e. not-named) output of a Stack. (fixes [#2910](https://github.com/pulumi/pulumi/issues/2910)) - Add support for importing existing resources to be managed using Pulumi. A resource can be imported by setting the `import` property in the resource options bag when instantiating a resource. In order to successfully import a resource, its desired configuration (i.e. its inputs) must not differ from its actual configuration (i.e. its state) as calculated by the resource's provider. - Better error message for missing npm on `pulumi new` (fixes [#1511](https://github.com/pulumi/pulumi/issues/1511)) - Add the ability to pass a customTimeouts object from the providers across the engine to resource management. (fixes [#2655](https://github.com/pulumi/pulumi/issues/2655)) ### Breaking Changes - Defer to resource providers in all cases where the engine must determine whether or not a resource has changed. Note that this can expose bugs in the resources providers that cause diffs to be present even if the desired configuration matches the actual state of the resource: in these cases, users can set the `PULUMI_ENABLE_LEGACY_DIFF` environment variable to `1` or `true` to enable the old diff behavior. https://github.com/pulumi/pulumi/issues/2971 lists the known provider bugs exposed by these changes and links to appropriate workarounds or tracking issues. ## 0.17.22 (2019-07-11) - Improve update performance in cases where a large number of log messages are reported during an update. ## 0.17.21 (2019-06-26) - Python SDK fix for a crash resulting from a KeyError if secrets were used in configuration. - Fix an issue where a secret would not be encrypted in the state file if it was a property of a resource which was used as a stack output (fixes [#2862](https://github.com/pulumi/pulumi/issues/2862)) ## 0.17.20 (2019-06-23) - SDK fix for crash that could occasionally happen if there were multiple identical aliases to the same Resource. ## 0.17.19 (2019-06-23) - Engine fix for crash that could occasionally happen if there were multiple identical aliases to the same Resource. ## 0.17.18 (2019-06-20) - Allow setting backend URL explicitly in `Pulumi.yaml` file - `StackReference` now has a `.getOutputSync` function to retrieve exported values from an existing stack synchronously. This can be valuable when creating another stack that wants to base flow-control off of the values of an existing stack (i.e. importing the information about all AZs and basing logic off of that in a new stack). Note: this only works for importing values from Stacks that have not exported `secrets`. - When the environment variable `PULUMI_TEST_MODE` is set to `true`, the Python runtime will now behave as if `pulumi.runtime.settings._set_test_mode_enabled(True)` had been called. This mirrors the behavior for NodeJS programs (fixes [#2818](https://github.com/pulumi/pulumi/issues/2818)). - Resources that are only 'read' will no longer be displayed in the terminal tree-display anymore. These ended up heavily cluttering the display and often meant that programs without updates still showed a bunch of resources that weren't important. There will still be a message displayed indicating that a 'read' has happened to help know that these are going on and that the program is making progress. ## 0.17.17 (2019-06-12) ### Improvements - docs(login): escape codeblocks, and add object store state instructions [#2810](https://github.com/pulumi/pulumi/pull/2810) - The API for passing along a custom provider to a ComponentResource has been simplified. You can now just say `new SomeComponentResource(name, props, { provider: awsProvider })` instead of `new SomeComponentResource(name, props, { providers: { "aws" : awsProvider } })` - Fix a bug where the path provided to a URL in `pulumi login` is lost are dropped, so if you `pulumi login s3://bucketname/afolder`, the Pulumi files will be inside of `s3://bucketname/afolder/.pulumi` rather than `s3://bucketname/.pulumi` (thanks, [@bigkraig](https://github.com/bigkraig)!). **NOTE**: If you have been logging in to the s3 backend with a path after the bucket name, you will need to either move the .pulumi folder in the bucket to the correct location or log in again without the path prefix to see your previous stacks. - Fix a crash that would happen if you ran `pulumi stack output` against an empty stack (fixes [pulumi/pulumi#2792](https://github.com/pulumi/pulumi/issues/2792)). - Unparented Pulumi `CustomResource`s now support calling `.getProvider(...)` on them. ## 0.17.16 (2019-06-06) ### Improvements - Fixed a bug that caused an assertion when dealing with unchanged resources across version upgrades. ## 0.17.15 (2019-06-05) ### Improvements - Pulumi now allows Python programs to "read" existing resources instead of just creating them. This feature enables Pulumi Python packages to expose ".get()" methods that allow for reading of resources that already exist. - Support for referencing the outputs of other Pulumi stacks has been added to the Pulumi Python libraries via the `StackReference` type. - Add CI system detection for Bitbucket Pipelines. - Pulumi now tolerates changes in default providers in certain cases, which fixes an issue where users would see unexpected replaces when upgrading a Pulumi package. - Add support for renaming resources via the `aliases` resource option. Adding aliases allows new resources to match resources from previous deployments which used different names, maintaining the identity of the resource and avoiding replacements or re-creation of the resource. - `pulumi plugin install` gained a new optional argument `--server` which can be used to provide a custom server to be used when downloading a plugin. ## 0.17.14 (2019-05-28) ### Improvements - `pulumi refresh` now tries to install any missing plugins automatically like `pulumi destroy` and `pulumi update` do (fixes [pulumi/pulumi#2669](https://github.com/pulumi/pulumi/issues/2669)). - `pulumi whoami` now outputs the URL of the currently connected backend. - Correctly suppress stack outputs when serializing previews to JSON, i.e. `pulumi preview --json --suppress-outputs`. Fixes [pulumi/pulumi#2765](https://github.com/pulumi/pulumi/issues/2765). ## 0.17.13 (2019-05-21) ### Improvements - Fix an issue where creating a first class provider would fail if any of the configuration values for the providers were secrets. (fixes [pulumi/pulumi#2741](https://github.com/pulumi/pulumi/issues/2741)). - Fix an issue where when using `--diff` or looking at details for a proposed updated, the CLI might print text like: `<{%reset%}> --outputs:--<{%reset%}>` instead of just `--outputs:--`. - Fixes local login on Windows. Specifically, windows local paths are properly understood and backslashes `\` are not converted to `__5c__` in paths. - Fix an issue where some operations would fail with `error: could not deserialize deployment: unknown secrets provider type`. - Fix an issue where pulumi might try to replace existing resources when upgrading to the newest version of some resource providers. ## 0.17.12 (2019-05-15) ### Improvements - Pulumi now tells you much earlier when the `--secrets-provider` argument to `up` `init` or `new` has the wrong value. In addition, supported values are now listed in the help text. (fixes [pulumi/pulumi#2727](https://github.com/pulumi/pulumi/issues/2727)). - Pulumi no longer prompts for your passphrase twice during operations when you are using the passphrase based secrets provider. (fixes [pulumi/pulumi#2729](https://github.com/pulumi/pulumi/issues/2729)). - Fix an issue where complex inputs to a resource which contained secret values would not be stored correctly. - Fix a panic during property diffing when comparing two secret arrays. ## 0.17.11 (2019-05-13) ### Major Changes #### Secrets and Pluggable Encryption - The Pulumi engine and Python and NodeJS SDKs now have support for tracking values as "secret" to ensure they are encrypted when being persisted in a state file. `[pulumi/pulumi#397](https://github.com/pulumi/pulumi/issues/397)` Any existing value may be turned into a secret by calling `pulumi.secret()` (NodeJS) or `Output.secret(`) (Python). In both cases, the returned value is an output which may be passed around like any other. If this value flows into a resource, the plaintext will not be stored in the state file, but instead It will be encrypted, just like values added to config with `pulumi config set --secret`. You can verify that values are being stored as you expect by running `pulumi stack export`, When values are encrypted in the state file, they appear as an object with a special signature key and a ciphertext property. When outputs of a stack are secrets, `pulumi stack output` will show `[secret]` as the value, by default. You can pass `--show-secrets` to `pulumi stack output` in order to see the actual raw value. - When storing state with the Pulumi Service, you may now elect to use the passphrase based encryption for both secret configuration values and values that are encrypted in a state file. To use this new feature, pass `--secrets-provider passphrase` to `pulumi new` or `pulumi stack init` when you initally create the stack. When you create the stack, you will be prompted for a passphrase (or if `PULUMI_CONFIG_PASSPHRASE` is set, it will be used). This passphrase is used to generate a unique key for your stack, and config values and encrypted state values are encrypted using AES-256-GCM. The key is derived from your passphrase, and while information to re-create it when provided with your passphrase is stored in both the `Pulumi..yaml` file and the state file for your stack, this information can not be used to recover the key. When using this mode, the Pulumi Service is unable to decrypt either your secret configuration values or and secret values in your state file. We will be adding gestures to move existing stacks managed by the service to use passphrase based encryption soon as well as gestures to change the passphrase for an existing stack. ** Note ** Stacks with encrypted secrets in their state files can only be managed by 0.17.11 or later of the CLI. Attempting to use a previous version of the CLI with these stacks will result in an error. Fixes #397 ### Improvements - Add support for Azure Pipelines in CI environment detection. - Minor fix to how Azure repository information is extracted to allow proper grouping of Azure repositories when various remote URLs are used to pull the repository. ## 0.17.10 (2019-05-02) ### Improvements - Fixes issue introduced in 0.17.9 where local-login broke on Windows due to the new support for `s3://`, `azblob://` and `gs://` save locations. - Minor contributing document improvement. - Warnings from `npm` about missing description, repository, and license fields in package.json are now suppressed when `npm install` is run from `pulumi new` (via `npm install --loglevel=error`). - Depend on newer version of gRPC package in the NodeJS SDK. This version has prebuilt binaries for Node 12, which should make installing `@pulumi/pulumi` more reliable when running on Node 12. ## 0.17.9 (2019-04-30) ### Improvements - `pulumi login` now supports `s3://`, `azblob://` and `gs://` paths (on top of `file://`) for storing stack information. These are passed the location of a desired bucket for each respective cloud provider (i.e. `pulumi login s3://mybucket`). Pulumi artifacts (like the `xxx.checkpoint.json` file) will then be stored in that bucket. Credentials for accessing the bucket operate in the normal manner for each cloud provider. i.e. for AWS this can come from the environment, or your `.aws/credentials` file, etc. - The pulumi version update check can be skipped by setting the environment variable `PULUMI_SKIP_UPDATE_CHECK` to `1` or `true`. - Fix an issue where the stack would not be selected when an existing stack is specified when running `pulumi new