From 23667136ce9fa5f585b48784c06ef59c4d373987 Mon Sep 17 00:00:00 2001 From: Rod Vagg Date: Tue, 14 Jun 2016 12:27:02 +1000 Subject: [PATCH] added preliminary Alpine support --- setup/ansible-inventory | 3 + setup/ubuntu16.04_docker_alpine3.4/.gitignore | 2 + setup/ubuntu16.04_docker_alpine3.4/README.md | 17 +++++ .../ansible-playbook.yaml | 76 +++++++++++++++++++ .../ansible-vars.yaml | 4 + .../ubuntu16.04_docker_alpine3.4/ansible.cfg | 2 + .../requirements.yml | 1 + .../resources/Dockerfile.j2 | 47 ++++++++++++ .../resources/jenkins.service.j2 | 16 ++++ 9 files changed, 168 insertions(+) create mode 100644 setup/ubuntu16.04_docker_alpine3.4/.gitignore create mode 100644 setup/ubuntu16.04_docker_alpine3.4/README.md create mode 100644 setup/ubuntu16.04_docker_alpine3.4/ansible-playbook.yaml create mode 100644 setup/ubuntu16.04_docker_alpine3.4/ansible-vars.yaml create mode 100644 setup/ubuntu16.04_docker_alpine3.4/ansible.cfg create mode 100644 setup/ubuntu16.04_docker_alpine3.4/requirements.yml create mode 100644 setup/ubuntu16.04_docker_alpine3.4/resources/Dockerfile.j2 create mode 100644 setup/ubuntu16.04_docker_alpine3.4/resources/jenkins.service.j2 diff --git a/setup/ansible-inventory b/setup/ansible-inventory index aca2346f6..e3f8911b3 100644 --- a/setup/ansible-inventory +++ b/setup/ansible-inventory @@ -149,3 +149,6 @@ test-ibm-aix61-ppc64-1:18822 [iojs-build-rhel72-linuxonecc] test-linuxonecc-rhel72-s390x-1 test-linuxonecc-rhel72-s390x-2 + +[test-ubuntu1604_docker_alpine34] +test-digitalocean-ubuntu1604_docker_alpine34-x64-1 \ No newline at end of file diff --git a/setup/ubuntu16.04_docker_alpine3.4/.gitignore b/setup/ubuntu16.04_docker_alpine3.4/.gitignore new file mode 100644 index 000000000..8809e43dd --- /dev/null +++ b/setup/ubuntu16.04_docker_alpine3.4/.gitignore @@ -0,0 +1,2 @@ +host_vars/test-* +roles/* diff --git a/setup/ubuntu16.04_docker_alpine3.4/README.md b/setup/ubuntu16.04_docker_alpine3.4/README.md new file mode 100644 index 000000000..799ce7e6a --- /dev/null +++ b/setup/ubuntu16.04_docker_alpine3.4/README.md @@ -0,0 +1,17 @@ +# Alpine Linux 3.4 via Docker on Ubuntu 16.04 Setup + +Add this to your ssh config: + +```text +Host test-digitalocean-ubuntu1604_adocker_alpine34-x64-1 + HostName 107.170.75.204 + User root + #IdentityFile nodejs_build_test +``` + +..then run: + +```bash +$ ansible-galaxy install -p . angstwad.docker_ubuntu +$ ansible-playbook -i ../ansible-inventory ansible-playbook.yaml +``` diff --git a/setup/ubuntu16.04_docker_alpine3.4/ansible-playbook.yaml b/setup/ubuntu16.04_docker_alpine3.4/ansible-playbook.yaml new file mode 100644 index 000000000..b5e14ea3a --- /dev/null +++ b/setup/ubuntu16.04_docker_alpine3.4/ansible-playbook.yaml @@ -0,0 +1,76 @@ +--- +- hosts: test-ubuntu1604_docker_alpine34 + remote_user: root + gather_facts: False + + tasks: + - name: Check for python + raw: which python + register: python_exists + failed_when: python_exists.rc > 1 + + - name: Bootstrap for the apt package + raw: apt install -y python-minimal aptitude + tags: bootstrap + when: python_exists.rc == 1 + +- hosts: test-ubuntu1604_docker_alpine34 + remote_user: root + gather_facts: True + + tasks: + - include_vars: ansible-vars.yaml + tags: vars + + - name: General | APT Update and upgrade + apt: update_cache=yes upgrade=full + tags: general + + - name: General | Install required packages + apt: name={{ item }} update_cache=yes state=latest + with_items: packages + tags: general + + - name: User | Add {{ server_user }} user + user: name="{{ server_user }}" shell=/bin/bash + tags: user + + - name: User | Make work directories + file: + path: "/home/{{ server_user }}/{{ item }}" + state: directory + mode: 0755 + owner: "{{ server_user }}" + group: "{{ server_user }}" + with_items: + - build + - tmp + tags: user + +- name: Docker | Install Docker + hosts: test-ubuntu1604_docker_alpine34 + remote_user: root + gather_facts: True + roles: + - angstwad.docker_ubuntu + tags: docker + +- hosts: test-ubuntu1604_docker_alpine34 + remote_user: root + gather_facts: True + + tasks: + - name: Docker | Generate Dockerfile + template: src=./resources/Dockerfile.j2 dest=/root/Dockerfile + tags: docker + + - name: Docker | Build Alpine image + command: docker build -t node-ci:alpine-build /root/ + + - name: Init | Generate and copy init script + template: src=./resources/jenkins.service.j2 dest=/lib/systemd/system/jenkins.service + tags: init + + - name: Init | Start Jenkins + service: name=jenkins state=started enabled=yes + tags: init diff --git a/setup/ubuntu16.04_docker_alpine3.4/ansible-vars.yaml b/setup/ubuntu16.04_docker_alpine3.4/ansible-vars.yaml new file mode 100644 index 000000000..4be2eb6ac --- /dev/null +++ b/setup/ubuntu16.04_docker_alpine3.4/ansible-vars.yaml @@ -0,0 +1,4 @@ +--- +server_user: iojs +packages: + - curl diff --git a/setup/ubuntu16.04_docker_alpine3.4/ansible.cfg b/setup/ubuntu16.04_docker_alpine3.4/ansible.cfg new file mode 100644 index 000000000..9af689044 --- /dev/null +++ b/setup/ubuntu16.04_docker_alpine3.4/ansible.cfg @@ -0,0 +1,2 @@ +[defaults] +roles_path = ./roles/ diff --git a/setup/ubuntu16.04_docker_alpine3.4/requirements.yml b/setup/ubuntu16.04_docker_alpine3.4/requirements.yml new file mode 100644 index 000000000..566f69dd3 --- /dev/null +++ b/setup/ubuntu16.04_docker_alpine3.4/requirements.yml @@ -0,0 +1 @@ +- src: angstwad.docker_ubuntu diff --git a/setup/ubuntu16.04_docker_alpine3.4/resources/Dockerfile.j2 b/setup/ubuntu16.04_docker_alpine3.4/resources/Dockerfile.j2 new file mode 100644 index 000000000..da9376a01 --- /dev/null +++ b/setup/ubuntu16.04_docker_alpine3.4/resources/Dockerfile.j2 @@ -0,0 +1,47 @@ +FROM alpine:3.4 + +ENV LC_ALL C +ENV USER {{ server_user }} +ENV JOBS {{ server_jobs | default(ansible_processor_vcpus) }} +ENV HOME /home/{{ server_user }} +ENV NODE_TEST_DIR /home/{{ server_user }}/tmp +ENV PATH /usr/lib/ccache/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV NODE_COMMON_PIPE /home/{{ server_user }}/test.pipe +ENV OSTYPE linux-gnu +ENV DESTCPU x64 +ENV ARCH x64 + +RUN apk add --no-cache \ + libstdc++ \ + && apk add --no-cache --virtual .build-deps \ + binutils-gold \ + curl \ + g++ \ + gcc \ + gnupg \ + libgcc \ + linux-headers \ + make \ + paxctl \ + python \ + tar \ + ccache \ + openjdk8 \ + git \ + procps \ + ssh + +RUN addgroup -g 1000 {{ server_user }} + +RUN adduser -G {{ server_user }} -D -u 1000 {{ server_user }} + +VOLUME [ "/home/{{ server_user }}/" ] + +USER iojs + +CMD cd /home/iojs \ + && curl https://ci.nodejs.org/jnlpJars/slave.jar -O \ + && java \ + -jar slave.jar \ + -jnlpUrl https://ci.nodejs.org/computer/test-digitalocean-ubuntu1604_docker_alpine34-x64-1/slave-agent.jnlp \ + -secret efbfadbf4807af0f1084a1e120ef5467b49432113661e11ce2ecc1ab71b96f38 diff --git a/setup/ubuntu16.04_docker_alpine3.4/resources/jenkins.service.j2 b/setup/ubuntu16.04_docker_alpine3.4/resources/jenkins.service.j2 new file mode 100644 index 000000000..9d8e2f42b --- /dev/null +++ b/setup/ubuntu16.04_docker_alpine3.4/resources/jenkins.service.j2 @@ -0,0 +1,16 @@ +[Unit] +Description=Jenkins Slave in Docker +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-alpine node-ci:alpine-build +ExecStop=/usr/bin/docker stop -t 5 node-ci-alpine +Restart=always +RestartSec=30 +StartLimitInterval=0