diff --git a/ansible/inventory.yml b/ansible/inventory.yml index b36fb8bfc..6df4e5830 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,63 +168,42 @@ 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} - #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} @@ -238,6 +215,9 @@ hosts: - scaleway: debian7-armv7l-1: {ip: 212.47.234.107} 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} 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 new file mode 100644 index 000000000..cc243cb01 --- /dev/null +++ b/ansible/roles/jenkins-worker/tasks/partials/docker-host.yml @@ -0,0 +1,63 @@ +--- + +- 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 }' + warn: False + 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 - + +- 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 f2a686e7a..dba7c72ef 100644 --- a/ansible/roles/jenkins-worker/tasks/partials/raspberry-pi.yml +++ b/ansible/roles/jenkins-worker/tasks/partials/raspberry-pi.yml @@ -53,74 +53,14 @@ 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 +- name: pi | configure containers set_fact: - ccache_latest: "{{ ccache_latest_result.stdout }}" + docker_containers: "{{ raspberry_pi.containers[arch] }}" -- name: pi | docker | install docker from docker.com - raw: curl -fsSL get.docker.com | sudo bash - +- import_tasks: "{{ role_path }}/tasks/partials/docker-host.yml" - name: pi | docker | add pi user to docker group user: 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..192c9ac19 --- /dev/null +++ b/ansible/roles/jenkins-worker/templates/armv7_jessie.Dockerfile.j2 @@ -0,0 +1,67 @@ +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 \ + procps \ + 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..cf8b599d0 --- /dev/null +++ b/ansible/roles/jenkins-worker/templates/armv7_stretch.Dockerfile.j2 @@ -0,0 +1,60 @@ +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:/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 \ + procps \ + 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 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 }} && \ + 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..f452fb9fd --- /dev/null +++ b/ansible/roles/jenkins-worker/templates/armv7_wheezy.Dockerfile.j2 @@ -0,0 +1,71 @@ +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 \ + procps \ + 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/docker-jenkins.service.j2 b/ansible/roles/jenkins-worker/templates/docker-jenkins.service.j2 new file mode 100644 index 000000000..154c48551 --- /dev/null +++ b/ansible/roles/jenkins-worker/templates/docker-jenkins.service.j2 @@ -0,0 +1,16 @@ +[Unit] +Description=Jenkins Slave in Docker for {{ item.name }} +Wants=network.target +After=network.target + +[Install] +WantedBy=multi-user.target + +[Service] +Type=simple +User=root +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 +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_docker-jenkins.service.j2 b/ansible/roles/jenkins-worker/templates/rpi_docker-jenkins.service.j2 deleted file mode 100644 index 0993db4ce..000000000 --- a/ansible/roles/jenkins-worker/templates/rpi_docker-jenkins.service.j2 +++ /dev/null @@ -1,16 +0,0 @@ -[Unit] -Description=Jenkins Slave in Docker for {{ item }} -Wants=network.target -After=network.target - -[Install] -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 }} -Restart=always -RestartSec=30 -StartLimitInterval=0 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: {