Comment on page
Change log
- Fix a bug that caused stacks marked as obsolete to be included in undeploy stacks operation if they depended on stacks chosen to be included in the undeploy operation.
Prune obsolete stacks
It's now easier to remove stacks that are no longer needed by marking them as obsolete and then executing the new prune stacks command (#327).
- Reviewing stacks to be deployed or undeployed now shows only the direct dependencies of the effected stacks. Previously, also transitive dependencies where shown, which caused the dependency list to become very long in larger projects with complex dependency graphs.
This release includes only code refactoring and more tests.
Secret parameter resolver
With the new secret parameter resolver, you can use secrets stored in Secrets Manager as inputs for your CloudFormation stacks (#317).
This is an example of how you could use the secret parameter resolver in a stack configuration file:
parameters:
DatabasePassword:
resolver: secret
secretId: my-password-secret
This release includes only code refactoring and more tests.
Extending Takomo project configuration files
It's now possible to make a Takomo project configuration file (takomo.yml) to inherit configuration from another file. Inheriting configuration becomes useful, for example, when you have a monorepo containing multiple Takomo projects, each having its own configuration and sharing some common properties with others. You can place the common properties in a parent file that others then inherit (#316).
You use the
extends
property to make a project configuration file inherit configuration from another file:takomo.yml
extends: ../takomo.parent.yml
Load custom Handlebars helpers from additional directories
You can now specify additional directories from where Takomo loads custom Handlebars helpers by providing one or more directory paths to the
helpersDir
property of Takomo project configuration. The paths can be either absolute or relative to the current project directory (#276).- Fix a bug that caused the stacks deployment order to go wrong in some cases where there was inter-region dependencies between stacks, (#312).
- Improve AWS API invocations and handling of concurrent operations
You can now invoke deploy stacks, deploy targets and bootstrap targets commands with
--expect-no-changes
option which causes the operation to fail if at least one of the targeted stacks would have changes. This is useful, for example, if you have made some clean-up to your local configuration and want to make sure that you have not unintentionally introduced some infrastructure changes (#308).- Previously, Takomo could not update a stack if its status was ROLLBACK_FAILED. Now, if Takomo encounters stacks with ROLLBACK_FAILED status, it attempts to delete the failed stack, and if that succeeds, proceeds to deploy the stack normally).
- Fix texts shown on confirm deployment targets operation prompt
- Previously, Takomo could not update a stack if its status was UPDATE_ROLLBACK_FAILED. Now, if Takomo encounters stacks with UPDATE_ROLLBACK_FAILED status, it attempts to continue rollback, and if that succeeds, proceeds to update the stack normally (#302).
Small improvements.
You can now use a new CLI command to list CloudFormation stacks from accounts that belong to your AWS organization.
List stacks from every account.
tkm org accounts list-stacks --config-set-type standard
List stacks from accounts that belong to the Root/Workload organizational unit.
tkm org accounts list-stacks ROOT/Workload --config-set-type standard
List all stacks from accounts 123456789012 and 210987654321
tkm org accounts list-stacks \
-a 123456789012 210987654321 \
--config-set-type standard
Two new options added to CLI commands that deploy or undeploy stacks from accounts that belong to your AWS organization.
--config-set <config-set>
- Include only this config set.
--command-path <command-path>
- Include only this command path. Using this option requires that also
--config-set
is used.
These options are supported in the following commands:
- Optimize deploying of stacks to minimize AWS API throttling that can occur in larger projects.
- Optimize loading of currently existing stacks to speed up commands: deploy stacks and detect stack drift (#288).
- Optimize loading of currently existing stacks to speed up the list stacks operation in larger projects.
A new property
inferDeploymentTargetNameFromFileName
is now available in the configuration of the filesystem deployment target repository used to load deployment targets from the local filesystem. You can use it to instruct Takomo to infer deployment target names from their configuration files' names. Read more from the docs.- Fix a bug that prevented stack groups to inherit custom validation schemas from their parent.
You can use this new hook to calculate checksums from directories in your project. For example, suppose you have a lambda function with its source code located in some directory. In that case, you can calculate a checksum from the directory and all files located under it and use it to skip the lambda deployment if the sources have not changed. Read more form the docs.
- Fix a bug that caused stdout buffer to exceed when a shell command executed with the cmd resolver produced large amounts of output to the stdout (#279).
You can now implement a custom hook to decide whether the following stack operation should be skipped (#254). For example, you might use this new feature to skip a stack update if your stack has a lambda function, but its source code has not changed.
To indicate that the following stack operation should be skipped, you need to return an output object from your hook that contains
skip: true
.hooks/my-skip-hook.js
const execute = (input) => {
// Some logic that determines if the stack operations should be skipped
const skipIsNeeded = isSkipNeeded()
return {
skip: skipIsNeeded,
success: true,
}
}
// Hook provider that initializes the hook
module.exports = {
type: "example",
init: (props) => ({ execute })
}
- Fix a bug that caused stdout buffer to exceed when a shell command executed with the cmd hook produced large amounts of output to the stdout.
Last modified 1yr ago