diff --git a/.drone.jsonnet b/.drone.jsonnet new file mode 100644 index 0000000..d27d5ba --- /dev/null +++ b/.drone.jsonnet @@ -0,0 +1,75 @@ +// Distros to Test on ;) +local distros = ['debian11', + 'ubuntu2204']; + +/* Configuration of DIND */ +local docker_service() = + { + name: 'docker', + image: 'docker:dind', + privileged: true, + volumes: [{ name: 'dockersock', path: '/var/run' },], + }; + +local email_notification() = + { + name: 'notify by email', + image: 'drillster/drone-email', + settings: + { host: 'mail.guise.net.nz', + username: + { from_secret: 'EMAIL_USER' }, + password: + { from_secret: 'EMAIL_PASS' }, + from: 'drone@guise.net.nz' + } + }; + +local test_distro(distribution) = + { + name: 'Molecule test on %(distribution)s' % { distribution: distribution }, + volumes: [{ name: 'dockersock', path: '/var/run' },], + pull: true, + image: 'guisea/ansible-molecule:alpine-latest', + commands: [ + 'sleep 10', // give docker enough time to start + 'mkdir ${DRONE_REPO_NAME}', + 'rsync -a . ${DRONE_REPO_NAME} --exclude ${DRONE_REPO_NAME}', + 'cd ${DRONE_REPO_NAME}', + 'molecule test' + ], + environment: + { MOLECULE_DISTRO: '%(distribution)s' % { distribution: distribution } + }, + }; + +local gen_pipeline(distro) = + {kind: 'pipeline', + type: 'docker', + name: 'Test on %(distro)s' % { distro: distro }, + steps: + [test_distro(distro)], + services: + [docker_service()], + volumes: + [{ + name: 'dockersock', + temp: {}, + },], + }; + +// Generate the output +[ + gen_pipeline('debian11'), + gen_pipeline('ubuntu2204'), + {kind: 'pipeline', + type: 'docker', + name: 'Notify', + steps: [email_notification()], + when: + { status: [ 'success', 'failure' ] }, + depends_on: + ['Test on %(distro)s' % { distro: distro } + for distro in distros] + } +] \ No newline at end of file diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml index b60cb0d..3d4d7b5 100644 --- a/molecule/default/molecule.yml +++ b/molecule/default/molecule.yml @@ -5,11 +5,11 @@ dependency: driver: name: docker platforms: - - name: instance - image: docker.io/guisea/docker-ubuntu22.04-ansible - command: /usr/bin/systemctl + - name: ${MOLECULE_DISTRO:-ubuntu2204} + image: docker.io/guisea/docker-${MOLECULE_DISTRO:-ubuntu2204}-ansible + command: ${MOLECULE_DOCKER_COMMAND:-""} pre_build_image: true provisioner: name: ansible -verifier: - name: ansible + playbooks: + converge: ${MOLECULE_PLAYBOOK:-converge.yml} diff --git a/molecule/default/verify.yml b/molecule/default/verify.yml deleted file mode 100644 index 626f4da..0000000 --- a/molecule/default/verify.yml +++ /dev/null @@ -1,18 +0,0 @@ ---- -# This is an example playbook to execute Ansible tests. - -- name: Verify - hosts: all - gather_facts: false - tasks: - - name: fetch /etc/apt/sources.list - command: cat /etc/apt/sources.list - register: sources - - - name: Output info - debug: - var: sources - - - name: Example assertion - ansible.builtin.assert: - that: true diff --git a/tasks/main.yml b/tasks/main.yml index dd9e208..8218da8 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -32,12 +32,10 @@ when: cron_apt_apply_security - name: Comment out security lines in /etc/apt/sources.list - lineinfile: - dest: /etc/apt/sources.list - regexp: '^(deb.*security.*?main.*)' - line: '# \1' - backrefs: yes - state: present + replace: + path: /etc/apt/sources.list + regexp: '^(deb.*security.*)' + replace: '# \1' when: cron_apt_apply_security