SlideShare a Scribd company logo
Session
SESSION
Case Study: Creating and Managing a QA
Feature Testing Environment
LED BY
Dan Card
Dan Card
SPEAKER AT ITB2023
Dan Card is a Senior Developer at Ortus Solutions who find pictures of
people with their chin in their hands somewhat pretentious
• Lives just north of Boston
• Has been using CF since around
2004
• Has developed a love of testing
over the past several years
• Sometimes uses frozen Zoom
pictures as headshots
The Goal
We needed an actual formal testing environment
The triggering event was a module using the Adobe Generate Document PDF API. All the tests were passing locally,
everything worked in staging, it had passed QA and then blew up in production. Why?
Local was Windows. Staging was Windows. Production was Linux and the issue was in the direction of the slashes in
our file names. Easily fixed but you never know the other stupid stuff that’s going to trip you up.
The Goal
• Replicate Production as closely as possible
• Be easy to manage or no one would use it
• Pull any branch from any repo to test before things got into
Dev let alone production
• Be entirely self contained
• Rather than risk “merge issues” and ensure a clean test, we
wanted to completely delete the existing files and re-clone
• Able to be blown away and recreated
We needed something which…
The Solution
• Linux Box
• Not on our local system
• Because of the Multi Sites it seemed to be a good use
for Docker
• I didn’t know Linux ( still mostly don’t )
• Wasn’t budgeted
• I had tried to learn Docker several times and it never
“stuck”
• Not too great at git
And The Problems
The Ecosystem
• A React Front end
• A Coldbox API (with Fusion Reactor)
• MSSQL
There are a number of components to the entire system:
What are we creating: High Level
React
ColdBox API
MSSQL Server
What are we creating: Detail
Front End
(JS, React)
name: ninja_app
CommandBox
/ninjaapp
80
API
( Coldbox, Lucee,
Fusion-Reactor )
name: api
MSSQL
name: mssql
Playwright
( JS )
name: playwright
Monitoring Software
( ColdBox, Lucee )
name: siteModel
Containers:
Storage:
Ports:
/api /dataFolder /backupFolder /playwright /siteModel
8081 8082 8083 8084
1434
Apps / Files / Modules: Module:
ecoSystemTesting File: docker-compose.yml
Docker
/build
/envFiles
3 Phases
1. Create and prep the Linux Boxes
2. Create the folder / containers
3. Getting Files and databases onto the Linux box.
Steps to Create: Linux Box
Phase 1: Create the Linux Box
1. Spin up instance on AWS
2. Connect to Instance
3. System Updates
4. Set the version of Java to use
5. Install Git – if needed
6. Install Node
7. Install Yarn
8. Install Docker / Docker Compose
9. Install CommandBox
10.Install ecosystemTesting Module
11.Permissions for scripts
12.Firewall permissions in the AWS security group
At The End Of Step 1: The Linux Box
CommandBox
Apps / Files / Modules: Docker
4 Phases
1. Create and prep the Linux Boxes
2. Create the folder / containers
3. Use the ecosystemTesting module to handle the actual cloning of the sites.
4. Demo it
To the containers!
Steps
Create The Folders and Containers
• Create our folders
• Create the docker-compose file which defined our containers
• CommandBox
• Node / React
• MSSQL
• Create Dockerfiles and additional scripts for the more elaborate installs for MSSQL and JS
• Learn the difference between Start / Build / Stop / Restart / Up
At The End of Step 2: Our Containers
Front End
(JS, React)
name: ninja_app
CommandBox
/ninjaapp
80
API
( Coldbox, Lucee,
Fusion-Reactor )
name: api
MSSQL
name: mssql
Playwright
( JS )
name: playwright
Monitoring Software
( ColdBox, Lucee )
name: siteModel
Containers:
Storage:
Ports:
/api /dataFolder /backupFolder /playwright /siteModel
8081 8082 8083 8084
1434
Apps / Files / Modules: Module:
ecoSystemTesting File: docker-compose.yml
Docker
/build
4 Phases
1. Create and prep the Linux Boxes
2. Create the folder / containers
3. Use the ecosystemTesting module to handle the actual cloning of the sites.
4. Demo it
However, we have no files or content yet!
How Do We Get The Site Files onto the Server?
Create The Folders and Containers
Our Testing instance
ecosystemTesting
module
Basic Steps
Get the content!
• Configure each site 1x
• Source (github etc)
• Username and tokens (remains in the CommandBox config, not in a repo)
• URLs / Folders
• Environment Docs – i.e. .cfconfig and .env files
• At Run Time
• What branch?
• Evergreen?
How Do We Get DB / Schema onto the Server?
Create The Folders and Containers
ecosystemTesting
module
MSSQL
Container
Migrations
QB Schema
Manual Restore
Schema Schema and Data
Configuring The Ecosystem Tool: Project
Get the content!
• `ecosystemTesting configure`
• Project name
• Root Folder
• Source of repos
• Repo login name
• Repo Token
Configuring The Ecosystem Tool: Site
Get the content!
• Essential Items
• Site name
• Repo location (github / git lab)
• Parent branch
• Name of the folder (relative to root of project)
• url
• Port
• Comma delimited list of Files to copy - source:target,source:target
• Comma delimited scripts to run (from CommandBox)
• Name of the Docker container
Refreshing the Ecosystem
Get the content!
• `ecosystemTesting refreshEcoSystem ninja 1 true`
• `!docker-compose restart`  Restarts everything but the js sites will fail
• `!docker-compose up –d`  Rebuilds the JS sites and starts them
THAN K YOU
Thank s to our sponsors
Ad

