From ad14135fc8e6bd8a825863e9d1015e05fcb237ba Mon Sep 17 00:00:00 2001 From: Rod Vagg Date: Sun, 1 Apr 2018 09:29:45 +1000 Subject: [PATCH 1/8] ansible: scaleway armv7 debian8 & 9 (docker) --- ansible/inventory.yml | 1 + .../tasks/partials/docker-host.yml | 20 +++++++++++++++++++ .../tasks/partials/raspberry-pi.yml | 19 +----------------- 3 files changed, 22 insertions(+), 18 deletions(-) create mode 100644 ansible/roles/jenkins-worker/tasks/partials/docker-host.yml diff --git a/ansible/inventory.yml b/ansible/inventory.yml index b36fb8bfc..0f7e98802 100644 --- a/ansible/inventory.yml +++ b/ansible/inventory.yml @@ -238,6 +238,7 @@ hosts: - scaleway: debian7-armv7l-1: {ip: 212.47.234.107} debian7-armv7l-2: {ip: 212.47.245.242} + debian9-armv7l-1: {ip: 212.47.227.186} - softlayer: centos5-x64-1: {ip: 50.23.85.252} diff --git a/ansible/roles/jenkins-worker/tasks/partials/docker-host.yml b/ansible/roles/jenkins-worker/tasks/partials/docker-host.yml new file mode 100644 index 000000000..6e54acd2e --- /dev/null +++ b/ansible/roles/jenkins-worker/tasks/partials/docker-host.yml @@ -0,0 +1,20 @@ +--- + +- name: docker | register {{ server_user }} GID + shell: "grep ^{{ server_user }} /etc/group | awk -F: '{print $3}'" + register: server_user_gid + +- name: docker | register {{ server_user }} UID + shell: "grep ^{{ server_user }} /etc/passwd | awk -F: '{print $4}'" + register: server_user_uid + +- name: docker | fetch latest ccache release version + local_action: shell curl -sL https://www.samba.org/ftp/ccache/ | awk '{ if (match($0, />ccache-(([0-9]+)\.([0-9]+)\.?([0-9]+)?)\.tar\.gz maxmaj || (a[2]+0 == maxmaj && a[3]+0 > maxmin) || (a[2]+0 == maxmaj && a[3]+0 == maxmin && a[4]+0 > maxpat)) { maxmaj = a[2]+0; maxmin = a[3]+0; maxpat = a[4]+0; } } } END { printf "%s.%s.%s\n", maxmaj, maxmin, maxpat }' + register: ccache_latest_result + +- name: docker | register ccache version + set_fact: + ccache_latest: "{{ ccache_latest_result.stdout }}" + +- name: docker | install docker from docker.com + raw: curl -fsSL get.docker.com | sudo bash - \ No newline at end of file diff --git a/ansible/roles/jenkins-worker/tasks/partials/raspberry-pi.yml b/ansible/roles/jenkins-worker/tasks/partials/raspberry-pi.yml index f2a686e7a..efc90d0cc 100644 --- a/ansible/roles/jenkins-worker/tasks/partials/raspberry-pi.yml +++ b/ansible/roles/jenkins-worker/tasks/partials/raspberry-pi.yml @@ -53,24 +53,7 @@ when: pi_local is defined tags: tunnel -- name: pi | docker | register {{ server_user }} GID - shell: "grep ^{{ server_user }} /etc/group | awk -F: '{print $3}'" - register: server_user_gid - -- name: pi | docker | register {{ server_user }} UID - shell: "grep ^{{ server_user }} /etc/passwd | awk -F: '{print $4}'" - register: server_user_uid - -- name: pi | docker | fetch latest ccache release version - local_action: shell curl -sL https://www.samba.org/ftp/ccache/ | awk '{ if (match($0, />ccache-(([0-9]+)\.([0-9]+)\.?([0-9]+)?)\.tar\.gz maxmaj || (a[2]+0 == maxmaj && a[3]+0 > maxmin) || (a[2]+0 == maxmaj && a[3]+0 == maxmin && a[4]+0 > maxpat)) { maxmaj = a[2]+0; maxmin = a[3]+0; maxpat = a[4]+0; } } } END { printf "%s.%s.%s\n", maxmaj, maxmin, maxpat }' - register: ccache_latest_result - -- name: pi | docker | register ccache version - set_fact: - ccache_latest: "{{ ccache_latest_result.stdout }}" - -- name: pi | docker | install docker from docker.com - raw: curl -fsSL get.docker.com | sudo bash - +- include: "{{ role_path }}/tasks/partials/docker-host.yml" - name: pi | docker | add pi user to docker group user: From e10cf7c4277e1cedf398c2ef256e07552a1013b3 Mon Sep 17 00:00:00 2001 From: Rod Vagg Date: Mon, 2 Apr 2018 14:25:46 +1000 Subject: [PATCH 2/8] ansible: ubuntu16.04 docker host on armv7 @ scaleway for wheezy, jessie, stretch tests --- ansible/inventory.yml | 3 +- ansible/roles/jenkins-worker/tasks/main.yml | 4 ++ .../tasks/partials/docker-host.yml | 44 +++++++++++- .../tasks/partials/raspberry-pi.yml | 51 ++------------ .../tasks/partials/scaleway-armv7.yml | 7 ++ .../templates/armv7_jessie.Dockerfile.j2 | 66 +++++++++++++++++ .../templates/armv7_stretch.Dockerfile.j2 | 53 ++++++++++++++ .../templates/armv7_wheezy.Dockerfile.j2 | 70 +++++++++++++++++++ ...s.service.j2 => docker-jenkins.service.j2} | 6 +- ...node-exec.sh.j2 => docker-node-exec.sh.j2} | 2 +- .../templates/rpi_jessie.Dockerfile.j2 | 3 +- .../templates/rpi_stretch.Dockerfile.j2 | 5 +- .../templates/rpi_wheezy.Dockerfile.j2 | 3 +- ansible/roles/jenkins-worker/vars/main.yml | 24 ++++++- 14 files changed, 281 insertions(+), 60 deletions(-) create mode 100644 ansible/roles/jenkins-worker/tasks/partials/scaleway-armv7.yml create mode 100644 ansible/roles/jenkins-worker/templates/armv7_jessie.Dockerfile.j2 create mode 100644 ansible/roles/jenkins-worker/templates/armv7_stretch.Dockerfile.j2 create mode 100644 ansible/roles/jenkins-worker/templates/armv7_wheezy.Dockerfile.j2 rename ansible/roles/jenkins-worker/templates/{rpi_docker-jenkins.service.j2 => docker-jenkins.service.j2} (54%) rename ansible/roles/jenkins-worker/templates/{rpi_docker-node-exec.sh.j2 => docker-node-exec.sh.j2} (91%) diff --git a/ansible/inventory.yml b/ansible/inventory.yml index 0f7e98802..55a0b5cbd 100644 --- a/ansible/inventory.yml +++ b/ansible/inventory.yml @@ -238,7 +238,8 @@ hosts: - scaleway: debian7-armv7l-1: {ip: 212.47.234.107} debian7-armv7l-2: {ip: 212.47.245.242} - debian9-armv7l-1: {ip: 212.47.227.186} + ubuntu1604-armv7l-1: {ip: 51.15.200.62} + ubuntu1604-armv7l-2: {ip: 51.15.218.201} - softlayer: centos5-x64-1: {ip: 50.23.85.252} diff --git a/ansible/roles/jenkins-worker/tasks/main.yml b/ansible/roles/jenkins-worker/tasks/main.yml index e7373898a..63cae53ec 100644 --- a/ansible/roles/jenkins-worker/tasks/main.yml +++ b/ansible/roles/jenkins-worker/tasks/main.yml @@ -60,6 +60,10 @@ when: "inventory_hostname|regex_search('-arm(v6l|v7l|64)_pi')" include: "{{ role_path }}/tasks/partials/raspberry-pi.yml" +- name: run scaleway armv7 jenkins-worker setup + when: "'scaleway-ubuntu1604-armv7l' in inventory_hostname" + include: "{{ role_path }}/tasks/partials/scaleway-armv7.yml" + # @TODO(mhdawson): get tap2junit working on zOS - name: prepare installing tap2junit when: type != "release" and not os|startswith("zos") diff --git a/ansible/roles/jenkins-worker/tasks/partials/docker-host.yml b/ansible/roles/jenkins-worker/tasks/partials/docker-host.yml index 6e54acd2e..e720cbce7 100644 --- a/ansible/roles/jenkins-worker/tasks/partials/docker-host.yml +++ b/ansible/roles/jenkins-worker/tasks/partials/docker-host.yml @@ -17,4 +17,46 @@ ccache_latest: "{{ ccache_latest_result.stdout }}" - name: docker | install docker from docker.com - raw: curl -fsSL get.docker.com | sudo bash - \ No newline at end of file + raw: curl -fsSL get.docker.com | sudo bash - + +- name: docker | copy docker-exec script + template: + src: "{{ role_path }}/templates/docker-node-exec.sh.j2" + dest: "/usr/local/bin/docker-node-exec.sh" + mode: 0755 + +- name: docker | give {{ server_user }} sudoers access to docker-exec script + lineinfile: + line: "{{ server_user }} ALL=(ALL) NOPASSWD: /usr/local/bin/docker-node-exec.sh" + dest: "/etc/sudoers" + regexp: docker-node-exec.sh$ + +- name: docker | make build directory + file: + path: /root/docker-container-{{ item.name }} + state: directory + with_items: "{{ docker_containers }}" + +- name: docker | generate Dockerfile + template: + src: "{{ role_path }}/templates/{{ item.template }}" + dest: /root/docker-container-{{ item.name }}/Dockerfile + mode: "0644" + with_items: "{{ docker_containers }}" + +- name: docker | build image + command: docker build -t node-ci:{{ item.name }} /root/docker-container-{{ item.name }}/ + with_items: "{{ docker_containers }}" + +- name: docker | generate and copy init script + template: + src: "{{ role_path }}/templates/docker-jenkins.service.j2" + dest: "/lib/systemd/system/docker-jenkins-{{ item.name }}.service" + with_items: "{{ docker_containers }}" + +- name: docker | start containers + service: + name: "docker-jenkins-{{ item.name }}" + state: started + enabled: yes + with_items: "{{ docker_containers }}" diff --git a/ansible/roles/jenkins-worker/tasks/partials/raspberry-pi.yml b/ansible/roles/jenkins-worker/tasks/partials/raspberry-pi.yml index efc90d0cc..fc3329198 100644 --- a/ansible/roles/jenkins-worker/tasks/partials/raspberry-pi.yml +++ b/ansible/roles/jenkins-worker/tasks/partials/raspberry-pi.yml @@ -53,6 +53,10 @@ when: pi_local is defined tags: tunnel +- name: pi | configure containers + set_fact: + docker_containers: raspberry_pi.containers[arch] + - include: "{{ role_path }}/tasks/partials/docker-host.yml" - name: pi | docker | add pi user to docker group @@ -60,50 +64,3 @@ name: "pi" groups: "docker" append: yes - -- name: pi | docker | make build directory - file: - path: /root/docker-container-{{ item }} - state: directory - with_items: - - "{{ raspberry_pi.containers[arch] }}" - -- name: pi | docker | generate Dockerfile - template: - src: "{{ role_path }}/templates/rpi_{{ item }}.Dockerfile.j2" - dest: /root/docker-container-{{ item }}/Dockerfile - mode: "0644" - with_items: - - "{{ raspberry_pi.containers[arch] }}" - -- name: pi | docker | build image - command: docker build -t node-ci:{{ item }} /root/docker-container-{{ item }}/ - with_items: - - "{{ raspberry_pi.containers[arch] }}" - -- name: pi | docker | generate and copy init script - template: - src: "{{ role_path }}/templates/rpi_docker-jenkins.service.j2" - dest: "/lib/systemd/system/docker-jenkins-{{ item }}.service" - with_items: - - "{{ raspberry_pi.containers[arch] }}" - -- name: pi | docker | start containers - service: - name: "docker-jenkins-{{ item }}" - state: started - enabled: yes - with_items: - - "{{ raspberry_pi.containers[arch] }}" - -- name: pi | docker | copy docker-exec script - template: - src: "{{ role_path }}/templates/rpi_docker-node-exec.sh.j2" - dest: "/usr/local/bin/docker-node-exec.sh" - mode: 0755 - -- name: pi | docker | give {{ server_user }} sudoers access to docker-exec script - lineinfile: - line: "{{ server_user }} ALL=(ALL) NOPASSWD: /usr/local/bin/docker-node-exec.sh" - dest: "/etc/sudoers" - regexp: docker-node-exec.sh$ diff --git a/ansible/roles/jenkins-worker/tasks/partials/scaleway-armv7.yml b/ansible/roles/jenkins-worker/tasks/partials/scaleway-armv7.yml new file mode 100644 index 000000000..9306f29a2 --- /dev/null +++ b/ansible/roles/jenkins-worker/tasks/partials/scaleway-armv7.yml @@ -0,0 +1,7 @@ +--- + +- name: scaleway armv7 | configure containers + set_fact: + docker_containers: "{{ scaleway_armv7.containers }}" + +- import_tasks: "{{ role_path }}/tasks/partials/docker-host.yml" diff --git a/ansible/roles/jenkins-worker/templates/armv7_jessie.Dockerfile.j2 b/ansible/roles/jenkins-worker/templates/armv7_jessie.Dockerfile.j2 new file mode 100644 index 000000000..e5e2c294d --- /dev/null +++ b/ansible/roles/jenkins-worker/templates/armv7_jessie.Dockerfile.j2 @@ -0,0 +1,66 @@ +FROM arm32v7/debian:jessie + +ENV LC_ALL=C \ + USER={{ server_user }} \ + JOBS={{ jobs_env }} \ + SHELL=/bin/bash \ + HOME=/home/{{ server_user }} \ + PATH=/usr/lib/ccache/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ + NODE_COMMON_PIPE=/home/{{ server_user }}/test.pipe \ + NODE_TEST_DIR=/home/{{ server_user }}/tmp \ + OSTYPE=linux-gnu \ + OSVARIANT=docker \ + DESTCPU=arm \ + ARCH={{ arch }} \ + CCACHE_TEMPDIR=/home/{{ server_user }}/.ccache/{{ inventory_hostname }} \ + DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && apt-get dist-upgrade -y && apt-get install -y \ + g++-4.9 \ + gcc-4.9 \ + git \ + make \ + zlib1g \ + zlib1g-dev \ + python2.7 \ + python \ + openssh-client \ + gzip \ + xz-utils \ + curl && \ + apt-get clean -y && \ + rm -rf /var/lib/apt/lists/* + +RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 50 && \ + update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-4.9 50 && \ + update-alternatives --install /usr/bin/cpp cpp /usr/bin/gcc-4.9 50 && \ + update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 50 && \ + update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-4.9 50 + +RUN addgroup \ + --gid {{ server_user_gid.stdout_lines[0] }} \ + {{ server_user }} && \ + adduser \ + --gid {{ server_user_gid.stdout_lines[0] }} \ + --uid {{ server_user_uid.stdout_lines[0] }} \ + --disabled-password \ + --gecos {{ server_user }} \ + {{ server_user }} + +RUN curl -sL https://www.samba.org/ftp/ccache/ccache-{{ ccache_latest }}.tar.gz | tar zxv -C /tmp/ && \ + cd /tmp/ccache-{{ ccache_latest }} && \ + ./configure && \ + make -j {{ jobs_env }} && \ + install -c -m 755 ccache /usr/local/bin && \ + ln -s /usr/local/bin/ccache /usr/local/bin/gcc && \ + ln -s /usr/local/bin/ccache /usr/local/bin/cc && \ + ln -s /usr/local/bin/ccache /usr/local/bin/g++ && \ + ln -s /usr/local/bin/ccache /usr/local/bin/c++ && \ + ln -s /usr/local/bin/ccache /usr/local/bin/cpp && \ + rm -rf /tmp/ccache-{{ ccache_latest }} + +VOLUME /home/{{ server_user }}/ + +USER iojs:iojs + +ENTRYPOINT [ "tail", "-f", "/dev/null" ] diff --git a/ansible/roles/jenkins-worker/templates/armv7_stretch.Dockerfile.j2 b/ansible/roles/jenkins-worker/templates/armv7_stretch.Dockerfile.j2 new file mode 100644 index 000000000..f396b49c2 --- /dev/null +++ b/ansible/roles/jenkins-worker/templates/armv7_stretch.Dockerfile.j2 @@ -0,0 +1,53 @@ +FROM arm32v7/debian:stretch + +ENV LC_ALL=C \ + USER={{ server_user }} \ + JOBS={{ jobs_env }} \ + SHELL=/bin/bash \ + HOME=/home/{{ server_user }} \ + PATH=/usr/lib/ccache/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ + NODE_COMMON_PIPE=/home/{{ server_user }}/test.pipe \ + NODE_TEST_DIR=/home/{{ server_user }}/tmp \ + OSTYPE=linux-gnu \ + OSVARIANT=docker \ + DESTCPU=arm \ + ARCH={{ arch }} \ + CCACHE_TEMPDIR=/home/{{ server_user }}/.ccache/{{ inventory_hostname }} \ + DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && apt-get dist-upgrade -y && apt-get install -y \ + g++-6 \ + gcc-6 \ + git \ + make \ + ccache \ + python2.7 \ + python \ + openssh-client \ + gzip \ + xz-utils \ + curl && \ + apt-get clean -y && \ + rm -rf /var/lib/apt/lists/* + +RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 50 && \ + update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-6 50 && \ + update-alternatives --install /usr/bin/cpp cpp /usr/bin/gcc-6 50 && \ + update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 50 && \ + update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-6 50 + +RUN addgroup \ + --gid {{ server_user_gid.stdout_lines[0] }} \ + {{ server_user }} && \ + adduser \ + --gid {{ server_user_gid.stdout_lines[0] }} \ + --uid {{ server_user_uid.stdout_lines[0] }} \ + --disabled-password \ + --gecos {{ server_user }} \ + {{ server_user }} + +VOLUME /home/{{ server_user }}/ + +USER iojs:iojs + +ENTRYPOINT [ "tail", "-f", "/dev/null" ] diff --git a/ansible/roles/jenkins-worker/templates/armv7_wheezy.Dockerfile.j2 b/ansible/roles/jenkins-worker/templates/armv7_wheezy.Dockerfile.j2 new file mode 100644 index 000000000..2e34fe087 --- /dev/null +++ b/ansible/roles/jenkins-worker/templates/armv7_wheezy.Dockerfile.j2 @@ -0,0 +1,70 @@ +FROM arm32v7/debian:wheezy-backports + +ENV LC_ALL=C \ + USER={{ server_user }} \ + JOBS={{ jobs_env }} \ + SHELL=/bin/bash \ + HOME=/home/{{ server_user }} \ + PATH=/usr/lib/ccache/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ + NODE_COMMON_PIPE=/home/{{ server_user }}/test.pipe \ + NODE_TEST_DIR=/home/{{ server_user }}/tmp \ + OSTYPE=linux-gnu \ + OSVARIANT=docker \ + DESTCPU=arm \ + ARCH={{ arch }} \ + CCACHE_TEMPDIR=/home/{{ server_user }}/.ccache/{{ item.name }} \ + DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && apt-get install curl -y && curl -sL http://archive.raspberrypi.org/debian/raspberrypi.gpg.key | apt-key add - + +RUN echo "deb http://archive.raspberrypi.org/debian/ wheezy main" >> /etc/apt/sources.list + +RUN apt-get update && apt-get dist-upgrade -y && apt-get install -y \ + g++-4.8 \ + gcc-4.8 \ + git \ + make \ + zlib1g \ + zlib1g-dev \ + python2.7 \ + python \ + openssh-client \ + gzip \ + xz-utils \ + curl && \ + apt-get clean -y && \ + rm -rf /var/lib/apt/lists/* + +RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50 && \ + update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-4.8 50 && \ + update-alternatives --install /usr/bin/cpp cpp /usr/bin/gcc-4.8 50 && \ + update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50 && \ + update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-4.8 50 + +RUN addgroup \ + --gid {{ server_user_gid.stdout_lines[0] }} \ + {{ server_user }} && \ + adduser \ + --gid {{ server_user_gid.stdout_lines[0] }} \ + --uid {{ server_user_uid.stdout_lines[0] }} \ + --disabled-password \ + --gecos {{ server_user }} \ + {{ server_user }} + +RUN curl -sL https://www.samba.org/ftp/ccache/ccache-{{ ccache_latest }}.tar.gz | tar zxv -C /tmp/ && \ + cd /tmp/ccache-{{ ccache_latest }} && \ + ./configure && \ + make -j {{ jobs_env }} && \ + install -c -m 755 ccache /usr/local/bin && \ + ln -s /usr/local/bin/ccache /usr/local/bin/gcc && \ + ln -s /usr/local/bin/ccache /usr/local/bin/cc && \ + ln -s /usr/local/bin/ccache /usr/local/bin/g++ && \ + ln -s /usr/local/bin/ccache /usr/local/bin/c++ && \ + ln -s /usr/local/bin/ccache /usr/local/bin/cpp && \ + rm -rf /tmp/ccache-{{ ccache_latest }} + +VOLUME /home/{{ server_user }}/ + +USER iojs:iojs + +ENTRYPOINT [ "tail", "-f", "/dev/null" ] diff --git a/ansible/roles/jenkins-worker/templates/rpi_docker-jenkins.service.j2 b/ansible/roles/jenkins-worker/templates/docker-jenkins.service.j2 similarity index 54% rename from ansible/roles/jenkins-worker/templates/rpi_docker-jenkins.service.j2 rename to ansible/roles/jenkins-worker/templates/docker-jenkins.service.j2 index 0993db4ce..bf0df2570 100644 --- a/ansible/roles/jenkins-worker/templates/rpi_docker-jenkins.service.j2 +++ b/ansible/roles/jenkins-worker/templates/docker-jenkins.service.j2 @@ -1,5 +1,5 @@ [Unit] -Description=Jenkins Slave in Docker for {{ item }} +Description=Jenkins Slave in Docker for {{ item.name }} Wants=network.target After=network.target @@ -9,8 +9,8 @@ WantedBy=multi-user.target [Service] Type=simple User=root -ExecStart=/usr/bin/docker run --rm -v /home/{{ server_user }}:/home/{{ server_user }} --name node-ci-{{ item }} node-ci:{{ item }} -ExecStop=/usr/bin/docker stop -t 5 node-ci-{{ item }} +ExecStart=/usr/bin/docker run --rm -v /home/{{ server_user }}:/home/{{ server_user }} --name node-ci-{{ item.name }} node-ci:{{ item.name }} +ExecStop=/usr/bin/docker stop -t 5 node-ci-{{ item.name }} Restart=always RestartSec=30 StartLimitInterval=0 diff --git a/ansible/roles/jenkins-worker/templates/rpi_docker-node-exec.sh.j2 b/ansible/roles/jenkins-worker/templates/docker-node-exec.sh.j2 similarity index 91% rename from ansible/roles/jenkins-worker/templates/rpi_docker-node-exec.sh.j2 rename to ansible/roles/jenkins-worker/templates/docker-node-exec.sh.j2 index 9c5a00ebd..df9531cc4 100755 --- a/ansible/roles/jenkins-worker/templates/rpi_docker-node-exec.sh.j2 +++ b/ansible/roles/jenkins-worker/templates/docker-node-exec.sh.j2 @@ -22,7 +22,7 @@ while getopts "v:" opt; do done if test "$version" = ""; then - echo "Did not provide the Raspbian version [-v]" + echo "Did not provide the distro version [-v]" exit 1 fi diff --git a/ansible/roles/jenkins-worker/templates/rpi_jessie.Dockerfile.j2 b/ansible/roles/jenkins-worker/templates/rpi_jessie.Dockerfile.j2 index 3f33ad818..a7db20a3c 100644 --- a/ansible/roles/jenkins-worker/templates/rpi_jessie.Dockerfile.j2 +++ b/ansible/roles/jenkins-worker/templates/rpi_jessie.Dockerfile.j2 @@ -12,7 +12,8 @@ ENV LC_ALL=C \ OSVARIANT=docker \ DESTCPU=arm \ ARCH={{ arch }} \ - CCACHE_TEMPDIR/home/{{ server_user }}/.ccache/{{ inventory_hostname }} + CCACHE_TEMPDIR=/home/{{ server_user }}/.ccache/{{ inventory_hostname }} \ + DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get dist-upgrade -y && apt-get install -y \ g++-4.9 \ diff --git a/ansible/roles/jenkins-worker/templates/rpi_stretch.Dockerfile.j2 b/ansible/roles/jenkins-worker/templates/rpi_stretch.Dockerfile.j2 index bb202a6d1..25b15ba27 100644 --- a/ansible/roles/jenkins-worker/templates/rpi_stretch.Dockerfile.j2 +++ b/ansible/roles/jenkins-worker/templates/rpi_stretch.Dockerfile.j2 @@ -12,14 +12,15 @@ ENV LC_ALL=C \ OSVARIANT=docker \ DESTCPU=arm \ ARCH={{ arch }} \ - CCACHE_TEMPDIR/home/{{ server_user }}/.ccache/{{ inventory_hostname }} + CCACHE_TEMPDIR=/home/{{ server_user }}/.ccache/{{ inventory_hostname }} \ + DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get dist-upgrade -y && apt-get install -y \ g++-6 \ gcc-6 \ + git \ make \ ccache \ - git \ python2.7 \ python \ openssh-client \ diff --git a/ansible/roles/jenkins-worker/templates/rpi_wheezy.Dockerfile.j2 b/ansible/roles/jenkins-worker/templates/rpi_wheezy.Dockerfile.j2 index e3e1d718a..c84f6a29b 100644 --- a/ansible/roles/jenkins-worker/templates/rpi_wheezy.Dockerfile.j2 +++ b/ansible/roles/jenkins-worker/templates/rpi_wheezy.Dockerfile.j2 @@ -12,7 +12,8 @@ ENV LC_ALL=C \ OSVARIANT=docker \ DESTCPU=arm \ ARCH={{ arch }} \ - CCACHE_TEMPDIR/home/{{ server_user }}/.ccache/{{ inventory_hostname }} + CCACHE_TEMPDIR=/home/{{ server_user }}/.ccache/{{ inventory_hostname }} \ + DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get dist-upgrade -y && apt-get install -y \ g++-4.8 \ diff --git a/ansible/roles/jenkins-worker/vars/main.yml b/ansible/roles/jenkins-worker/vars/main.yml index c2127c905..ef69a0f01 100644 --- a/ansible/roles/jenkins-worker/vars/main.yml +++ b/ansible/roles/jenkins-worker/vars/main.yml @@ -89,12 +89,30 @@ raspberry_pi: { nfs_server: '192.168.1.10', nfs_share_root: '/exports/nodejs/pi', containers: { - armv6l: [ 'wheezy', 'jessie' ], - armv7l: [ 'wheezy', 'jessie', 'stretch' ], - arm64: [ 'jessie', 'stretch' ] + armv6l: [ + { name: 'wheezy', template: 'rpi_wheezy.Dockerfile.j2' }, + { name: 'jessie', template: 'rpi_jessie.Dockerfile.j2' } + ], + armv7l: [ + { name: 'wheezy', template: 'rpi_wheezy.Dockerfile.j2' }, + { name: 'jessie', template: 'rpi_jessie.Dockerfile.j2' }, + { name: 'stretch', template: 'rpi_stretch.Dockerfile.j2' } + ], + arm64: [ + { name: 'jessie', template: 'rpi_jessie.Dockerfile.j2' }, + { name: 'stretch', template: 'rpi_stretch.Dockerfile.j2' } + ] } } +scaleway_armv7: { + containers: [ + { name: 'wheezy', template: 'armv7_wheezy.Dockerfile.j2' }, + { name: 'jessie', template: 'armv7_jessie.Dockerfile.j2' }, + { name: 'stretch', template: 'armv7_stretch.Dockerfile.j2' } + ] +} + # primarily for raspberry pi workers, some arm64 workers may need `server_jobs` defined in host_vars # to override these low numbers jobs_variants: { From 7c6491225629d45e85c2630a97eefd6f2ec8e4db Mon Sep 17 00:00:00 2001 From: Rod Vagg Date: Mon, 2 Apr 2018 21:05:17 +1000 Subject: [PATCH 3/8] ansible: rpi cleanup and minor fix --- ansible/inventory.yml | 15 +++------------ .../tasks/partials/raspberry-pi.yml | 4 ++-- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/ansible/inventory.yml b/ansible/inventory.yml index 55a0b5cbd..4b1f0e87e 100644 --- a/ansible/inventory.yml +++ b/ansible/inventory.yml @@ -38,9 +38,7 @@ hosts: smartos15-x64-1: {ip: 165.225.131.14} - requireio: - #rvagg-debian7-armv6l_pi1p-1: {ip: 192.168.2.40, user: pi} rvagg-debian9-armv6l_pi1p-1: {ip: 192.168.2.40, user: pi} - #andineck-debian7-armv6l_pi1p-1: {ip: 192.168.2.41, user: pi} andineck-debian9-armv6l_pi1p-1: {ip: 192.168.2.41, user: pi} osx1010-x64-1: {ip: 192.168.2.211, user: iojs} @@ -170,23 +168,16 @@ hosts: win2012r2-x64-12: {ip: 104.239.150.105} - requireio: - #andineck-debian7-armv6l_pi1p-1: {ip: 192.168.2.42, user: pi} andineck-debian9-armv6l_pi1p-1: {ip: 192.168.2.42, user: pi} - #bengl-debian7-armv6l_pi1p-1: {ip: 192.168.2.43, user: pi} bengl-debian9-armv6l_pi1p-1: {ip: 192.168.2.43, user: pi} - #bengl-debian7-armv6l_pi1p-2: {ip: 192.168.2.44, user: pi} bengl-debian9-armv6l_pi1p-2: {ip: 192.168.2.44, user: pi} - #continuationlabs-debian7-armv6l_pi1p-1: {ip: 192.168.2.45, user: pi} continuationlabs-debian9-armv6l_pi1p-1: {ip: 192.168.2.45, user: pi} - #ceejbot-debian7-armv6l_pi1p-1: {ip: 192.168.2.46, user: pi} ceejbot-debian9-armv6l_pi1p-1: {ip: 192.168.2.46, user: pi} - #mininodes-debian7-armv6l_pi1p-1: {ip: 192.168.2.47, user: pi} mininodes-debian9-armv6l_pi1p-1: {ip: 192.168.2.47, user: pi} - indieisaconcept-debian7-armv6l_pi1p-1: {ip: 192.168.2.48, user: pi} - mhdawson-debian7-armv6l_pi1p-1: {ip: 192.168.2.49, user: pi} - #securogroup-debian7-armv6l_pi1p-1: {ip: 192.168.2.50, user: pi} + indieisaconcept-debian9-armv6l_pi1p-1: {ip: 192.168.2.48, user: pi} + mhdawson-debian9-armv6l_pi1p-1: {ip: 192.168.2.49, user: pi} securogroup-debian9-armv6l_pi1p-1: {ip: 192.168.2.50, user: pi} - securogroup-debian7-armv6l_pi1p-2: {ip: 192.168.2.51, user: pi} + securogroup-debian9-armv6l_pi1p-2: {ip: 192.168.2.51, user: pi} chrislea-debian7-armv6l_pi1p-1: {ip: 192.168.2.52, user: pi} davglass-debian7-armv6l_pi1p-1: {ip: 192.168.2.53, user: pi} diff --git a/ansible/roles/jenkins-worker/tasks/partials/raspberry-pi.yml b/ansible/roles/jenkins-worker/tasks/partials/raspberry-pi.yml index fc3329198..dba7c72ef 100644 --- a/ansible/roles/jenkins-worker/tasks/partials/raspberry-pi.yml +++ b/ansible/roles/jenkins-worker/tasks/partials/raspberry-pi.yml @@ -55,9 +55,9 @@ - name: pi | configure containers set_fact: - docker_containers: raspberry_pi.containers[arch] + docker_containers: "{{ raspberry_pi.containers[arch] }}" -- include: "{{ role_path }}/tasks/partials/docker-host.yml" +- import_tasks: "{{ role_path }}/tasks/partials/docker-host.yml" - name: pi | docker | add pi user to docker group user: From 42bf91500a6da1f8a33fc5e1429ec0236590f6bd Mon Sep 17 00:00:00 2001 From: Rod Vagg Date: Mon, 2 Apr 2018 21:05:32 +1000 Subject: [PATCH 4/8] ansible: add new scaleway armv7 host --- ansible/inventory.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/ansible/inventory.yml b/ansible/inventory.yml index 4b1f0e87e..6a6d773de 100644 --- a/ansible/inventory.yml +++ b/ansible/inventory.yml @@ -231,6 +231,7 @@ hosts: debian7-armv7l-2: {ip: 212.47.245.242} ubuntu1604-armv7l-1: {ip: 51.15.200.62} ubuntu1604-armv7l-2: {ip: 51.15.218.201} + ubuntu1604-armv7l-3: {ip: 163.172.186.154} - softlayer: centos5-x64-1: {ip: 50.23.85.252} From 6e2621814b80cebe6f8e1af23c5bac6fdda1e244 Mon Sep 17 00:00:00 2001 From: Rod Vagg Date: Tue, 3 Apr 2018 11:40:02 +1000 Subject: [PATCH 5/8] ansible: armv7 fix ccache for stretch images --- .../jenkins-worker/templates/armv7_stretch.Dockerfile.j2 | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ansible/roles/jenkins-worker/templates/armv7_stretch.Dockerfile.j2 b/ansible/roles/jenkins-worker/templates/armv7_stretch.Dockerfile.j2 index f396b49c2..89695a6e3 100644 --- a/ansible/roles/jenkins-worker/templates/armv7_stretch.Dockerfile.j2 +++ b/ansible/roles/jenkins-worker/templates/armv7_stretch.Dockerfile.j2 @@ -5,7 +5,7 @@ ENV LC_ALL=C \ JOBS={{ jobs_env }} \ SHELL=/bin/bash \ HOME=/home/{{ server_user }} \ - PATH=/usr/lib/ccache/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ + PATH=/usr/lib/ccache:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ NODE_COMMON_PIPE=/home/{{ server_user }}/test.pipe \ NODE_TEST_DIR=/home/{{ server_user }}/tmp \ OSTYPE=linux-gnu \ @@ -36,6 +36,12 @@ RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 50 && \ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 50 && \ update-alternatives --install /usr/bin/cc cc /usr/bin/gcc-6 50 +RUN ln -sf /usr/bin/ccache /usr/lib/ccache/gcc && \ + ln -sf /usr/bin/ccache /usr/lib/ccache/cc && \ + ln -sf /usr/bin/ccache /usr/lib/ccache/g++ && \ + ln -sf /usr/bin/ccache /usr/lib/ccache/c++ && \ + ln -sf /usr/bin/ccache /usr/lib/ccache/cpp + RUN addgroup \ --gid {{ server_user_gid.stdout_lines[0] }} \ {{ server_user }} && \ From d40fe97c689e8a9b93eb21e29736b4904e6bdec5 Mon Sep 17 00:00:00 2001 From: Rod Vagg Date: Tue, 3 Apr 2018 13:46:32 +1000 Subject: [PATCH 6/8] ansible: armv7 need procps in docker containers for `ps` --- ansible/roles/jenkins-worker/tasks/partials/docker-host.yml | 1 + .../roles/jenkins-worker/templates/armv7_jessie.Dockerfile.j2 | 1 + .../roles/jenkins-worker/templates/armv7_stretch.Dockerfile.j2 | 1 + .../roles/jenkins-worker/templates/armv7_wheezy.Dockerfile.j2 | 1 + 4 files changed, 4 insertions(+) diff --git a/ansible/roles/jenkins-worker/tasks/partials/docker-host.yml b/ansible/roles/jenkins-worker/tasks/partials/docker-host.yml index e720cbce7..cc243cb01 100644 --- a/ansible/roles/jenkins-worker/tasks/partials/docker-host.yml +++ b/ansible/roles/jenkins-worker/tasks/partials/docker-host.yml @@ -10,6 +10,7 @@ - name: docker | fetch latest ccache release version local_action: shell curl -sL https://www.samba.org/ftp/ccache/ | awk '{ if (match($0, />ccache-(([0-9]+)\.([0-9]+)\.?([0-9]+)?)\.tar\.gz maxmaj || (a[2]+0 == maxmaj && a[3]+0 > maxmin) || (a[2]+0 == maxmaj && a[3]+0 == maxmin && a[4]+0 > maxpat)) { maxmaj = a[2]+0; maxmin = a[3]+0; maxpat = a[4]+0; } } } END { printf "%s.%s.%s\n", maxmaj, maxmin, maxpat }' + warn: False register: ccache_latest_result - name: docker | register ccache version diff --git a/ansible/roles/jenkins-worker/templates/armv7_jessie.Dockerfile.j2 b/ansible/roles/jenkins-worker/templates/armv7_jessie.Dockerfile.j2 index e5e2c294d..192c9ac19 100644 --- a/ansible/roles/jenkins-worker/templates/armv7_jessie.Dockerfile.j2 +++ b/ansible/roles/jenkins-worker/templates/armv7_jessie.Dockerfile.j2 @@ -27,6 +27,7 @@ RUN apt-get update && apt-get dist-upgrade -y && apt-get install -y \ openssh-client \ gzip \ xz-utils \ + procps \ curl && \ apt-get clean -y && \ rm -rf /var/lib/apt/lists/* diff --git a/ansible/roles/jenkins-worker/templates/armv7_stretch.Dockerfile.j2 b/ansible/roles/jenkins-worker/templates/armv7_stretch.Dockerfile.j2 index 89695a6e3..cf8b599d0 100644 --- a/ansible/roles/jenkins-worker/templates/armv7_stretch.Dockerfile.j2 +++ b/ansible/roles/jenkins-worker/templates/armv7_stretch.Dockerfile.j2 @@ -26,6 +26,7 @@ RUN apt-get update && apt-get dist-upgrade -y && apt-get install -y \ openssh-client \ gzip \ xz-utils \ + procps \ curl && \ apt-get clean -y && \ rm -rf /var/lib/apt/lists/* diff --git a/ansible/roles/jenkins-worker/templates/armv7_wheezy.Dockerfile.j2 b/ansible/roles/jenkins-worker/templates/armv7_wheezy.Dockerfile.j2 index 2e34fe087..f452fb9fd 100644 --- a/ansible/roles/jenkins-worker/templates/armv7_wheezy.Dockerfile.j2 +++ b/ansible/roles/jenkins-worker/templates/armv7_wheezy.Dockerfile.j2 @@ -31,6 +31,7 @@ RUN apt-get update && apt-get dist-upgrade -y && apt-get install -y \ openssh-client \ gzip \ xz-utils \ + procps \ curl && \ apt-get clean -y && \ rm -rf /var/lib/apt/lists/* From 3108df82d5dc1a00414783d7a755ac1766bb9b1b Mon Sep 17 00:00:00 2001 From: Rod Vagg Date: Fri, 6 Apr 2018 02:52:19 +1000 Subject: [PATCH 7/8] ansible: convert more pi's --- ansible/inventory.yml | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/ansible/inventory.yml b/ansible/inventory.yml index 6a6d773de..6df4e5830 100644 --- a/ansible/inventory.yml +++ b/ansible/inventory.yml @@ -181,43 +181,29 @@ hosts: chrislea-debian7-armv6l_pi1p-1: {ip: 192.168.2.52, user: pi} davglass-debian7-armv6l_pi1p-1: {ip: 192.168.2.53, user: pi} - #rvagg-debian7-armv7l_pi2-1: {ip: 192.168.2.60, user: pi} rvagg-debian9-armv7l_pi2-1: {ip: 192.168.2.60, user: pi} - #joeyvandijk-debian7-armv7l_pi2-1: {ip: 192.168.2.61, user: pi} joeyvandijk-debian9-armv7l_pi2-1: {ip: 192.168.2.61, user: pi} - #joeyvandijk-debian7-armv7l_pi2-2: {ip: 192.168.2.62, user: pi} joeyvandijk-debian9-armv7l_pi2-2: {ip: 192.168.2.62, user: pi} - #svincent-debian7-armv7l_pi2-1: {ip: 192.168.2.63, user: pi} svincent-debian9-armv7l_pi2-1: {ip: 192.168.2.63, user: pi} - #mcollina-debian7-armv7l_pi2-1: {ip: 192.168.2.64, user: pi} mcollina-debian9-armv7l_pi2-1: {ip: 192.168.2.64, user: pi} - #ceejbot-debian7-armv7l_pi2-1: {ip: 192.168.2.65, user: pi} ceejbot-debian9-armv7l_pi2-1: {ip: 192.168.2.65, user: pi} - #mininodes-debian7-armv7l_pi2-1: {ip: 192.168.2.66, user: pi} mininodes-debian9-armv7l_pi2-1: {ip: 192.168.2.66, user: pi} - sambthompson-debian7-armv7l_pi2-1: {ip: 192.168.2.67, user: pi} - louiscntr-debian7-armv7l_pi2-1: {ip: 192.168.2.68, user: pi} - svincent-debian7-armv7l_pi2-2: {ip: 192.168.2.69, user: pi} + sambthompson-debian9-armv7l_pi2-1: {ip: 192.168.2.67, user: pi} + louiscntr-debian9-armv7l_pi2-1: {ip: 192.168.2.68, user: pi} + svincent-debian9-armv7l_pi2-2: {ip: 192.168.2.69, user: pi} svincent-debian7-armv7l_pi2-3: {ip: 192.168.2.70, user: pi} jasnell-debian7-armv7l_pi2-1: {ip: 192.168.2.71, user: pi} - #williamkapke-debian8-arm64_pi3-1: {ip: 192.168.2.80, user: pi} williamkapke-debian9-arm64_pi3-1: {ip: 192.168.2.80, user: pi} - #williamkapke-debian8-arm64_pi3-2: {ip: 192.168.2.81, user: pi} williamkapke-debian9-arm64_pi3-2: {ip: 192.168.2.81, user: pi} - #williamkapke-debian8-arm64_pi3-3: {ip: 192.168.2.82, user: pi} williamkapke-debian9-arm64_pi3-3: {ip: 192.168.2.82, user: pi} - #davglass-debian8-arm64_pi3-1: {ip: 192.168.2.83, user: pi} davglass-debian9-arm64_pi3-1: {ip: 192.168.2.83, user: pi} - #pivotalagency-debian8-arm64_pi3-1: {ip: 192.168.2.84, user: pi} pivotalagency-debian9-arm64_pi3-1: {ip: 192.168.2.84, user: pi} - #pivotalagency-debian8-arm64_pi3-2: {ip: 192.168.2.85, user: pi} pivotalagency-debian9-arm64_pi3-2: {ip: 192.168.2.85, user: pi} - #securogroup-debian8-arm64_pi3-1: {ip: 192.168.2.86, user: pi} securogroup-debian9-arm64_pi3-1: {ip: 192.168.2.86, user: pi} - securogroup-debian8-arm64_pi3-2: {ip: 192.168.2.87, user: pi} - notthetup_sayanee-debian8-arm64_pi3-1: {ip: 192.168.2.88, user: pi} - piccoloaiutante-debian8-arm64_pi3-1: {ip: 192.168.2.89, user: pi} + securogroup-debian9-arm64_pi3-2: {ip: 192.168.2.87, user: pi} + notthetup_sayanee-debian9-arm64_pi3-1: {ip: 192.168.2.88, user: pi} + piccoloaiutante-debian9-arm64_pi3-1: {ip: 192.168.2.89, user: pi} kahwee-debian8-arm64_pi3-1: {ip: 192.168.2.90, user: pi} rvagg-ubuntu1404-arm64_odroidxu3-1: {ip: 192.168.2.10, user: odroid} From 638d129d730ccc869253edf1179b10fc26281af1 Mon Sep 17 00:00:00 2001 From: Rod Vagg Date: Fri, 6 Apr 2018 21:05:22 +1000 Subject: [PATCH 8/8] ansible: use --init for docker workers to reap zombies --- .../roles/jenkins-worker/templates/docker-jenkins.service.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ansible/roles/jenkins-worker/templates/docker-jenkins.service.j2 b/ansible/roles/jenkins-worker/templates/docker-jenkins.service.j2 index bf0df2570..154c48551 100644 --- a/ansible/roles/jenkins-worker/templates/docker-jenkins.service.j2 +++ b/ansible/roles/jenkins-worker/templates/docker-jenkins.service.j2 @@ -9,7 +9,7 @@ WantedBy=multi-user.target [Service] Type=simple User=root -ExecStart=/usr/bin/docker run --rm -v /home/{{ server_user }}:/home/{{ server_user }} --name node-ci-{{ item.name }} node-ci:{{ item.name }} +ExecStart=/usr/bin/docker run --init --rm -v /home/{{ server_user }}:/home/{{ server_user }} --name node-ci-{{ item.name }} node-ci:{{ item.name }} ExecStop=/usr/bin/docker stop -t 5 node-ci-{{ item.name }} Restart=always RestartSec=30