We're in the process of automating our test and integration procedures, but sort of hit a roadblock with figuring out the “proper” or “best” way to handle integration tests and browser testing for a product that spans multiple repositories and projects within Bitbucket.
(My apologies for the long-winded question)
We are primarily dev’ing in Java as a webapp and for a REST layer. We also have several nodejs projects, each providing a REST service. We also have a couple of database services. Each service runs in its own Docker container. Here’s a partial overview of our repo layout:
Project 1:
Project 2:
Project 3 (builder):
Currently, our workflow involves:
It’s straight forward to replicate the manual work that we are doing for each repo into Pipelines. The part that I’m wrestling with is figuring out the most appropriate way to automate the work that is done in Repo_3_1.
In terms of release building, my initial thought was to use a branch name for a given release, for example, “Release_19Q3” as the name to use across the repos when building artifacts and packaging the release. So the flow could be:
For release testing, we have integration tests and browser tests (Selenium). In regards to browser testing, current a developer would run all of the product services (Repo_1_1, Repo_2_1, Repo_2_2, etc.) locally and separately kick off the Selenium tests. This is easy because the services just run standalone and the Selenium tests are running separately from the build/run process of the services. The issue I’m running into with Pipelines is since steps are completely independent of each other, I can’t run the services in one step and let that loop while at the same time execute the Selenium tests in a different step. Running everything in one step is also a bit tricky as I’m not totally able to get the Docker in Docker to work correctly (still debugging this). I’ve also toyed with deploying the release to EC2 in one step, and then running the Selenium tests in another step.
I guess my two main questions are:
If you’ve read this far, thank you for you time! Any help or advice would be greatly appreciated!