Adding packages to buildslaves

Prerequisites

Requirements

Suggestions

Example - Adding 'sys-apps/dtc'

  1. Gain access to the buildserver_setup repository

  2. Edit roles/docker_buildslave/templates/Dockerfile.j2

  3. Add a RUN instruction per package that should be added

    29 RUN \ 30 {% set package="sys-apps/dtc" %} 31 emerge --autounmask-write=y {{ package }}; \ 32 etc-update --automode -5 && \ 33 emerge -u {{ package }} && \ 34 rm -Rf /usr/portage/distfiles/*

  4. Connect to the docker host running the buildslave

  5. Identify and verify the buildslave containers that have to be rebuilt

    $ docker ps -f name=".*buildslave_[^_]*\..*" -f status=running

  6. Stop the buildslave containers

    $ docker ps -f name=".*buildslave_[^_]*\..*" -f status=running -q | xargs docker stop | xargs docker rm

  7. Delete the buildslaves images, without their history

    $ docker images | grep -e ".*buildslave-[^-]*\..*" | grep -oE "[[:alnum:]]{12}" | xargs docker rmi --no-prune

  8. Comment the rootfs roles in the buildslaves.yml playbook for every architecture

    23 - role: docker_buildslave 24 # - role: docker_buildslave_rootfs

  9. Run ansible-playbook

    $ ansible-playbook -i hosts buildslaves.yml --tags all

  10. Uncomment the rootfs roles in the buildslaves.yml playbook for every architecture

    23 - role: docker_buildslave 24 - role: docker_buildslave_rootfs