More Related Content

Similar to ITB 2023 Creating and managing a QA focused production-replicating environment for complex sites_Dan Card.pdf (20)

PuppetConf 2017: What’s in the Box?!- Leveraging Puppet Enterprise & Docker- ...
PuppetConf 2017: What’s in the Box?!- Leveraging Puppet Enterprise & Docker- ...PuppetConf 2017: What’s in the Box?!- Leveraging Puppet Enterprise & Docker- ...
PuppetConf 2017: What’s in the Box?!- Leveraging Puppet Enterprise & Docker- ...
Puppet
 
Docker 102 - Immutable Infrastructure
Docker 102 - Immutable InfrastructureDocker 102 - Immutable Infrastructure
Docker 102 - Immutable Infrastructure
Adrian Otto
 
Containerization using docker and its applications
Containerization using docker and its applicationsContainerization using docker and its applications
Containerization using docker and its applications
Puneet Kumar Bhatia (MBA, ITIL V3 Certified)
 
Containerization using docker and its applications
Containerization using docker and its applicationsContainerization using docker and its applications
Containerization using docker and its applications
Puneet Kumar Bhatia (MBA, ITIL V3 Certified)
 
DevOPS training - Day 2/2
DevOPS training - Day 2/2DevOPS training - Day 2/2
DevOPS training - Day 2/2
Vincent Mercier
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2
Docker, Inc.
 
OpenStack Summit
OpenStack SummitOpenStack Summit
OpenStack Summit
Docker, Inc.
 
Docker - A Container Full of Chocolatey
Docker - A Container Full of ChocolateyDocker - A Container Full of Chocolatey
Docker - A Container Full of Chocolatey
Chocolatey Software
 
Lessons Learned Running Hadoop and Spark in Docker Containers
Lessons Learned Running Hadoop and Spark in Docker ContainersLessons Learned Running Hadoop and Spark in Docker Containers
Lessons Learned Running Hadoop and Spark in Docker Containers
BlueData, Inc.
 
Building Top-Notch Androids SDKs
Building Top-Notch Androids SDKsBuilding Top-Notch Androids SDKs
Building Top-Notch Androids SDKs
relayr
 
Webinar Docker Tri Series
Webinar Docker Tri SeriesWebinar Docker Tri Series
Webinar Docker Tri Series
Newt Global Consulting LLC
 
Docker - A container full of Chocolatey
Docker - A container full of ChocolateyDocker - A container full of Chocolatey
Docker - A container full of Chocolatey
Stefan Scherer
 
Rapid Android Application Security Testing
Rapid Android Application Security TestingRapid Android Application Security Testing
Rapid Android Application Security Testing
Nutan Kumar Panda
 
