feat: implement molecule to test role

This commit is contained in:
2026-03-10 17:47:11 -03:00
parent 2a7cafa46e
commit c696c57a5e
4 changed files with 113 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
#SPDX-License-Identifier: GPL-3.0-only
---
name: Update Traefik Version
on:
schedule:
- cron: '0 6 * * 1' # Every Monday at 06:00 UTC
workflow_dispatch:
jobs:
update-version:
runs-on: fedora-latest
steps:
- name: Checkout
uses: actions/checkout@v6
with:
path: ansible_role_proxy
- name: Check versions
id: check
working-directory: ansible_role_proxy
run: |
LATEST=$(curl -sf https://api.github.com/repos/traefik/traefik/releases/latest | jq -r '.tag_name')
CURRENT=$(grep "^traefik_version:" defaults/main.yml | sed "s/traefik_version: '//;s/'//")
echo "latest=$LATEST" >> "$GITHUB_OUTPUT"
if [ "$LATEST" = "$CURRENT" ]; then
echo "needs_update=false" >> "$GITHUB_OUTPUT"
echo "Already on latest: $CURRENT"
else
echo "needs_update=true" >> "$GITHUB_OUTPUT"
echo "Update available: $CURRENT -> $LATEST"
fi
- name: Install Molecule
if: steps.check.outputs.needs_update == 'true'
run: pip install ansible molecule molecule-plugins[podman]
- name: Update traefik_version
if: steps.check.outputs.needs_update == 'true'
working-directory: ansible_role_proxy
run: |
sed -i "s/^traefik_version: '.*'$/traefik_version: '${{ steps.check.outputs.latest }}'/" defaults/main.yml
- name: Run Molecule tests
if: steps.check.outputs.needs_update == 'true'
working-directory: ansible_role_proxy
run: molecule test
# - name: Commit and push
# if: steps.check.outputs.needs_update == 'true'
# working-directory: ansible_role_proxy
# run: |
# git config user.name "giabot"
# git config user.email "bot@mail.gianet.us"
# git remote set-url origin "https://giabot:${{ secrets.GITEA_TOKEN }}@gianet.us/engineering/ansible_role_reverse.git"
# git add defaults/main.yml
# git commit -m "patch: update traefik_version to ${{ steps.check.outputs.latest }}"
# git push origin main

View File

@@ -0,0 +1,6 @@
#SPDX-License-Identifier: GPL-3.0-only
---
- name: Converge
hosts: all
roles:
- role: ansible_role_proxy

View File

@@ -0,0 +1,26 @@
#SPDX-License-Identifier: GPL-3.0-only
---
dependency:
name: galaxy
driver:
name: podman
platforms:
- name: instance
image: ghcr.io/geerlingguy/docker-debian12-ansible:latest
pre_build_image: true
privileged: true
systemd: always
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
cgroupns_mode: host
provisioner:
name: ansible
playbooks:
converge: converge.yml
verify: verify.yml
verifier:
name: ansible

View File

@@ -0,0 +1,23 @@
#SPDX-License-Identifier: GPL-3.0-only
---
- name: Verify
hosts: all
tasks:
- name: Check traefik binary
ansible.builtin.stat:
path: /opt/traefik/traefik
register: traefik_binary
- name: Assert traefik binary is executable
ansible.builtin.assert:
that:
- traefik_binary.stat.exists
- traefik_binary.stat.executable
- name: Gather service facts
ansible.builtin.service_facts:
- name: Assert traefik service is present
ansible.builtin.assert:
that:
- "'traefik.service' in ansible_facts.services"