5

We are currently starting migrating from monolith application to Microservices. Currently working on creating proper build or deployment chain with Microservices, Docker, Jenkins and GIT

Below is the simple process we are considering for the initial phase. I am hoping that there should be much better tools and processes to stream line these phases transparently. Please advise the best practices and tools to use for improving this flow.

  1. Changes made by developer are merged to Git repository.
  2. Jenkins initiates build and creates docker images tagged with build version
  3. Jenkins deploys the docker images and runs the integration tests
  4. Jenkins registers the docker images
  5. QA performs manual testing. They use a script, which downloads these images, based on the version provided, and sets up the test environment by overriding the properties mentioned in the dockerfile.
  6. we will have similar scripts for UAT
John
  • 443
  • 1
  • 5
  • 11
  • Can you be a little bit more specific? you've already outlined your process and described the high level tools to use and sounds good to me as far as I can see. – Rico Jul 29 '15 at 18:37
  • Thanks for your quick response @Rico. Based on your comments it looks like we are are on right track. I have couple of questions. 1. Do we have any GUI tools which can track the versions in Docker. 2. Does the script which deploys in production, gets the images from our repository. 3. What are the Jenkins plug-ins and other tools we can use while generating images and deploying and testing them through Jenkins. – John Jul 30 '15 at 14:06

1 Answers1

0

I answered a similar question recently, see https://stackoverflow.com/a/34601820/291573 for details.

We're not using Jenkins, but GitLab. Our CI workflow is very generic, so it should be easily adjustable to a Jenkins setup. We are also using docker-compose for development, CI and production deployment to be able to create more complex micro-service setups.

Workflow

  1. Clone application from local repository
  2. Start application make all
  3. Make changes in local development stack
  4. (optional) Run tests in isolated local testing stack make TEST up setup run-tests
  5. Commit (triggers CI)
  6. CI builds images
  7. CI starts isolated stacks (by setting custom COMPOSE_PROJECT_NAMEs) from built images and performs setup operations
  8. CI runs tests (also acceptance tests with Selenium containers)
  9. CI creates reports
  10. CI performs cleanup of isolated stacks
  11. CI tags images and pushes them to a registry (if tests were successful)

Ressources

Community
  • 1
  • 1
schmunk
  • 4,708
  • 1
  • 27
  • 50