A Survey of Container Security in 2016: A Security Update on Container Platforms
A Survey of Container Security in 2016: A Security Update on Container PlatformsA Survey of Container Security in 2016: A Security Update on Container Platforms
A Survey of Container Security in 2016: A Security Update on Container Platforms
Salman Baset
 
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
dotCloud
 
Continuous Integration with Docker on AWS
Continuous Integration with Docker on AWSContinuous Integration with Docker on AWS
Continuous Integration with Docker on AWS
Andrew Heifetz
 
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UKStorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
StorageOS
 
Windows container security
Windows container securityWindows container security
Windows container security
Docker, Inc.
 
Docker Runtime Security
Docker Runtime SecurityDocker Runtime Security
Docker Runtime Security
Sysdig
 
SQL Server in DevOps Town Hall Webinar
SQL Server in DevOps Town Hall WebinarSQL Server in DevOps Town Hall Webinar
SQL Server in DevOps Town Hall Webinar
Travis Wright
 
PuppetConf 2017: What’s in the Box?!- Leveraging Puppet Enterprise & Docker- ...
PuppetConf 2017: What’s in the Box?!- Leveraging Puppet Enterprise & Docker- ...PuppetConf 2017: What’s in the Box?!- Leveraging Puppet Enterprise & Docker- ...
PuppetConf 2017: What’s in the Box?!- Leveraging Puppet Enterprise & Docker- ...
Puppet
 
Docker 102 - Immutable Infrastructure
Docker 102 - Immutable InfrastructureDocker 102 - Immutable Infrastructure
Docker 102 - Immutable Infrastructure
Adrian Otto
 
DevOPS training - Day 2/2
DevOPS training - Day 2/2DevOPS training - Day 2/2
DevOPS training - Day 2/2
Vincent Mercier
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2
Docker, Inc.
 
Docker - A Container Full of Chocolatey
Docker - A Container Full of ChocolateyDocker - A Container Full of Chocolatey
Docker - A Container Full of Chocolatey
Chocolatey Software
 
Lessons Learned Running Hadoop and Spark in Docker Containers
Lessons Learned Running Hadoop and Spark in Docker ContainersLessons Learned Running Hadoop and Spark in Docker Containers
Lessons Learned Running Hadoop and Spark in Docker Containers
BlueData, Inc.
 
Building Top-Notch Androids SDKs
Building Top-Notch Androids SDKsBuilding Top-Notch Androids SDKs
Building Top-Notch Androids SDKs
relayr
 
Docker - A container full of Chocolatey
Docker - A container full of ChocolateyDocker - A container full of Chocolatey
Docker - A container full of Chocolatey
Stefan Scherer
 
Rapid Android Application Security Testing
Rapid Android Application Security TestingRapid Android Application Security Testing
Rapid Android Application Security Testing
Nutan Kumar Panda
 
A Survey of Container Security in 2016: A Security Update on Container Platforms
A Survey of Container Security in 2016: A Security Update on Container PlatformsA Survey of Container Security in 2016: A Security Update on Container Platforms
A Survey of Container Security in 2016: A Security Update on Container Platforms
Salman Baset
 
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
Write Once and REALLY Run Anywhere | OpenStack Summit HK 2013
dotCloud
 
Continuous Integration with Docker on AWS
Continuous Integration with Docker on AWSContinuous Integration with Docker on AWS
Continuous Integration with Docker on AWS
Andrew Heifetz
 
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UKStorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
StorageOS, Storage for Containers Shouldn't Be Annoying at Container Camp UK
StorageOS
 
Windows container security
Windows container securityWindows container security
Windows container security
Docker, Inc.
 
Docker Runtime Security
Docker Runtime SecurityDocker Runtime Security
Docker Runtime Security
Sysdig
 
SQL Server in DevOps Town Hall Webinar
SQL Server in DevOps Town Hall WebinarSQL Server in DevOps Town Hall Webinar
SQL Server in DevOps Town Hall Webinar
Travis Wright
 

More from Ortus Solutions, Corp (20)

Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
I am afraid of no test! The power of BDD
I am afraid of no test! The power of BDDI am afraid of no test! The power of BDD
I am afraid of no test! The power of BDD
Ortus Solutions, Corp
 
BoxLang JVM Language : The Future is Dynamic
BoxLang JVM Language : The Future is DynamicBoxLang JVM Language : The Future is Dynamic
BoxLang JVM Language : The Future is Dynamic
Ortus Solutions, Corp
 
