Skip to content

Refactor ARMv7 Scaleway host config #1204

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 8 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 12 additions & 32 deletions ansible/inventory.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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}

Expand Down Expand Up @@ -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}
Expand All @@ -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}
Expand Down
4 changes: 4 additions & 0 deletions ansible/roles/jenkins-worker/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
63 changes: 63 additions & 0 deletions ansible/roles/jenkins-worker/tasks/partials/docker-host.yml
Original file line number Diff line number Diff line change
@@ -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</, a)) { if (a[2]+0 > 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 }}"
66 changes: 3 additions & 63 deletions ansible/roles/jenkins-worker/tasks/partials/raspberry-pi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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</, a)) { if (a[2]+0 > 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$
Original file line number Diff line number Diff line change
@@ -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"
67 changes: 67 additions & 0 deletions ansible/roles/jenkins-worker/templates/armv7_jessie.Dockerfile.j2
Original file line number Diff line number Diff line change
@@ -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" ]
60 changes: 60 additions & 0 deletions ansible/roles/jenkins-worker/templates/armv7_stretch.Dockerfile.j2
Original file line number Diff line number Diff line change
@@ -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" ]
Loading