name: Test Collection on: push: branches: [main, master, develop] pull_request: branches: [main, master, develop] workflow_dispatch: jobs: sanity: name: Sanity Tests (Ansible ${{ matrix.ansible-version }}) runs-on: ubuntu-latest strategy: fail-fast: false matrix: ansible-version: - stable-2.15 - stable-2.16 - stable-2.17 - devel steps: - name: Checkout code uses: actions/checkout@v4 with: path: ansible_collections/valid/nsupdate_zone - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install Ansible run: pip install https://github.com/ansible/ansible/archive/${{ matrix.ansible-version }}.tar.gz --disable-pip-version-check - name: Install collection dependencies run: pip install -r requirements.txt working-directory: ansible_collections/valid/nsupdate_zone - name: Run sanity tests run: ansible-test sanity --docker -v --color working-directory: ansible_collections/valid/nsupdate_zone syntax: name: Python Syntax Check runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Check Python syntax run: | python -m py_compile plugins/modules/nsupdate_zone.py python -m py_compile plugins/module_utils/deps.py echo "✓ All Python files have valid syntax" build: name: Build Collection runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install Ansible run: pip install ansible-core - name: Build collection run: ansible-galaxy collection build - name: Verify tarball run: | if [ -f valid-nsupdate_zone-*.tar.gz ]; then echo "✓ Collection built successfully" ls -lh valid-nsupdate_zone-*.tar.gz tar -tzf valid-nsupdate_zone-*.tar.gz | head -20 else echo "✗ Collection build failed" exit 1 fi - name: Upload collection artifact uses: actions/upload-artifact@v4 with: name: collection path: valid-nsupdate_zone-*.tar.gz retention-days: 7 lint: name: YAML and Ansible Lint runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: path: ansible_collections/valid/nsupdate_zone - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install dependencies run: | pip install ansible-core ansible-lint yamllint - name: Run yamllint run: yamllint . working-directory: ansible_collections/valid/nsupdate_zone continue-on-error: true - name: Run ansible-lint run: ansible-lint working-directory: ansible_collections/valid/nsupdate_zone continue-on-error: true documentation: name: Documentation Check runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: path: ansible_collections/valid/nsupdate_zone - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install Ansible run: pip install ansible-core - name: Validate module documentation run: | ansible-doc valid.nsupdate_zone.nsupdate_zone working-directory: ansible_collections/valid/nsupdate_zone unit: name: Unit Tests runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: path: ansible_collections/valid/nsupdate_zone - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install Ansible and dependencies run: | pip install ansible-core pip install -r requirements.txt working-directory: ansible_collections/valid/nsupdate_zone - name: Run unit tests run: | if [ -d "tests/unit/plugins/modules" ] && [ "$(ls -A tests/unit/plugins/modules)" ]; then ansible-test units --docker -v --color else echo "⚠ No unit tests found - skipping" fi working-directory: ansible_collections/valid/nsupdate_zone continue-on-error: true