Building Dynamic AWS Lambda Applications with BoxLang
Building Dynamic AWS Lambda Applications with BoxLangBuilding Dynamic AWS Lambda Applications with BoxLang
Building Dynamic AWS Lambda Applications with BoxLang
Ortus Solutions, Corp
 
A Summary of “Out of the Tar Pit” by Jacob Beers
A Summary of “Out of the Tar Pit” by Jacob BeersA Summary of “Out of the Tar Pit” by Jacob Beers
A Summary of “Out of the Tar Pit” by Jacob Beers
Ortus Solutions, Corp
 
Modern Functional Fluent CFML REST by Luis Majano
Modern Functional Fluent CFML REST by Luis MajanoModern Functional Fluent CFML REST by Luis Majano
Modern Functional Fluent CFML REST by Luis Majano
Ortus Solutions, Corp
 
BoxLang DNA - Feature: World-Class Support
BoxLang DNA - Feature: World-Class SupportBoxLang DNA - Feature: World-Class Support
BoxLang DNA - Feature: World-Class Support
Ortus Solutions, Corp
 
ITB 2023 cbq - Jobs And Tasks In the Background - Eric Peterson.pdf
ITB 2023 cbq - Jobs And Tasks In the Background - Eric Peterson.pdfITB 2023 cbq - Jobs And Tasks In the Background - Eric Peterson.pdf
ITB 2023 cbq - Jobs And Tasks In the Background - Eric Peterson.pdf
Ortus Solutions, Corp
 
ITB 2023 - cbElasticSearch Modern Searching for Modern CFML - Jon Clausen.pdf
ITB 2023 - cbElasticSearch Modern Searching for Modern CFML - Jon Clausen.pdfITB 2023 - cbElasticSearch Modern Searching for Modern CFML - Jon Clausen.pdf
ITB 2023 - cbElasticSearch Modern Searching for Modern CFML - Jon Clausen.pdf
Ortus Solutions, Corp
 
ITB 2023 Modernizing the App A tale from the trenches- David Paul Belanger.pdf
ITB 2023 Modernizing the App A tale from the trenches- David Paul Belanger.pdfITB 2023 Modernizing the App A tale from the trenches- David Paul Belanger.pdf
ITB 2023 Modernizing the App A tale from the trenches- David Paul Belanger.pdf
Ortus Solutions, Corp
 
ITB 2023 10 Techniques for writing easy yet stupidly thorough unit tests_Dan ...
ITB 2023 10 Techniques for writing easy yet stupidly thorough unit tests_Dan ...ITB 2023 10 Techniques for writing easy yet stupidly thorough unit tests_Dan ...
ITB 2023 10 Techniques for writing easy yet stupidly thorough unit tests_Dan ...
Ortus Solutions, Corp
 
ITB 2023 Headless eCommerce with CFML - Jon Clausen.pdf
ITB 2023 Headless eCommerce with CFML - Jon Clausen.pdfITB 2023 Headless eCommerce with CFML - Jon Clausen.pdf
ITB 2023 Headless eCommerce with CFML - Jon Clausen.pdf
Ortus Solutions, Corp
 
Crash Course in CSS Grid plus FlexBox - Nolan Erck
Crash Course in CSS Grid plus FlexBox - Nolan ErckCrash Course in CSS Grid plus FlexBox - Nolan Erck
Crash Course in CSS Grid plus FlexBox - Nolan Erck
Ortus Solutions, Corp
 
ITB 2023 - 800 Pounds Gorilla - a Design session for no designers - Jona Lain...
ITB 2023 - 800 Pounds Gorilla - a Design session for no designers - Jona Lain...ITB 2023 - 800 Pounds Gorilla - a Design session for no designers - Jona Lain...
ITB 2023 - 800 Pounds Gorilla - a Design session for no designers - Jona Lain...
Ortus Solutions, Corp
 
ITB 2023 cbPlaywright End-to-end Tests with Playwright and TestBox - Eric Pet...
ITB 2023 cbPlaywright End-to-end Tests with Playwright and TestBox - Eric Pet...ITB 2023 cbPlaywright End-to-end Tests with Playwright and TestBox - Eric Pet...
ITB 2023 cbPlaywright End-to-end Tests with Playwright and TestBox - Eric Pet...
Ortus Solutions, Corp
 
