Using Jenkins – Build Enviroment

I have a Jenkins server that is responsible for building and deploying all of my microservices. However, each of these microservices needs a different version of a library for build and deployment. What is the best approach to separate this kind of build environment within Jenkins? Is it to use slaves? Is there a solution that involves Docker?

  • Docker continuous deployment workflow
  • Docker Cloud Automated builds
  • Is there any CI service that will pull from dockerhub?
  • Packer,Dockramp vs Dockerfile
  • Self hosted Drone CI doesn't synchronize my commits with Github
  • How can I create a Docker image based on a git tag in the public Registry?
  • Clone a secure git repo in Kubernetes pod
  • Xdebug ignores breakpoints in Netbeans for Php project created inside Docker container
  • Microservices with Flask [closed]
  • Can't connect to mysql container from localhost
  • Bunyan logger on aws leaks file descriptors
  • Docker Add/Copy subdirectory separately
  • 2 Solutions collect form web for “Using Jenkins – Build Enviroment”

    Not sure the libraries are python, ruby or others. Use python as sample.

    Build seperate requirements.txt for each applications, in requirements.txt, you can define the version for each library or packages.

    https://pip.readthedocs.io/en/1.1/requirements.html

    MyApp
    Framework==0.9.4
    Library>=0.2
    

    In Jenkins, install plugin named shiningpanda, define the job in virtualenv builder with its own build environment.

    pip install -r requirements.txt
    
    # run your application here. 
    

    You should be fine to find similar plugin for your applications, if they are ruby, java, or others.

    each microservice should be its own build job. Jenkins keeps the workspace of each job separate, so they shouldn’t overwrite each other. ideally, each microservice is in its own source code repository or subfolder. in Jenkins’ job definition, you can point to each specific microservice repo. HTH.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.