Clone this repo:

Branches

  1. b7d7e95 Add docker-amd64-tf-m-jammy. by Paul Sokolovsky · 3 weeks ago master
  2. 1ec2a11 docker-amd64-tf-a-eclair: Rename to docker-amd64-tf-a-eclair-3.12 by Paul Sokolovsky · 3 months ago
  3. 82e5562 docker-amd64-tf-a-eclair-next: Rename to docker-amd64-tf-a-eclair-3.13 by Paul Sokolovsky · 3 months ago
  4. c53966d Add docker-tf-a-eclair-next builder by Paul Sokolovsky · 3 months ago
  5. 84d418e docker_templates_amd64.yml: Rename image name to ci-amd64-tf-m-ubuntu:jammy-iar by Arthur She · 3 months ago

Yet Another Docker Plugin config builder

Yet Another Docker Plugin (YADP) is extremely hard to manage, when running multiple slaves with multiple images. Due to the way Jenkins displays the configuration page. YADP provides a groovy script which builds a JSON array to populate the configuration in Jenkins.

This script uses YAML and Jinja2 to generate a java JSONARRAY to build the configuration, using a !include constructor in the YAML file, allowing the ability to template up docker_images, since many of our slaves run the same image, it lessens repetition.

Features

  1. Ability to !include inside YAML to lessen duplication
  2. Ability to include multiple YAML files with !include [file1.yml, file2.yml]
  3. Ability to include SSH settings via using launch_method:" along with ssh: or jnlp:

Usage

####hosts

- host1:
  cloud_name: host1.example.org
  docker-url: tcp://0.0.0.0:2375
  docker_templates: !include external_template_file.yml

- host2:
  cloud_name: host2.example.org
  docker-url: tcp://0.0.0.1:2375
  docker_templates:
    - xenial-amd64:
      docker_image_name: 'ubuntu:latest'
      max_instances: '1'
      labels: 'docker-ubuntu'
      launch_method: ssh
      ssh:
        launch_ssh_credentials_id: 'random-id'
        launch_ssh_port: '22'

- host3
  cloud_name: host3.example.org
  docker-url: tcp://0.0.0.0:2375
  docker_templates:
    !include [external_template_file.yml, external_template_file_2.yml]

Limitations

Due to the nature of YAML and populating the Java JSONARRAY, its important that YAML is phased correctly.

Most of the limitations surround docker_templates.

A list of limitations and pending improvements.

  1. Do not mix !include and templates under docker_templates.

Example of broken approach:

  • host1: cloud_name: host1.example.org docker-url: tcp://0.0.0.0:2375 docker_templates: !include external_template_file.yml
    • xenial-amd64: docker_image_name: 'ubuntu:latest' max_instances: '1' labels: 'docker-ubuntu'
  1. Do not add spaces under the image cloud_name, the must fall inline with the image name

Example of broken approach:

  • xenial-amd64: docker_image_name: 'ubuntu:latest' max_instances: '1' labels: 'docker-ubuntu'
  1. Docker labels could be "host" specific. If you are including a template file, the template has no link to the host, so its not possible to do "host based labels". Instead just create another template file with custom settings and include that file.