From 60c2e2bd86e30d11af49d8ca66906a2977d0b518 Mon Sep 17 00:00:00 2001 From: Robert de Bock Date: Thu, 23 Aug 2018 07:23:12 +0200 Subject: [PATCH] Introduce experimental builds on bleeding edge distributions. --- .travis.yml | 15 ++++++ molecule/debian-unstable/Dockerfile.j2 | 3 ++ molecule/debian-unstable/molecule.yml | 22 ++++++++ molecule/debian-unstable/playbook.yml | 10 ++++ .../debian-unstable/tests/test_default.yml | 7 +++ molecule/debian-unstable/verify.yml | 53 +++++++++++++++++++ molecule/ubuntu-devel/Dockerfile.j2 | 3 ++ molecule/ubuntu-devel/molecule.yml | 22 ++++++++ molecule/ubuntu-devel/playbook.yml | 10 ++++ molecule/ubuntu-devel/tests/test_default.yml | 7 +++ molecule/ubuntu-devel/verify.yml | 53 +++++++++++++++++++ 11 files changed, 205 insertions(+) create mode 100644 molecule/debian-unstable/Dockerfile.j2 create mode 100644 molecule/debian-unstable/molecule.yml create mode 100644 molecule/debian-unstable/playbook.yml create mode 100644 molecule/debian-unstable/tests/test_default.yml create mode 100644 molecule/debian-unstable/verify.yml create mode 100644 molecule/ubuntu-devel/Dockerfile.j2 create mode 100644 molecule/ubuntu-devel/molecule.yml create mode 100644 molecule/ubuntu-devel/playbook.yml create mode 100644 molecule/ubuntu-devel/tests/test_default.yml create mode 100644 molecule/ubuntu-devel/verify.yml diff --git a/.travis.yml b/.travis.yml index 7ebac71..e5c04d8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,6 +25,9 @@ env: - version=">=2.4,<2.5" distro="debian-stable" - version=">=2.5,<2.6" distro="debian-stable" - version=">=2.6,<2.7" distro="debian-stable" + - version=">=2.4,<2.5" distro="debian-unstable" + - version=">=2.5,<2.6" distro="debian-unstable" + - version=">=2.6,<2.7" distro="debian-unstable" - version=">=2.4,<2.5" distro="fedora-latest" - version=">=2.5,<2.6" distro="fedora-latest" - version=">=2.6,<2.7" distro="fedora-latest" @@ -43,12 +46,24 @@ env: - version=">=2.4,<2.5" distro="ubuntu-latest" - version=">=2.5,<2.6" distro="ubuntu-latest" - version=">=2.6,<2.7" distro="ubuntu-latest" + - version=">=2.4,<2.5" distro="ubuntu-devel" + - version=">=2.5,<2.6" distro="ubuntu-devel" + - version=">=2.6,<2.7" distro="ubuntu-devel" matrix: allow_failures: + - env: version=">=2.4,<2.5" distro="alpine-edge" + - env: version=">=2.5,<2.6" distro="alpine-edge" + - env: version=">=2.6,<2.7" distro="alpine-edge" + - env: version=">=2.4,<2.5" distro="debian-unstable" + - env: version=">=2.5,<2.6" distro="debian-unstable" + - env: version=">=2.6,<2.7" distro="debian-unstable" - env: version=">=2.4,<2.5" distro="fedora-rawhide" - env: version=">=2.5,<2.6" distro="fedora-rawhide" - env: version=">=2.6,<2.7" distro="fedora-rawhide" + - env: version=">=2.4,<2.5" distro="ubuntu-devel" + - env: version=">=2.5,<2.6" distro="ubuntu-devel" + - env: version=">=2.6,<2.7" distro="ubuntu-devel" cache: - pip diff --git a/molecule/debian-unstable/Dockerfile.j2 b/molecule/debian-unstable/Dockerfile.j2 new file mode 100644 index 0000000..299adf5 --- /dev/null +++ b/molecule/debian-unstable/Dockerfile.j2 @@ -0,0 +1,3 @@ +# Molecule managed + +FROM {{ item.image }} diff --git a/molecule/debian-unstable/molecule.yml b/molecule/debian-unstable/molecule.yml new file mode 100644 index 0000000..e6d36cf --- /dev/null +++ b/molecule/debian-unstable/molecule.yml @@ -0,0 +1,22 @@ +--- +dependency: + name: galaxy + options: + role-file: requirements.yml +driver: + name: docker +lint: + name: yamllint +platforms: + - name: tomcat-debian-unstable + image: debian:unstable +provisioner: + name: ansible + lint: + name: ansible-lint +scenario: + name: debian-unstable +verifier: + name: goss + lint: + name: yamllint diff --git a/molecule/debian-unstable/playbook.yml b/molecule/debian-unstable/playbook.yml new file mode 100644 index 0000000..88eef76 --- /dev/null +++ b/molecule/debian-unstable/playbook.yml @@ -0,0 +1,10 @@ +--- +- name: Converge + hosts: all + become: true + gather_facts: false + + roles: + - role: robertdebock.bootstrap + - role: robertdebock.java + - role: ansible-role-tomcat diff --git a/molecule/debian-unstable/tests/test_default.yml b/molecule/debian-unstable/tests/test_default.yml new file mode 100644 index 0000000..865e875 --- /dev/null +++ b/molecule/debian-unstable/tests/test_default.yml @@ -0,0 +1,7 @@ +# Molecule managed +--- +file: + /usr/bin/python: + exists: true + owner: root + group: root diff --git a/molecule/debian-unstable/verify.yml b/molecule/debian-unstable/verify.yml new file mode 100644 index 0000000..77a24ea --- /dev/null +++ b/molecule/debian-unstable/verify.yml @@ -0,0 +1,53 @@ +--- +# This is an example playbook to execute goss tests. +# Tests need distributed to the appropriate ansible host/groups +# prior to execution by `goss validate`. + +- name: Verify + hosts: all + become: true + vars: + goss_version: v0.3.2 + goss_arch: amd64 + goss_dst: /usr/local/bin/goss + goss_sha256sum: 2f6727375db2ea0f81bee36e2c5be78ab5ab8d5981f632f761b25e4003e190ec + goss_url: "https://github.com/aelsabbahy/goss/releases/download/{{ goss_version }}/goss-linux-{{ goss_arch }}" + goss_test_directory: /tmp + goss_format: documentation + tasks: + - name: Download and install Goss + get_url: + url: "{{ goss_url }}" + dest: "{{ goss_dst }}" + sha256sum: "{{ goss_sha256sum }}" + mode: 0755 + register: download_goss + until: download_goss is succeeded + retries: 3 + + - name: Copy Goss tests to remote + copy: + src: "{{ item }}" + dest: "{{ goss_test_directory }}/{{ item | basename }}" + with_fileglob: + - "{{ lookup('env', 'MOLECULE_VERIFIER_TEST_DIRECTORY') }}/test_*.yml" + + - name: Register test files + shell: "ls {{ goss_test_directory }}/test_*.yml" + register: test_files + + - name: Execute Goss tests + command: "{{ goss_dst }} -g {{ item }} validate --format {{ goss_format }}" + register: test_results + with_items: "{{ test_files.stdout_lines }}" + + - name: Display details about the Goss results + debug: + msg: "{{ item.stdout_lines }}" + with_items: "{{ test_results.results }}" + + - name: Fail when tests fail + fail: + msg: "Goss failed to validate" + when: item.rc != 0 + with_items: "{{ test_results.results }}" diff --git a/molecule/ubuntu-devel/Dockerfile.j2 b/molecule/ubuntu-devel/Dockerfile.j2 new file mode 100644 index 0000000..299adf5 --- /dev/null +++ b/molecule/ubuntu-devel/Dockerfile.j2 @@ -0,0 +1,3 @@ +# Molecule managed + +FROM {{ item.image }} diff --git a/molecule/ubuntu-devel/molecule.yml b/molecule/ubuntu-devel/molecule.yml new file mode 100644 index 0000000..ce50bed --- /dev/null +++ b/molecule/ubuntu-devel/molecule.yml @@ -0,0 +1,22 @@ +--- +dependency: + name: galaxy + options: + role-file: requirements.yml +driver: + name: docker +lint: + name: yamllint +platforms: + - name: tomcat-ubuntu-devel + image: ubuntu:devel +provisioner: + name: ansible + lint: + name: ansible-lint +scenario: + name: ubuntu-devel +verifier: + name: goss + lint: + name: yamllint diff --git a/molecule/ubuntu-devel/playbook.yml b/molecule/ubuntu-devel/playbook.yml new file mode 100644 index 0000000..88eef76 --- /dev/null +++ b/molecule/ubuntu-devel/playbook.yml @@ -0,0 +1,10 @@ +--- +- name: Converge + hosts: all + become: true + gather_facts: false + + roles: + - role: robertdebock.bootstrap + - role: robertdebock.java + - role: ansible-role-tomcat diff --git a/molecule/ubuntu-devel/tests/test_default.yml b/molecule/ubuntu-devel/tests/test_default.yml new file mode 100644 index 0000000..865e875 --- /dev/null +++ b/molecule/ubuntu-devel/tests/test_default.yml @@ -0,0 +1,7 @@ +# Molecule managed +--- +file: + /usr/bin/python: + exists: true + owner: root + group: root diff --git a/molecule/ubuntu-devel/verify.yml b/molecule/ubuntu-devel/verify.yml new file mode 100644 index 0000000..77a24ea --- /dev/null +++ b/molecule/ubuntu-devel/verify.yml @@ -0,0 +1,53 @@ +--- +# This is an example playbook to execute goss tests. +# Tests need distributed to the appropriate ansible host/groups +# prior to execution by `goss validate`. + +- name: Verify + hosts: all + become: true + vars: + goss_version: v0.3.2 + goss_arch: amd64 + goss_dst: /usr/local/bin/goss + goss_sha256sum: 2f6727375db2ea0f81bee36e2c5be78ab5ab8d5981f632f761b25e4003e190ec + goss_url: "https://github.com/aelsabbahy/goss/releases/download/{{ goss_version }}/goss-linux-{{ goss_arch }}" + goss_test_directory: /tmp + goss_format: documentation + tasks: + - name: Download and install Goss + get_url: + url: "{{ goss_url }}" + dest: "{{ goss_dst }}" + sha256sum: "{{ goss_sha256sum }}" + mode: 0755 + register: download_goss + until: download_goss is succeeded + retries: 3 + + - name: Copy Goss tests to remote + copy: + src: "{{ item }}" + dest: "{{ goss_test_directory }}/{{ item | basename }}" + with_fileglob: + - "{{ lookup('env', 'MOLECULE_VERIFIER_TEST_DIRECTORY') }}/test_*.yml" + + - name: Register test files + shell: "ls {{ goss_test_directory }}/test_*.yml" + register: test_files + + - name: Execute Goss tests + command: "{{ goss_dst }} -g {{ item }} validate --format {{ goss_format }}" + register: test_results + with_items: "{{ test_files.stdout_lines }}" + + - name: Display details about the Goss results + debug: + msg: "{{ item.stdout_lines }}" + with_items: "{{ test_results.results }}" + + - name: Fail when tests fail + fail: + msg: "Goss failed to validate" + when: item.rc != 0 + with_items: "{{ test_results.results }}"