All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning and Keep a Changelog.
- Adds
seedfarmer --version
to validate package without running explicit command - Added ability to disable env replacement in module parameters
- Updating bootstrap docs with minimum permissions
- Update manifest example module versions
- Update session manager to pass toolchain role region to sts
- Added
-b/--template-branch
parameter toseedfarmer init project
andseedfarmer init module
so it permits to use multiple branches from a single repository. - Added support for downloading modules from archives using HTTPS
- Added generic module deployment roles for modules without modulestack
- Adds validation for trusted principal arns in
seedfarmer bootstrap toolchain
- adds support for npm mirrors to be set
- value replacement from environment variables was only working for the first value
- when a bundle is available on destroy, ignore the path entirely
- adding support for module manifest schema generation
- updates to dependency libraries (from dependabot):
- certifi~=2024.7.4
- boto3~=1.34.140
- botocore~=1.34.140
- pydantic~=2.8.2
- pydantic-core~=2.20.1
- correcting how SeedFarmer stores deployed manifests of previously deployed modules in SSM
- adding support for S3 to store bundles
- see UPGRADE to 4.0.0
- adding seedfarmer version tag to toolchain and deployment roles
- removing python 3.7 support
- adding python 3.12 support
- adding local path of manifests that fail to load to the actual final string printed
- this is already being done, but moving closer to last line of output
- updating idna>=3.7 everywhere
- correcting how SeedFarmer stores deployed manifests of previously deployed modules in SSM
- this is corrected in later releases, but need to support in case not everyone has upgraded
- updating requests library
requests==2.32.0
- updating requests library
requests==2.32.0
- adding universal environment replace in manifests (ref:
${SOMEKEY}
) - adding list recursion of manifests for environment variable replace
- adding support for AWS SecretsManager integration for pypi mirrors
- enforce strict validation for unknown values in manifests
- resolving parameter values via regional / global mappings needs to use account id, not alias
- added support for pypi mirror at module, region and account levels
- added support for npm mirror at module, region and account levels
- refactored code to use ModelDeployObject for ease of implementation
- metadata sourced from file to the os env cannot be parsed if not compliant json, adding code to check for this
- support to generate schema for manifests from CLI (
seedfarmer list schema
) - added commithash persistence support for modules sourced from git
- recorded in module manifest (
commit_hash
) - recorded in module metadata as
SeedFarmerModuleCommitHash
and can be fetched
- recorded in module manifest (
- renaming the threads spawned for deploy / destroy to indicate the module being worked on
- adding detailed docs for CLI parameters
- complete support to delete the seedkit on
seedfarmer destroy
command - adding verbose messaging to session manager and hints to reconcile session issues
- adding info for destroy and list deployments when no deployments found
- refactored git support logic to separate python file
- added verbose messaging related to git issues
- updated
black~=24.3.0
in requirements-dev as per dependabot - updated
werkzeug~=2.3.8
in requirements-dev as per dependabot - removed explicit support for python 3.7
- this was only due to support for black in requirements-dev, but was also removed from setup.py
- loosened restrictions on
typing-requirements
library
- Add schema validation step checking that either
value
orvalue_from
is present for each parameter
- handle errors in metadata support when cannot read from file of codebuild
- ordering of metadata when using helper commands was backwards in
metadata_support.py
- support list of env files using
--env-file
- adding
AwsCodeSeederDeployed
andSeedFarmerDeployed
to all module metadata output for reference (versions used to deploy successfully) - adding
AWS_CODESEEDER_VERSION
andSEEDFARMER_VERSION
to all module environment parameters for reference (versions currently in use) - added
--update-seedkit
support toapply
- SeedFarmer will no longer try to update the seedkit on every request
- Users can override this with the
--update-seedkit
flag in case AWS CodeSeeder has updated the SeedKit
- added
--update-project-policy
support toapply
- SeedFarmer will apply a changeset to the project policy when this flag is set
- adding in workaround for manifests whose char length is greater than SSM limit of 8192 k
- packaging library missing from setup
- updating readthedocs configs as site has changed their requirements
- adding AWS curated codebuild iamge override with opinionated runtimes
- updating pydantic support from 1.X.X to 2.5.3
- adding seedfarmer verions check support with
seedfarmer.yaml
- updating
aws-codeseeder
dependency top 0.11.0
- update
manifests/examples/
to point to an updated release branch - Docs - manifest name description (seed-farmer/docs/source/manifests.md) needed correction
- Docs - added definition of
nameGenerator
for deployment manifest (seed-farmer/docs/source/manifests.md)
- force attach the managed policy to the module role during
destroy
- BREAKING CHANGE*** - the checksum calculation used to trigger module redeploy has changed
- Existing deployed modules may incur a redeployment when going from a previous version
- resolve global/regional parameters when calculating checksum for individual module redeploy
- resolve env parameters when calculating checksum for individual module redeploy
- adding support for module-type spec on init of new module
seedfarmer init module -mt cdkv2
- skip destroy of managed-project-policy if it has roles attached
- if managed-project-policy is in an
*_IN_PROCESS
state, wait 60 seconds and check again- bumps
aws-codeseeder~=0.10.2
- bumps
- updating
urllib~=1.26.17
for http-cookie vulnerability - update
aws-codeseeder~=0.10.1
- corecting urllib hard dependency version
- global and regional param resolution should usse account_alias instead of account_id
- forcing
certifi~=2023.7.22
in all references due to e-Tugra security notification HERE - adding
concurrency
definition to the docs - updating
urllib==1.26.5
in docs/requirements-docs.in - adding in seedkit redeploy information in the
Architecture
section of the docs - allow non-json compliant ssm parameters to be parsed when using module-specifics paths (
/<project>/<dep>/<mod>/databaseinfo
)
- removing pyjq library dependency (installation issues with library)
- raising error if an env variable specified by parameter is not found
- correct the arn generation of inline policy for docker secrets policy
- added support for other partitions (
aws-cn
andaws-us-gov
) - added CLI commands to be used as boilerplate code in deployspec for managing metadata
- updated aws-codeseeder depenedency to 0.10.0
- updated how remote repos are created and pulled to support code-commit
- adding support for gitpath sourced modules based on commit hash
- applying local path eval consistently, updating patch release 2.9.1 chnage for modulestack.yaml eval
- handle exceptions when cloned repo based off tags is in a detached HEAD state
- proper parsing of modulestack.yaml path if sourced from git
- adding qualifier support for bootstrap roles
- adding support to attach policies to target role when bootstrapping
- raise error if a metadata parameter or value_from parameter is not available
- added
forceDependencyRedeploy
feature to codebase
- updated
requests~=2.31.0
in requirements-dev.* to align to dependabot
- implement custom error classes, remove all
exit()
commands - added debug component to print all codebuild urls, regardless of status
- allow for SSM parameter to be either string or json-compliant when a single value
- adding HTTP-Proxy (this is a backward-compatible change)
- adding
seedfarmer list allmoduledata
to fetch all the metadata in a deployment in a single call - adding Network configuration support from SSM and EnvVariables
- refactored deployment_commands
- added python upper limit versioning (to
<3.12
)
- typo in messaging about errored manifest
- removed overriding build image from seedfarmer which defaults the codebuild image to ubuntu 6.0 (which comes from codeseeder as default)
- updated codeseeder to 0.9.0
- adding synth for both bootstrap templates when issuing
--as-target
- addind
dataFile
support for local files and from git - changed default codebuild image base to 3.0.0
- adding support for evaluating the version of SSM and secretsmanager when calculating md5 of code (for redeploy)
- update gitparser version to be 3.1.30
- removed modules as they now are in
https://github.com/awslabs/seedfarmer-modules
- fix for
gitpython
assuming that codecommit repos are unsafe - fix resolution of parameters that have a False value
- fix adding verbose error messages when a manifest cannot be loaded
- fix destroy of modules sourced from git via disparate (non-cached) cli invocations
- Adding support for customer codebuild image overrides. This IS backward-compatible
- Enable use of generic SEEDFARMER prefixed Env Variables in CodeBuild
- Example modules demonstrate use of SEEDFARMER generic Env Variables
- Adding
SeedFarmerProject
SeedFarmerModule
SeedFarmerDeployment
tags to module role - Adding CLI support to synthesize the project policy for modification
- Add
projectPolicyPath
suppprt toseedfarmer.yaml
to allow override of default project policy
- {ProjectName}_PROJECT_NAME and SEEDFARMER_PROJECT_NAME Env Variables added to CodeBuild
- ProjectName Parameter passed to modulestack.yaml CFN Template
- Adding more descriptions in the README with links to read-the-docs
- Fix codebuild role name reference
- Fix support for project names with
-
characters - Error handling around
list
commands when a module is not found - Force seedfarmer to ingore project policies in module projects unless configred to use it
- Safe_load all yaml files (ref: V741010817)
- added VPC support of isolated subnets for
seedkit
- flow thru to codeseeder
- updated manifest docs for isolated subnet support
- implemented Global and Regional Parameter name/value pair lookups
- updated manifest docs for Global and Regional Parameter support
- added module metadata to environment parameters on destroy of module
- forced the
apply
of a deployment to respect thetoolchainRegion
parameter - allow fetch of build info of modules not successfully deployed
- exit code of failed deleted modules changed from
0
to1
- Added intra-group validation of parameter references (prevent any intra-group dependencies)
- Added validation of module deletion to prevent deleting modules that have dependencies
- Added CLI lookup
seedfarmer list dependencies
to provide dependencies of a module - Added CLI lookup
seedfarmer list buildparams
to provide the build env params of an existing build (based on build-id) of a module - Added support for gitignore when getting MD5 for module bundles
- catch exceptions when deleting a deployment but the project policy (stack) is still in use elewhere
- respect group ordering when destroying modules in an existing deployment
- in
module_info
changed alias of import fromstore
tossm
- modifiled bundle md5: removed
checksumdir
, added custom alg to respect directories and gitignore - include module reference info to
Source version
of Codebuild console - added documentation on how to use manifest parameters in the modulestack
- updating version of
aws-codeseeder
dependency to 0.7.0
- updated pip library to
certifi~=2022.12.7
in requirements-dev (ref dependabot #4)
- removed the serialized deployspec from the module manifest ssm to prevent bloat (Issue #186)
- corrected logic for mutating SSM for each module deployment (Issue #188)
- new
generateName
attribute on DeploymentManifest for dynamic creation of the deploymentname
- added documentation for git sourcing of modules
- new --enable-session-timeout and --session-timeout-interval CLI options on apply and destroy
- unable to destroy when module sourced from remote git repository
- seedfarmer apply was not picking up .env at same level as
seedfarmer.yaml
- all
list
functions did not respect the .env path relative toseedfarmer.yaml
- new --env-file CLI parameter on apply and destroy enabling specific declaration of the dotenv file to use
- modified output messaging to use logger instead of bolded print when loading project configs
- exit code on on failed modules changed from 0 1o 1
- changed typo
Deployemnt
toDeployment
everywhere - improved validation and error handling when AccountId is not resolvable from EnvVariable
- truncate and generate unique role and stack names when identifier is too long
- added updated multi-account diagram source for docs
- added support for git repositories as source for module code
- updated architecture diagram and verbiage in docs
- new CLI bootstrap commands for Toolchain and Target accounts
- create SessionManager class for supporting multi-account, multi-region
- bootstrap command support to generate CFN templates for Toolchain and Target accounts
- added deployment for toolchain and target accounts via CFN
- support for cross-account and cross-region deployments
- support for envVariable as valueFrom via .env and python-dotenv
- threaded the priming of accounts on create and destroy
- added destroy of managed polices when destroying deployments
- threaded module info fetching
- added account and region to module list output
- added region and profile support for CLI commands
- added multi-region support for list moduledata
- support ParameterStore and SecretsManager as sources for module parameters (new valueFrom types)
- added region adn profile support for all cli commands where needed
- update DeploymentManifest to support targetAccountMappings and regionMappings
- update ModuleManifest to support targetAccount and targetRegion with defaults
- move deployment level Parameters (dockerCredentialsSecret, permissionsBoundaryName) to mappings
- refactor cli commands/groups to reduce line count in
__main__.py
- moved projectpolicy.yaml into resources/.
- added profile and region support for session in
_session_utils.py
- convertd
session_manager.py
to only use_session_utils.py
- refactored deployment_command objects and signatures for threadding
- fix import failure of seedfarmer top-level module if seedfarmer.yaml doesn't exist
- enable basic CLI functions by lazy loading seedfarmer.yaml and boto3.Session
- ensure get_account_id() and get_regin() always use correct boto3.Session
- ensure bootstrap functions look for roles and cfn templates when updating/deploying roles
- honed back deployment role permissions
- modified session manager to support threadding with the toolchain session
- rename manifest parameter permissionBoundaryArn -> permissionsBoundaryName to align on AWS naming and hide account ids in ARNs
- ensure we find a deploymed manifest when listing/printing module metadata
- updated user-friendly messages for invalid credentials / sessions
- added version support for CLI
seedfarmer version
- updated dependency aws_codeseeder==0.4.0
- corrected import of CodeSeederRuntimeError
- allow CLI to return when exporting moduledata that is None
- remove table and short url for errored codebuild urls
- removed architecture diagram from Git README - it is in
readthedocs
- support logging output and url gereration from codebuild output / codeseeder
- added use of CodeSeederRuntimeError
- added ModuleDeploymentResponse object
- added export of moduledata (metadata) in UNIX format from CLI (--export-local-env)
- moved Parameter support to its own script
- removed arch diagram from README on git repo (the image does not translate on pypi). It is in the readthedocs site
- eventual consistency of IAM policy to module-spcific role (issue 43)
- added example modules for buckets and networking
- use HTTPS instead off SSH for git cloning
- feature - added CLI ability to list deployspec of deployed module
- feature - added CLI ability to store new deployspec of deployed module
- change - enforce runtime versions of CodeSeeder
- lock versions in requirements-dev.in
- updating CLI output to discern changes to manifest, intended deployment
- lazy-load seedkit (version 0.3.2 of codeseeder)
- improve logging messages from codeseeder
- align message output / tables listing modules requested, modified, deleted for deployment
- update repo for project initialization
- update repo for module initalizaton
- optimize intialization (remove interactive input, require seedfarmer.yaml)
- initial commit and release of public SeedFarmer