BoxLang 🚀 A New JVM Dynamic Language Learn More...
A tool to configure an ecosystem of multiple projects from multiple repos, typically for a feature testing process.
Frequently in either testing or in a developer set up it is necessary to have several sites co-locate and exist together. This could be a Front end site in Vue, Angular, React or Quasar with a CF or other server side language. These are more likely in different repos. It's also a feasible scenario that someone will need to easily and quickly set up a site which needs to change branches quickly whether it be for QA or other purposes.
Ecosystem Testing makes that fairly straightforward and even includes some built in Docker support. Once configured, the configuration file can be shared to make replicating it easy. It also accomodates
Use CommandBox and install using box install ecosystemTesting
ecosystemTesting configure
Once all the sites are configured you can refresh all or part of the ecosystem.
ecosystemTesting refreshEcosystem _projectname_
This will display a list of the sites in this project.Each time a site is refreshed it follows this cycle:
Ecosystem Testing contains a folder called "envFolder" which can house any files (i.e. .env, .cfconfig etc) which would be overwritten or deleted when a site is pulled but the need for the local configuation doesn't go away. When a site is "refreshed" the contents of the folder are completely deleted to ensure that it is "clean" for the next test. During a site setup, you can specify the files to me copied from this envFolder to the local site.
After the site is pulled (See the section on Life Cycle) the system will loop over the list in the scripts node. These are run from CommandBox but elements outside of CommandBox can be run by putting an ! in front of the command. For example: Example script for a JS site "!yarn install", "!docker rm controlSite", "!docker-compose build controlSite"
To run an external file either use something like recipe
myScript.boxr
, !myScript.bat
or !bash myScript.sh
.
1.0.0 - moved away from storing properties in CommandBox config and into local json files. General cleanup
0.0.83 - changed the obtainFromS3 method to use s3sdk's
downloadObject rather than getObject 0.0.82 - Updated default database
for restoreDB and 0.0.81 - made the parent branch for evergreening an
option at run time 0.0.80 - fixed typo in createDatasource 0.0.79 -
Added commandbox-cbdatasource as dependency; fixed issue in creating
datasource immediately after adding database settings. 0.0.78 - Fixed
problem with binary files being corrupted during the upload to S3
0.0.74 - Added TRY CATCH to the restore db statement 0.0.73 - renamed
variables in restore to make directions clearer. 0.0.70 - Added slash
directions for different OS 0.0.69 - added DB support 0.0.68 - added
force rebuild of JS sites 0.0.67 - post install restart of docker
edited 0.0.65 - better handling for project data for projects which
don't exist 0.0.64 - added post install script to add
config.modules.ecosystemTesting.installed=true 0.0.63 - updated
command namespace to ecosystemTesting 0.0.62 - Fixed path for github
sites; added commandPrefix to add sudo
for linux
installations. 0.0.61 - Scripted an automatic commit message when
evergreening the branch 0.0.60 - fixed typo in error messaging 0.0.59
- really added sudo to ALL linux commands 0.0.58 - added sudo to all
linux commands
$
box install ecosystemTesting