From 7e59a636cb57fcd275d133ad640a0d4e1d8c5172 Mon Sep 17 00:00:00 2001 From: dhs Date: Fri, 17 Apr 2020 09:22:34 +0200 Subject: [PATCH] improved testing --- .ansible-lint | 9 +++ .gitignore | 9 +++ .travis.yml | 28 +++++---- .yamllint | 5 ++ molecule/default/Dockerfile.j2 | 14 ----- molecule/default/INSTALL.rst | 16 ------ molecule/default/converge.yml | 9 +++ molecule/default/molecule.yml | 38 ++++++++----- molecule/default/playbook.yml | 5 -- molecule/default/prepare.yml | 22 +++++++ molecule/default/tests/test_default.py | 23 ++++++-- requirements-travis.txt | 79 ++++++++++++++------------ tasks/main.yml | 1 + 13 files changed, 156 insertions(+), 102 deletions(-) create mode 100644 .ansible-lint delete mode 100644 molecule/default/Dockerfile.j2 delete mode 100644 molecule/default/INSTALL.rst create mode 100644 molecule/default/converge.yml delete mode 100644 molecule/default/playbook.yml create mode 100644 molecule/default/prepare.yml diff --git a/.ansible-lint b/.ansible-lint new file mode 100644 index 0000000..a48e52d --- /dev/null +++ b/.ansible-lint @@ -0,0 +1,9 @@ +use_default_rules: true + +exclude_paths: + - venv/ + - molecule/default/ + - tests/ + +#skip_list: +# - '301' diff --git a/.gitignore b/.gitignore index 0d20b64..64b554e 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,10 @@ *.pyc + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ diff --git a/.travis.yml b/.travis.yml index 4dfdb97..6cb9707 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,18 +1,26 @@ --- -sudo: required language: python python: - - "3.6" + - "3.7" + +env: + matrix: + - MOLECULE_DISTRO: centos8 + - MOLECULE_DISTRO: centos7 + - MOLECULE_DISTRO: ubuntu1804 + - MOLECULE_DISTRO: ubuntu1604 + - MOLECULE_DISTRO: debian10 + - MOLECULE_DISTRO: debian9 + - MOLECULE_DISTRO: fedora31 + services: - docker -before_install: - - sudo apt-get -qq update - - > - sudo apt-get install -o Dpkg::Options::="--force-confold" - --force-yes -y docker-ce + install: - - pip install -r requirements-travis.txt + - python -m pip -q install -r requirements-travis.txt + script: - molecule test -notifications: - webhooks: https://galaxy.ansible.com/api/v1/notifications/ + +# notifications: +# webhooks: https://galaxy.ansible.com/api/v1/notifications/ diff --git a/.yamllint b/.yamllint index da36038..85311f3 100644 --- a/.yamllint +++ b/.yamllint @@ -4,3 +4,8 @@ rules: line-length: max: 100 level: warning + +ignore: | + /venv/ + /env/ + /molecule/ diff --git a/molecule/default/Dockerfile.j2 b/molecule/default/Dockerfile.j2 deleted file mode 100644 index 4a1d8fe..0000000 --- a/molecule/default/Dockerfile.j2 +++ /dev/null @@ -1,14 +0,0 @@ -# Molecule managed - -{% if item.registry is defined %} -FROM {{ item.registry.url }}/{{ item.image }} -{% else %} -FROM {{ item.image }} -{% endif %} - -RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get install -y python sudo git bash ca-certificates && apt-get clean; \ - elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python sudo python-devel git python2-dnf bash && dnf clean all; \ - elif [ $(command -v yum) ]; then yum makecache fast && yum install -y python git sudo yum-plugin-ovl bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \ - elif [ $(command -v zypper) ]; then zypper refresh && zypper install -y python git sudo bash python-xml && zypper clean -a; \ - elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo git bash ca-certificates; \ - elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python git sudo bash ca-certificates && xbps-remove -O; fi diff --git a/molecule/default/INSTALL.rst b/molecule/default/INSTALL.rst deleted file mode 100644 index b42edf5..0000000 --- a/molecule/default/INSTALL.rst +++ /dev/null @@ -1,16 +0,0 @@ -******* -Docker driver installation guide -******* - -Requirements -============ - -* General molecule dependencies (see https://molecule.readthedocs.io/en/latest/installation.html) -* Docker Engine -* docker-py -* docker - -Install -======= - - $ sudo pip install docker-py diff --git a/molecule/default/converge.yml b/molecule/default/converge.yml new file mode 100644 index 0000000..828005f --- /dev/null +++ b/molecule/default/converge.yml @@ -0,0 +1,9 @@ +--- +- name: Converge + hosts: all + become: true + roles: + - ansible-role-gitea + vars: + gitea_http_domain: localhost + gitea_root_url: http://localhost diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml index 8f011ca..7f81391 100644 --- a/molecule/default/molecule.yml +++ b/molecule/default/molecule.yml @@ -1,32 +1,40 @@ --- dependency: name: galaxy + driver: name: docker -lint: - name: yamllint + +lint: | + set -e + yamllint . + ansible-lint + platforms: - - name: centos7 - image: centos:7 - - name: debian-stretch - image: debian:stretch - - name: debian-jessie - image: debian:jessie - - name: ubuntu-xenial - image: ubuntu:xenial - - name: ubuntu-bionic - image: ubuntu:bionic + - name: instance + image: geerlingguy/docker-${MOLECULE_DISTRO:-centos7}-ansible:latest + pre_build_image: true + command: ${MOLECULE_DOCKER_COMMAND:-""} + volumes: + - /sys/fs/cgroup:/sys/fs/cgroup:ro + privileged: true + + provisioner: name: ansible - lint: - name: ansible-lint + playbooks: + prepare: prepare.yml + converge: converge.yml + scenario: - name: default test_sequence: - lint - destroy + - syntax - create + - prepare - converge + - verify - destroy verifier: diff --git a/molecule/default/playbook.yml b/molecule/default/playbook.yml deleted file mode 100644 index 35294c0..0000000 --- a/molecule/default/playbook.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -- name: Converge - hosts: all - roles: - - role: ansible-role-gitea diff --git a/molecule/default/prepare.yml b/molecule/default/prepare.yml new file mode 100644 index 0000000..54efeee --- /dev/null +++ b/molecule/default/prepare.yml @@ -0,0 +1,22 @@ +--- +- name: Perpare + hosts: all + become: true + tasks: + - name: install dependencies for gitea (RedHat based systems) + yum: + name: "{{ packages }}" + state: present + update_cache: true + when: ansible_os_family == "RedHat" + - name: install dependencies for gitea (Debian based systems) + apt: + name: "{{ packages }}" + state: present + update_cache: true + when: ansible_os_family == "Debian" + + vars: + packages: + - git + - curl diff --git a/molecule/default/tests/test_default.py b/molecule/default/tests/test_default.py index eedd64a..bc93aa1 100644 --- a/molecule/default/tests/test_default.py +++ b/molecule/default/tests/test_default.py @@ -1,14 +1,25 @@ import os - import testinfra.utils.ansible_runner testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all') -def test_hosts_file(host): - f = host.file('/etc/hosts') +def test_gitea_binary(host): + gitea_bin = host.file('/usr/local/bin/gitea') + assert gitea_bin.exists + assert gitea_bin.user == 'root' + assert gitea_bin.group == 'root' - assert f.exists - assert f.user == 'root' - assert f.group == 'root' +def test_gitea_config_file(host): + gitea_config = host.file('/etc/gitea/gitea.ini') + assert gitea_config.exists + assert gitea_config.mode == 0o600 + +def test_gitea_service_running(host): + gitea = host.service('gitea') + assert gitea.is_running + +def test_gitea_reachable(host): + gitea_http = host.run('curl http://localhost:3000') + assert gitea_http.rc == 0 diff --git a/requirements-travis.txt b/requirements-travis.txt index f8691f7..87bc9ae 100644 --- a/requirements-travis.txt +++ b/requirements-travis.txt @@ -1,62 +1,69 @@ -ansible==2.7.12 -ansible-lint==4.1.0 +ansible==2.9.6 +ansible-lint==4.2.0 anyconfig==0.9.7 -arrow==0.13.1 +arrow==0.15.5 asn1crypto==0.24.0 atomicwrites==1.3.0 attrs==19.1.0 -bcrypt==3.1.6 +autopep8==1.5.1 +bcrypt==3.1.7 binaryornot==0.4.4 -Cerberus==1.2 -certifi==2019.3.9 -cffi==1.12.2 +Cerberus==1.3.2 +certifi==2020.4.5.1 +cffi==1.14.0 chardet==3.0.4 -click==6.7 -click-completion==0.3.1 -colorama==0.3.9 -cookiecutter==1.6.0 -cryptography==2.6.1 -docker==3.7.0 +click==7.1.1 +click-completion==0.5.2 +click-help-colors==0.8 +colorama==0.4.3 +cookiecutter==1.7.0 +cryptography==2.9 +docker==4.2.0 docker-pycreds==0.4.0 entrypoints==0.3 -fasteners==0.14.1 +fasteners==0.15 flake8==3.7.7 -future==0.17.1 +future==0.18.2 git-url-parse==1.2.1 -idna==2.7 -Jinja2==2.10.1 +idna==2.9 +importlib-metadata==1.6.0 +Jinja2==2.11.2 jinja2-time==0.2.0 MarkupSafe==1.1.1 mccabe==0.6.1 -molecule==2.20.1 +molecule==3.0.3 monotonic==1.5 more-itertools==6.0.0 -paramiko==2.4.2 -pathspec==0.5.9 +paramiko==2.7.1 +pathspec==0.8.0 pbr==5.1.1 -pexpect==4.6.0 -pluggy==0.9.0 -poyo==0.4.2 +pexpect==4.8.0 +pi==0.1.2 +pluggy==0.13.1 +poyo==0.5.0 psutil==5.4.6 ptyprocess==0.6.0 py==1.8.0 pyasn1==0.4.5 pycodestyle==2.5.0 -pycparser==2.19 +pycparser==2.20 pyflakes==2.1.1 PyNaCl==1.3.0 pytest==4.3.1 -python-dateutil==2.8.0 -python-gilt==1.2.1 -PyYAML==5.1 -requests==2.21.0 -ruamel.yaml==0.15.89 +python-dateutil==2.8.1 +python-gilt==1.2.3 +PyYAML==5.3.1 +requests==2.23.0 +ruamel.yaml==0.16.10 +ruamel.yaml.clib==0.2.0 sh==1.12.14 -six==1.11.0 -tabulate==0.8.2 -testinfra==1.19.0 +shellingham==1.3.2 +six==1.14.0 +tabulate==0.8.7 +testinfra==5.0.0 tree-format==0.1.2 -urllib3==1.25.2 -websocket-client==0.55.0 -whichcraft==0.5.2 -yamllint==1.11.1 +urllib3==1.25.8 +websocket-client==0.57.0 +whichcraft==0.6.1 +yamllint==1.22.1 +zipp==3.1.0 diff --git a/tasks/main.yml b/tasks/main.yml index a57b1e2..53da9ac 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -52,6 +52,7 @@ state: started enabled: true when: ansible_service_mgr == "systemd" + ignore_errors: true - include: fail2ban.yml when: gitea_fail2ban_enabled|bool