ITB 2023 - The Many Layers of OAuth - Keith Casey .pdf
ITB 2023 - The Many Layers of OAuth - Keith Casey .pdfITB 2023 - The Many Layers of OAuth - Keith Casey .pdf
ITB 2023 - The Many Layers of OAuth - Keith Casey .pdf
Ortus Solutions, Corp
 
ITB 2023 - Chatgpt Box! AI All The Things - Scott Steinbeck.pdf
ITB 2023 - Chatgpt Box! AI All The Things - Scott Steinbeck.pdfITB 2023 - Chatgpt Box! AI All The Things - Scott Steinbeck.pdf
ITB 2023 - Chatgpt Box! AI All The Things - Scott Steinbeck.pdf
Ortus Solutions, Corp
 
ITB 2023 Build Vue Apps Using tdd (Test-Driven Development).pptx
ITB 2023 Build Vue Apps Using tdd (Test-Driven Development).pptxITB 2023 Build Vue Apps Using tdd (Test-Driven Development).pptx
ITB 2023 Build Vue Apps Using tdd (Test-Driven Development).pptx
Ortus Solutions, Corp
 
ITB 2023 - Create as many web sites or web apps as you want - George Murphy.pdf
ITB 2023 - Create as many web sites or web apps as you want - George Murphy.pdfITB 2023 - Create as many web sites or web apps as you want - George Murphy.pdf
ITB 2023 - Create as many web sites or web apps as you want - George Murphy.pdf
Ortus Solutions, Corp
 
ITB 2023 qb, Migration, Seeders. Recipe For Success - Gavin-Pickin.pdf
ITB 2023 qb, Migration, Seeders. Recipe For Success - Gavin-Pickin.pdfITB 2023 qb, Migration, Seeders. Recipe For Success - Gavin-Pickin.pdf
ITB 2023 qb, Migration, Seeders. Recipe For Success - Gavin-Pickin.pdf
Ortus Solutions, Corp
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
I am afraid of no test! The power of BDD
I am afraid of no test! The power of BDDI am afraid of no test! The power of BDD
I am afraid of no test! The power of BDD
Ortus Solutions, Corp
 
BoxLang JVM Language : The Future is Dynamic
BoxLang JVM Language : The Future is DynamicBoxLang JVM Language : The Future is Dynamic
BoxLang JVM Language : The Future is Dynamic
Ortus Solutions, Corp
 
Building Dynamic AWS Lambda Applications with BoxLang
Building Dynamic AWS Lambda Applications with BoxLangBuilding Dynamic AWS Lambda Applications with BoxLang
Building Dynamic AWS Lambda Applications with BoxLang
Ortus Solutions, Corp
 
A Summary of “Out of the Tar Pit” by Jacob Beers
A Summary of “Out of the Tar Pit” by Jacob BeersA Summary of “Out of the Tar Pit” by Jacob Beers
A Summary of “Out of the Tar Pit” by Jacob Beers
Ortus Solutions, Corp
 
Modern Functional Fluent CFML REST by Luis Majano
Modern Functional Fluent CFML REST by Luis MajanoModern Functional Fluent CFML REST by Luis Majano
Modern Functional Fluent CFML REST by Luis Majano
Ortus Solutions, Corp
 
BoxLang DNA - Feature: World-Class Support
BoxLang DNA - Feature: World-Class SupportBoxLang DNA - Feature: World-Class Support
BoxLang DNA - Feature: World-Class Support
Ortus Solutions, Corp
 
ITB 2023 cbq - Jobs And Tasks In the Background - Eric Peterson.pdf
ITB 2023 cbq - Jobs And Tasks In the Background - Eric Peterson.pdfITB 2023 cbq - Jobs And Tasks In the Background - Eric Peterson.pdf
ITB 2023 cbq - Jobs And Tasks In the Background - Eric Peterson.pdf
Ortus Solutions, Corp
 
