All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
runway.cfngin.cfngin.CFNgin
class (can also be imported asrunway.cfngin.CFNgin
)runway.cfngin.context.Context.get_session()
method for creating a boto3 session using the correct AWS credentialsenvironment
andregion
as common parameters for cloudformation modules so they do not need to be defined- pulled from the Runway context object
get_session
can now accept AWS credentials when creating a thread-safe session- Runway environment variable options to pull from
self.env_var
instead ofos.environ
- deprecated the
run-stacker
command - deprecated the use
get_session
directly when credentials are in environment variables - deprecated
runway.cfngin.util.get_config_directory()
which was only used for the aws_lambda hook. - deprecated Stacker CLI components
1.4.4 - 2020-02-28
- explicitly pass
provider
as a kwarg for resolving complex variable types - error message raised when
var
lookup query is not in variables now includes the query variables
is now passed from the config file to theVariablesDefinition
as intended
1.4.3 - 2020-02-25
- CFN variable value lookup regression
RUNWAY_MAX_CONCURRENT_MODULES
configuration via environment variableRUNWAY_MAX_CONCURRENT_REGIONS
configuration via environment variable
1.4.2 - 2020-02-21
runway.cfngin.commands.__init__
import of__version__
through the stacker shimstacker.variables
import error by adding a shim torunway.variables
1.4.1 - 2020-02-20
stacker.__version__
check when shimmed to CFNgin- npm install on older nodejs versions
1.4.0 - 2020-02-18
- Add static site examples for React & Angular
- variable resolution in the runway config file
- uses lookups to resolve value
- resolves from environment variables, variables file, or variables definition
- lookups can take arguments in addition to a query
- parsing is part of the base class to standardize syntax
- used to provide default values if the query fails and/or transform the data
- only resolvable in specific areas of the config file (see docs for details)
- some environment variables can only be used during processing of a module since they are set during processing
- uses lookups to resolve value
variables
top-level directive to the runway config file- explicitly define the path/name to a variables file instead of using the default path/names
- define variables directly in the runway config file
- if this is used with a variables file, what is defined in the runway config takes precedence
parameters
directive for modules and deployments- predecessor to
environments.$DEPLOY_ENVIRONMENT
map
- predecessor to
- Add
args
option for serverless module to pass additional arguments/option to the serverless command
- install now requires
pyhcl~=0.4
which is being used in place of the embedded copy runway.embedded.stacker
is nowrunway.cfngin
- imports of stacker by anything run/deployed by runway will be redirected to
runway.cfngin
- e.g.
from stacker.blueprints.base import Blueprint
will act asfrom runway.cfngin.blueprints.base import Blueprint
.cfn
modules no longer requiredeployments[].environments.$DEPLOY_ENVIRONMENT
to be deployed when opting to not use a$DEPLOY_ENVIRONMENT-$AWS_REGION.env
file if variables/lookups are used- modules no longer require
deployments[].environments.$DEPLOY_ENVIRONMENT
to be deployed when opting to not use an environment specific variables file (.e.g$DEPLOY_ENVIRONMENT-$AWS_REGION.env
) ifparameters
are used. environments
key now acts as an explict toggle (with a booleon value per environment name, string of$ACCOUNT_ID/$REGION
, or list of strings) for deploying modules to an environment- support old functionallity retained for the time being by merging into
parameters
- support old functionallity retained for the time being by merging into
- embedded
hcl
- python 2.6 support for
PyYAML
andcfn_flip
dependencies
- pinned
zipp
sub dependency to~=1.0.0
to retain support for python 3.5 PyYAML
dependency is now>=4.1,<5.3
to match the top-end of newer versions ofawscli
NoSuchBucket
duringPutBucketEncryption
when sls tries to create apromotezip
bucketparallel_regions
causing subsequent deployments to be skipped
1.3.7 - 2020-01-07
- pinned
pyhcl
to<0.3.14
0.3.14
vendored ply instead of having it as a dependency which breaks our embedded, patched copy
1.3.6 - 2019-12-28
- Correct detection of Serverless Framework projects with a JS config file
1.3.5 - 2019-12-19
- Updated
sls-py
sample to work properly w/ python plugin static caching - Updated
k8s-tf
sample:- Python 2 compatibility for cert certificate script
- kubeconfig file is now updated/recreated automatically
- Updated
k8s-tf
sample:- Moved worker nodes to EKS node group
1.3.4 - 2019-12-18
- Fixed multi-stack CDK apps
- Allow single-binary use of bundled yamllint
DEPLOY_ENVIRONMENT
is available to all module deployments as an environment variable- if it does not exist in the current environment, value is derived from branch or directory name
- Updated static site CFN template to use node v10 for path rewrite lambda
- embedded stacker will not resolve dependencies for
locked
stacks when they rely on other stacks- accepted upstream in cloudtools/stacker#746
1.3.3 - 2019-11-26
- Updated
runway test
error message to give direction on next steps when no tests are defined
1.3.2 - 2019-11-22
run-python
subcommand now supports most python files
1.3.1 - 2019-11-19
- Deployment selection regression from v1.3
1.3.0 - 2019-11-15
gen-sample cdk-py
now correctly generates a sample instead of trying to copy files that don't exist
- parallel region execution
deployments[].regions.parallel[]
similar to parallel modules ORdeployments[].parallel_regions[]
which is what the above translates to- cannot use parallel and non-parallel regions in the same deployment
- requires
CI
mode and python >3
--tag
docopt option to plan and updated docs- the backend already supports/handles this option. now docopt will allow it to be provided.
1.2.0 - 2019-11-12
- Terraform list/map variables can now be provided via runway.yml environment values
- Updated python serverless sample generator to py3
- Better gen-sample output of available sample generators
1.1.0 - 2019-10-31
- Pre-module environment-variable overrides
1.0.3 - 2019-10-30
- Python 2 install
1.0.1 - 2019-10-30
- npm-based install (org-scoped package error)
1.0.0 - 2019-10-30
- Fix cross-platform subprocess execution (e.g. yarn specified without a file extension in staticsite build_steps)
- Better error messages for subprocess commands that fail to run
- cloudformation modules now ignore
docker-compose.yml
in the root of the module directory diff
run against CloudFormation modules will now correctly handle missing/dependent stacks- Environment detection from git branches will now fail gracefully when in a detached-HEAD state
- run-python & run-stacker commands (for single-binary compatibility)
- Custom error responses support for static sites
--tag <tag>...
option for deploy/destroy- select modules based on a list of tags applied in the runway file (ex.
deployments[].modules[].tags[]
) - can be used to construct a list of tags a module must have to be selected
- select modules based on a list of tags applied in the runway file (ex.
- Terraform backend lookup via SSM params
- class for handling the runway config file that warns on invalid keys
- new top level
tests
to the runway config for user defined tests (cfn-lint, script, and yamllint) - alternative runway config file name
runway.yaml
- run-aws command (for awscli use in single-binary mode)
- tfenv and kbenv commands (for installing terraform/kubectl prior to a runway deployment)
- envvars command (for setting shell variables from environment variables defined in runway.yml)
- Kubernetes support (for kustomize-organized configurations)
- Parallel module execution
- single-binary build and the pipeline to support it
- serverless framework zip promotion support (e.g. build app once, reuse in multiple environments automatically)
- default tests. trying to run the test command with no tests defined will now result in an error.
- chef, flake8, pylint, and stacker blueprint tests (for single-binary compatibility)
SKIP_TF_GET
environment variable option for Terraform modulesgitclean
subcommand (rarely used and functionality is trivial to replicate in other scripts)
- Terraform initialization should be considerably faster via use of
init --reconfigure
- Updated CDK typescript sample generator to v1 syntax
- Terraform variables from runway.yml passed as environment variables (fixes hashicorp/terraform#19424 (comment))
- CDK/Serverless
npm ci
skip option (formerlyskip-npm-ci
) moved to module options - Top-level & deployment options now consistently documented with underscores (e.g.
account_id:
vsaccount-id:
).
0.47.1 - 2019-07-19
- Workaround PyHCL error on empty files
0.47.0 - 2019-07-19
- Terraform 0.12 support
0.46.6 - 2019-07-08
- requirement for
pydocstyle<=3.0.0
0.46.5 - 2019-06-04
- Fix PyYAML dependency issue on new installs
- Serverless string handling cosmetic error during destroy
0.46.4 - 2019-05-16
- Add CAPABILITY_AUTO_EXPAND capability to CFN deployments for macro support
0.46.3 - 2019-05-15
- Stop troposphere deprecation warnings on 2.4.2+
- Re-add
terraform init
execution after workspace switches- This appears to be required to ensure all plugins are downloaded
0.46.2 - 2019-05-13
- Better error handling during Terraform downloads
0.46.1 - 2019-05-01
- Terraform platform being incorrectly detected on Windows
0.46.0 - 2019-04-20
- In-app Terraform management (no longer needs to be downloaded separately)
- Terraform backend config lookup from CloudFormation
- Fix Terraform module not detecting backend config changes
- Remove unnecessary
terraform init
executions after workspace switches - Catch failed
terraform init
executions on subsequent plan/deploys
- Add warning about incorrect AWS_PROFILE environment variable usage with Serverless/CDK
0.45.4 - 2019-04-13
- Stacker
cleanup_s3
hookbucket_name
option
- Add warning about missing tfenv on Windows
0.45.3 - 2019-04-10
- Fixed CFN module detection with no env files
0.45.2 - 2019-04-08
- Update stacker to v1.7
0.45.1 - 2019-04-03
- Correct test command invocation bug introduced in 0.45
0.45.0 - 2019-04-02
- Add optional deployment names
- Update TypeScript CDK sample generator
- Cleanup command class code
- Support CDK context values
- Python CDK sample generator
- C# CDK sample generator
- Support terraform sample generator use directly from git master
0.44.3 - 2019-03-26
- Ensure PyYaml.load is not used (work around CVE-2017-18342)
0.44.2 - 2019-03-21
- Fixed module config options completely overriding deployment options
- Options will now be deeply merged, allowing selective overrides per-module
0.44.1 - 2019-03-16
- Corrected bug in module selection
0.44.0 - 2019-03-11
- Output environment message only once on startup
- Improve deployment progress messages
0.43.0 - 2019-03-07
- Add module_options deployment parameter for shared module options
- Support Terraform backend config via Runway module options
0.42.0 - 2019-03-06
- Correct install issue with latest PyYAML beta release
- New Serverless Typescript sample module template
0.41.2 - 2019-03-05
- Catch invalid deployment section input
0.41.1 - 2019-02-28
- Correct Terraform workspace creation/selection with custom backend keys
0.41.0 - 2019-02-22
- Correct Terraform workspace creation/selection with custom backend keys
- Update embedded stacker to v1.6 w/ Jinja2 templating
0.40.1 - 2019-01-15
- Fixed staticsite module use with troposphere 2.4+
0.40.0 - 2019-01-11
- Optional cfn-lint template checking
- Removed check for python blueprint execute status
- This doesn't really fit with current recommendation to execute environments under pipenv
0.39.1 - 2018-12-28
- Remove default yamllint truthy check to allow yes/no values
0.39.0 - 2018-12-27
- CFN SSM parameter types
0.38.2 - 2018-12-21
- Support
.yamllint
filename (in addition to.yamllint.yml
) for yamllint customization
0.38.1 - 2018-12-19
- Additional Windows npm/npx command fixes
0.38.0 - 2018-12-19
- Additional Windows npm/npx command fixes
- Incorporate stacker typo & stack rollback fixes
0.37.2 - 2018-12-19
- Fix file detection on Windows (find
npm.cmd
)
0.37.1 - 2018-12-11
- Fix embedded stacker aws_lambda hook file permissions
0.37.0 - 2018-12-03
- New
init
command for generating runway.yml
- Updated cfn gen-sample to deploy tf state bucket (matching stacker sample)
0.36.0 - 2018-11-21
- Documentation cleanup
- New staticsite_lambda_function_associations Static Site module option
0.35.3 - 2018-11-16
- Add egg files to source packaging (i.e. fix easy_install installs)
0.35.2 - 2018-11-05
- Improve approval resiliency on CFN stack updates (Stacker #674)
0.35.1 - 2018-11-01
- Added error message when a deployment specifies no regions
0.35.0 - 2018-11-01
- CloudFormation modules can now locally reference other CloudFormation modules
0.34.0 - 2018-10-24
- CloudFormation config deployments will now log the region to which they are deployed
- Embedded embedded stacker to v1.5
0.33.0 - 2018-10-09
- Environment variable values can now be specified as relative or absolute paths (via yaml lists) in addition to regular strings
0.32.0 - 2018-10-08
- Added per-environment, per-deployment environment variable values
0.31.2 - 2018-10-04
- Fixed stacker execution in virtualenvs on Windows
0.31.1 - 2018-10-03
- Fixed executable detection on Windows
0.31.0 - 2018-10-01
- Add clear logging of each module being processed
0.30.0 - 2018-10-01
- Add AWS CDK support
- Destroys on Serverless modules will no longer exit code 1 if the destroy has been run previously.
0.29.6 - 2018-09-24
- Fix
current_dir
deployment option
0.29.5 - 2018-09-19
- Re-initialize Terraform modules after workspace switching (ensure providers are downloaded)
0.29.4 - 2018-09-18
- Avoid error when assume-role config does not specify a role for the current environment
0.29.3 - 2018-09-04
- Update dependencies to prevent pip errors
0.29.2 - 2018-09-04
- Fixed skip-npm-ci option
0.29.1 - 2018-09-04
- Update embedded stacker to fix interactive CFN stack updates with empty string parameters
0.29.0 - 2018-08-28
- Static sites archives will now be automatically pruned (keeping only the 15 latest)
0.28.0 - 2018-08-27
- Static sites can now use Lambda@Edge to support default directory indexes (e.g. example.org/foo/)
- Fixed stacker git remote package support on Python 3
- Static site modules will no longer error when an environment config is missing
0.27.1 - 2018-08-21
- Fixed module options regression introduced in v0.25
0.27.0 - 2018-08-20
- Support SSM Parameters for static site module ACM cert ARN lookups
0.26.0 - 2018-08-20
- Basic documentation for gen-sample commands
- Update Stacker sample module with Terraform-supporting template
0.25.0 - 2018-08-17
- Allow environments to be specified at top level of deployment
0.24.0 - 2018-08-17
- Additional Python 3 fixes (check_output bytes -> str decoding)
- Static website deployment module
- Module options in runway.yaml (or runway.module.yaml in a module)
- These can be used to make Terraform, Serverless, and CloudFormation (Stacker) variable/environment files optional.
- Only use
npm ci
whenCI
environment variable is set
0.23.3 - 2018-08-08
- Sync v0.23.2 change w/ upstream patch
0.23.2 - 2018-08-08
- Fixed CloudFormation file lookups (Stacker issue #645)
0.23.1 - 2018-08-07
- Fixed CFN stack deployments with unspecified parameters (UsePreviousValue)
0.23.0 - 2018-08-06
- Python 3 support
- Updated embedded Stacker to v1.4
0.22.3 - 2018-08-03
- Suppress runway stacktraces when terraform setup commands fail
0.22.2 - 2018-07-27
- Skip attempt at pylint during preflight when no python files are detected
0.22.1 - 2018-07-27
- Adding debugging statements prior to pylint runs
0.22.0 - 2018-07-24
- It is now possible to disable pylint error checks in a custom .pylintrc
- Pylint is now only instantiated one for all file checks
- This fixes duplicate code checking and should greatly speed up tests
- Added reference .pylintrc to templates
0.21.0 - 2018-07-19
- Debug logging now properly invoked across all commands
- CFN deployments run in debug mode will display the exact Stacker command being run
0.20.7 - 2018-07-16
- Restrict pylint version dependency to match Runway's Python 2 requirement
0.20.5 - 2018-06-25
- Add prompt before initiating
destroy
when only one deployment configured
0.20.4 - 2018-06-25
- Suppress stacktrace when stacker/terraform/serverless fail
- They provide their own error messages/stacktrace; runway errors just obfuscate them
- Fix 0.20.1 regression of global stacker install use (instead of embedded version)
0.20.3 - 2018-06-13
- Fix stacker invocation error introduced in v0.20.1
0.20.1 - 2018-06-13
- Multiple CFN modules can now use the same remote Stacker package at different versions
- Previously, the first module to load a remote package (e.g. stacker_blueprints at tag v1.0.3) would have that tagged version stuck for the rest of the runway deployment. Now, subsequent modules can specify other tags/commits/etc of the same remote package.
0.20.0 - 2018-06-11
- Add
duration
option to assume role operations
0.19.0 - 2018-06-08
- Remove duplicate stacker logging output
- Bypass CFN blueprint file execution mode check on Windows
- Update embedded stacker to v1.3
- Add stacker as a requirement of runway
- This should provide a better experience for user IDEs when editing stacker blueprints
0.18.0 - 2018-06-05
- Add
.terraform-version
file to terraform sample module
0.17.0 - 2018-05-23
- Add
skip-npm-ci
deployment option
0.16.0 - 2018-05-23
- Add
env/
directory option for SLS variable files
0.15.3 - 2018-05-17
- Set AWS_REGION environment var in addition to AWS_DEFAULT_REGION for modules.
0.15.2 - 2018-05-17
- Fix
stacker-runway
command error on importing Stacker before syspath update
0.15.1 - 2018-05-17
- Allow use of
whichenv
command in module directories
0.15.0 - 2018-05-17
- Add
whichenv
command
0.14.3 - 2018-05-14
- Properly reverse order of CFN stack config files during dismantle
0.14.2 - 2018-05-03
- Sync stacker invocation w/ upstream stacker script
0.14.1 - 2018-04-30
- Corrected 0.14 error causing yamllint to not run
0.14.0 - 2018-04-24
- Serverless modules no longer require a
sls
script - CloudFormation modules will no longer treat hidden files (files prefixed with a period) as stack configuration files (i.e.
.gitlab-ci.yml
will be ignored)
0.13.0 - 2018-04-23
- Flake8 now correctly exits non-zero on errors
- Add support for environment
.flake8
config files
0.12.3 - 2018-04-16
- Fix stacker-runway command execution
- Fix yamllint including remote terraform modules
0.12.2 - 2018-04-04
- Fix Cloudformation environment file name options (now correctly supports ENV-REGION.env & ENV.env)
0.12.1 - 2018-04-02
- Rename
account-id
andaccount-alias
to matchassume-role
hyphen use
0.12.0 - 2018-04-02
- Drop support for generic
backend.tfvars
terraform backend config- Any previous
backend.tfvars
values should be moved into the primary (e.g. main.tf) backend config
- Any previous
- On destroy/dismantle, reverse order of deployments and their contained modules
- Add
account_id
andaccount_alias
deployment config options for account verification - Add support for tfenv
- Update terraform sample template to use a region-specific backend
- Fix Terraform backend initialization when switching backend configs
- Exclude .serverless directory from
runway test/preflight
- Lower botocore logging messages (to pre v0.11.0 levels)
0.11.1 - 2018-03-22
- Fix missed embedded stacker v1.2 script update
0.11.0 - 2018-03-22
- Updated embedded Stacker to v1.2
0.10.0 - 2018-03-21
- Runway now has a
destroy
/dismantle
command for removing deployments
- Fixed errors with embedded
runway-stacker
script not setting the proper sys.path
0.9.1 - 2018-03-15
- Update Terraform sample template to bump aws provider version from ~>v0.1 to ~>v1.0
0.9.0 - 2018-03-15
- Allow per-environment assume-role ARNs.
- Add additional logging messages during
preflight
to clarify checks being performed. - Add yaml & python checking to files at root of env (i.e. for use with
current_dir: true
) - Drop legacy check for 'Makefile.py' executable status
0.8.0 - 2018-03-12
- Change Serverless
sls deploy
run-script to justsls
- This is necessary for the upcoming
destroy
/dismantle
(e.g.sls remove
) support
- This is necessary for the upcoming
- Automatically use
npm ci
if available
- Fixed broken assume-role capability.
- Remove erroneous Serverless
.yaml
variables file extension.
0.7.0 - 2018-03-02
- Make
current_dir
&ignore_git_branch
options work together more intuitively (now doesn't require nested module directories)
0.6.2 - 2018-02-28
- Bump boto3/botocore dependencies to work around pip dependency resolution (removes the need to manually upgrade botocore after installation on Amazon Linux).
0.6.1 - 2018-02-27
- Add helper message when CloudFormation templates are incorrectly placed alongside stack config files.
0.6.0 - 2018-02-26
- Override module-type autodetection when README-recommended module suffixes are used.
0.5.1 - 2018-02-26
- Fix missing colorama runtime dependency for embedded Stacker.
0.5.0 - 2018-02-26
- Include
stacker-runway
script to allow embedded Stacker to be invoked directly.
0.4.2 - 2018-02-26
- Declare explicit setuptools dependency on python < v3.
0.4.1 - 2018-02-23
- Fix changed CFN parameters not being displayed during
runway plan
.