Using Ansible,Jenkins and docker to build fast test environments

前端 未结 2 1131
温柔的废话
温柔的废话 2021-02-04 18:57

I am planning to build test environment using ansible, jenkins and docker together.The plan is like this.

Create ansible playbooks for every tool that you are using in

相关标签:
2条回答
  • 2021-02-04 19:09

    I am using a similar but different approach:

    • Define Dockerfiles or chef/puppet/ansible/salt provisioning. As in your approach.

    • Putting those descriptions under version control. As in your approach.

    • Using Jenkins A to CI- and Nightly Building Images and Uploading them into a registry. In order to manage different versions and keeping old images. This introduces a image registry in your diagram.

    • Extending those images with Jenkins-Swarm slaves. This enables ad-hoc deployment in your Jenkins environment.

    Here I separate between building of the software and the building of the build slaves themselves.

    • I deploy a Jenkins B in order to build the software on environments.

    • Now I choose between container that I want to deploy permanently and build containers I want to deploy on demand.

      • Permanent containers, which are heavily used by build jobs, are started as swarm slaves and exchanged daily by nightly builds.
      • Ad-hoc containers are managed by the Jenkins-Docker-Plugin.
      • For more complex environment configurations I use docker-compose to manage ad-hoc availability.
      • For ad-hoc environments, namely VMs for running those configurations, I use docker-swarm.

    Diagram:

    0 讨论(0)
  • 2021-02-04 19:11

    If you want to test with a docker image that has the latest available version of a given package on a given OS, then you need to setup nightly docker image rebuilds. I have a very small, simple project that can get you up and running with nightly docker image rebuilds at https://github.com/zbeekman/nightly-docker-rebuild. I use this to rebuild GCC trunk from source, but you could just as easily use it to install/upgrade packages from a package manager, or deal with any other build/runtime dependency that might be updated upstream and have a potential impact on your project. This way you can catch the issues early, before clients/users encounter them.

    0 讨论(0)
提交回复
热议问题