ITB 2023 - cbElasticSearch Modern Searching for Modern CFML - Jon Clausen.pdf
ITB 2023 - cbElasticSearch Modern Searching for Modern CFML - Jon Clausen.pdfITB 2023 - cbElasticSearch Modern Searching for Modern CFML - Jon Clausen.pdf
ITB 2023 - cbElasticSearch Modern Searching for Modern CFML - Jon Clausen.pdf
Ortus Solutions, Corp
 
ITB 2023 Modernizing the App A tale from the trenches- David Paul Belanger.pdf
ITB 2023 Modernizing the App A tale from the trenches- David Paul Belanger.pdfITB 2023 Modernizing the App A tale from the trenches- David Paul Belanger.pdf
ITB 2023 Modernizing the App A tale from the trenches- David Paul Belanger.pdf
Ortus Solutions, Corp
 
ITB 2023 10 Techniques for writing easy yet stupidly thorough unit tests_Dan ...
ITB 2023 10 Techniques for writing easy yet stupidly thorough unit tests_Dan ...ITB 2023 10 Techniques for writing easy yet stupidly thorough unit tests_Dan ...
ITB 2023 10 Techniques for writing easy yet stupidly thorough unit tests_Dan ...
Ortus Solutions, Corp
 
ITB 2023 Headless eCommerce with CFML - Jon Clausen.pdf
ITB 2023 Headless eCommerce with CFML - Jon Clausen.pdfITB 2023 Headless eCommerce with CFML - Jon Clausen.pdf
ITB 2023 Headless eCommerce with CFML - Jon Clausen.pdf
Ortus Solutions, Corp
 
Crash Course in CSS Grid plus FlexBox - Nolan Erck
Crash Course in CSS Grid plus FlexBox - Nolan ErckCrash Course in CSS Grid plus FlexBox - Nolan Erck
Crash Course in CSS Grid plus FlexBox - Nolan Erck
Ortus Solutions, Corp
 
ITB 2023 - 800 Pounds Gorilla - a Design session for no designers - Jona Lain...
ITB 2023 - 800 Pounds Gorilla - a Design session for no designers - Jona Lain...ITB 2023 - 800 Pounds Gorilla - a Design session for no designers - Jona Lain...
ITB 2023 - 800 Pounds Gorilla - a Design session for no designers - Jona Lain...
Ortus Solutions, Corp
 
ITB 2023 cbPlaywright End-to-end Tests with Playwright and TestBox - Eric Pet...
ITB 2023 cbPlaywright End-to-end Tests with Playwright and TestBox - Eric Pet...ITB 2023 cbPlaywright End-to-end Tests with Playwright and TestBox - Eric Pet...
ITB 2023 cbPlaywright End-to-end Tests with Playwright and TestBox - Eric Pet...
Ortus Solutions, Corp
 
ITB 2023 - The Many Layers of OAuth - Keith Casey .pdf
ITB 2023 - The Many Layers of OAuth - Keith Casey .pdfITB 2023 - The Many Layers of OAuth - Keith Casey .pdf
ITB 2023 - The Many Layers of OAuth - Keith Casey .pdf
Ortus Solutions, Corp
 
ITB 2023 - Chatgpt Box! AI All The Things - Scott Steinbeck.pdf
ITB 2023 - Chatgpt Box! AI All The Things - Scott Steinbeck.pdfITB 2023 - Chatgpt Box! AI All The Things - Scott Steinbeck.pdf
ITB 2023 - Chatgpt Box! AI All The Things - Scott Steinbeck.pdf
Ortus Solutions, Corp
 
ITB 2023 Build Vue Apps Using tdd (Test-Driven Development).pptx
ITB 2023 Build Vue Apps Using tdd (Test-Driven Development).pptxITB 2023 Build Vue Apps Using tdd (Test-Driven Development).pptx
ITB 2023 Build Vue Apps Using tdd (Test-Driven Development).pptx
Ortus Solutions, Corp
 
ITB 2023 - Create as many web sites or web apps as you want - George Murphy.pdf
ITB 2023 - Create as many web sites or web apps as you want - George Murphy.pdfITB 2023 - Create as many web sites or web apps as you want - George Murphy.pdf
ITB 2023 - Create as many web sites or web apps as you want - George Murphy.pdf
Ortus Solutions, Corp
 
