--- name: CI 'on': pull_request: push: branches: - master schedule: - cron: "0 5 * * 4" jobs: lint: name: Lint runs-on: ubuntu-latest steps: - name: Check out the codebase. uses: actions/checkout@v2 - name: Set up Python 3. uses: actions/setup-python@v2 with: python-version: '3.x' - name: Install test dependencies. run: pip3 install yamllint ansible ansible-lint - name: Lint code. run: | yamllint . ansible-lint integration: name: Integration runs-on: ${{ matrix.os }} strategy: matrix: os: - macos-10.15 steps: - name: Check out the codebase. uses: actions/checkout@v2 - name: Uninstall GitHub Actions' built-in Homebrew. run: tests/uninstall-homebrew.sh - name: Uninstall GitHub Actions' built-in browser installs. run: | sudo rm -rf /Applications/Firefox.app sudo rm -rf /Applications/Google\ Chrome.app - name: Install test dependencies. run: sudo pip3 install ansible - name: Set up the test environment. run: | cp tests/ansible.cfg ./ansible.cfg cp tests/inventory ./inventory cp tests/config.yml ./config.yml ansible-galaxy install -r requirements.yml -p ./roles - name: Test the playbook's syntax. run: ansible-playbook main.yml --syntax-check - name: Test the playbook. run: ansible-playbook main.yml env: ANSIBLE_FORCE_COLOR: '1' - name: Idempotence check. run: | idempotence=$(mktemp) ansible-playbook main.yml | tee -a ${idempotence} tail ${idempotence} | grep -q 'changed=0.*failed=0' && (echo 'Idempotence test: pass' && exit 0) || (echo 'Idempotence test: fail' && exit 1) env: ANSIBLE_FORCE_COLOR: '1'