ITB 2023 qb, Migration, Seeders. Recipe For Success - Gavin-Pickin.pdf
ITB 2023 qb, Migration, Seeders. Recipe For Success - Gavin-Pickin.pdfITB 2023 qb, Migration, Seeders. Recipe For Success - Gavin-Pickin.pdf
ITB 2023 qb, Migration, Seeders. Recipe For Success - Gavin-Pickin.pdf
Ortus Solutions, Corp
 
Ad

Recently uploaded (20)

How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
Adobe Illustrator Crack | Free Download & Install Illustrator
Adobe Illustrator Crack | Free Download & Install IllustratorAdobe Illustrator Crack | Free Download & Install Illustrator
Adobe Illustrator Crack | Free Download & Install Illustrator
usmanhidray
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
steaveroggers
 
Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025
kashifyounis067
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
Download Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With LatestDownload Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With Latest
tahirabibi60507
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Andre Hora
 
Xforce Keygen 64-bit AutoCAD 2025 Crack
Xforce Keygen 64-bit AutoCAD 2025  CrackXforce Keygen 64-bit AutoCAD 2025  Crack
Xforce Keygen 64-bit AutoCAD 2025 Crack
usmanhidray
 
Salesforce Aged Complex Org Revitalization Process .pdf
Salesforce Aged Complex Org Revitalization Process .pdfSalesforce Aged Complex Org Revitalization Process .pdf
Salesforce Aged Complex Org Revitalization Process .pdf
SRINIVASARAO PUSULURI
 
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
Douwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License codeDouwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License code
aneelaramzan63
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
Adobe Illustrator Crack | Free Download & Install Illustrator
Adobe Illustrator Crack | Free Download & Install IllustratorAdobe Illustrator Crack | Free Download & Install Illustrator
Adobe Illustrator Crack | Free Download & Install Illustrator
usmanhidray
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...
Andre Hora
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
How to Batch Export Lotus Notes NSF Emails to Outlook PST Easily?
steaveroggers
 
Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025
kashifyounis067
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
Download Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With LatestDownload Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With Latest
tahirabibi60507
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Exceptional Behaviors: How Frequently Are They Tested? (AST 2025)
Andre Hora
 
Xforce Keygen 64-bit AutoCAD 2025 Crack
Xforce Keygen 64-bit AutoCAD 2025  CrackXforce Keygen 64-bit AutoCAD 2025  Crack
Xforce Keygen 64-bit AutoCAD 2025 Crack
usmanhidray
 
Salesforce Aged Complex Org Revitalization Process .pdf
Salesforce Aged Complex Org Revitalization Process .pdfSalesforce Aged Complex Org Revitalization Process .pdf
Salesforce Aged Complex Org Revitalization Process .pdf
SRINIVASARAO PUSULURI
 
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
Douwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License codeDouwan Crack 2025 new verson+ License code
Douwan Crack 2025 new verson+ License code
aneelaramzan63
 
Ad

ITB 2023 Creating and managing a QA focused production-replicating environment for complex sites_Dan Card.pdf

  • 1. Session SESSION Case Study: Creating and Managing a QA Feature Testing Environment LED BY Dan Card
  • 2. Dan Card SPEAKER AT ITB2023 Dan Card is a Senior Developer at Ortus Solutions who find pictures of people with their chin in their hands somewhat pretentious • Lives just north of Boston • Has been using CF since around 2004 • Has developed a love of testing over the past several years • Sometimes uses frozen Zoom pictures as headshots
  • 3. The Goal We needed an actual formal testing environment The triggering event was a module using the Adobe Generate Document PDF API. All the tests were passing locally, everything worked in staging, it had passed QA and then blew up in production. Why? Local was Windows. Staging was Windows. Production was Linux and the issue was in the direction of the slashes in our file names. Easily fixed but you never know the other stupid stuff that’s going to trip you up.
  • 4. The Goal • Replicate Production as closely as possible • Be easy to manage or no one would use it • Pull any branch from any repo to test before things got into Dev let alone production • Be entirely self contained • Rather than risk “merge issues” and ensure a clean test, we wanted to completely delete the existing files and re-clone • Able to be blown away and recreated We needed something which…
  • 5. The Solution • Linux Box • Not on our local system • Because of the Multi Sites it seemed to be a good use for Docker • I didn’t know Linux ( still mostly don’t ) • Wasn’t budgeted • I had tried to learn Docker several times and it never “stuck” • Not too great at git And The Problems
  • 6. The Ecosystem • A React Front end • A Coldbox API (with Fusion Reactor) • MSSQL There are a number of components to the entire system:
  • 7. What are we creating: High Level React ColdBox API MSSQL Server
  • 8. What are we creating: Detail Front End (JS, React) name: ninja_app CommandBox /ninjaapp 80 API ( Coldbox, Lucee, Fusion-Reactor ) name: api MSSQL name: mssql Playwright ( JS ) name: playwright Monitoring Software ( ColdBox, Lucee ) name: siteModel Containers: Storage: Ports: /api /dataFolder /backupFolder /playwright /siteModel 8081 8082 8083 8084 1434 Apps / Files / Modules: Module: ecoSystemTesting File: docker-compose.yml Docker /build /envFiles
  • 9. 3 Phases 1. Create and prep the Linux Boxes 2. Create the folder / containers 3. Getting Files and databases onto the Linux box.
  • 10. Steps to Create: Linux Box Phase 1: Create the Linux Box 1. Spin up instance on AWS 2. Connect to Instance 3. System Updates 4. Set the version of Java to use 5. Install Git – if needed 6. Install Node 7. Install Yarn 8. Install Docker / Docker Compose 9. Install CommandBox 10.Install ecosystemTesting Module 11.Permissions for scripts 12.Firewall permissions in the AWS security group
  • 11. At The End Of Step 1: The Linux Box CommandBox Apps / Files / Modules: Docker
  • 12. 4 Phases 1. Create and prep the Linux Boxes 2. Create the folder / containers 3. Use the ecosystemTesting module to handle the actual cloning of the sites. 4. Demo it To the containers!
  • 13. Steps Create The Folders and Containers • Create our folders • Create the docker-compose file which defined our containers • CommandBox • Node / React • MSSQL • Create Dockerfiles and additional scripts for the more elaborate installs for MSSQL and JS • Learn the difference between Start / Build / Stop / Restart / Up
  • 14. At The End of Step 2: Our Containers Front End (JS, React) name: ninja_app CommandBox /ninjaapp 80 API ( Coldbox, Lucee, Fusion-Reactor ) name: api MSSQL name: mssql Playwright ( JS ) name: playwright Monitoring Software ( ColdBox, Lucee ) name: siteModel Containers: Storage: Ports: /api /dataFolder /backupFolder /playwright /siteModel 8081 8082 8083 8084 1434 Apps / Files / Modules: Module: ecoSystemTesting File: docker-compose.yml Docker /build
  • 15. 4 Phases 1. Create and prep the Linux Boxes 2. Create the folder / containers 3. Use the ecosystemTesting module to handle the actual cloning of the sites. 4. Demo it However, we have no files or content yet!
  • 16. How Do We Get The Site Files onto the Server? Create The Folders and Containers Our Testing instance ecosystemTesting module
  • 17. Basic Steps Get the content! • Configure each site 1x • Source (github etc) • Username and tokens (remains in the CommandBox config, not in a repo) • URLs / Folders • Environment Docs – i.e. .cfconfig and .env files • At Run Time • What branch? • Evergreen?
  • 18. How Do We Get DB / Schema onto the Server? Create The Folders and Containers ecosystemTesting module MSSQL Container Migrations QB Schema Manual Restore Schema Schema and Data
  • 19. Configuring The Ecosystem Tool: Project Get the content! • `ecosystemTesting configure` • Project name • Root Folder • Source of repos • Repo login name • Repo Token
  • 20. Configuring The Ecosystem Tool: Site Get the content! • Essential Items • Site name • Repo location (github / git lab) • Parent branch • Name of the folder (relative to root of project) • url • Port • Comma delimited list of Files to copy - source:target,source:target • Comma delimited scripts to run (from CommandBox) • Name of the Docker container
  • 21. Refreshing the Ecosystem Get the content! • `ecosystemTesting refreshEcoSystem ninja 1 true` • `!docker-compose restart`  Restarts everything but the js sites will fail • `!docker-compose up –d`  Rebuilds the JS sites and starts them
  • 22. THAN K YOU Thank s to our sponsors