name: Tests 'on': push: branches: - master pull_request: jobs: editorconfig: name: Editorconfig runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v4 - name: Install editorconfig-checker run: | gh release download --pattern "*linux-amd64.tar.gz" --dir /tmp tar --extract --gzip --strip-components 1 --file /tmp/ec-linux-amd64.tar.gz --directory /tmp chmod +x /tmp/ec-linux-amd64 mv /tmp/ec-linux-amd64 /usr/local/bin/ec env: GH_REPO: editorconfig-checker/editorconfig-checker GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - name: Run editorconfig-checker run: | ec dockerfile: name: Dockerfile runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v4 - name: Check for Dockerfile files id: check_dockerfile uses: andstor/file-existence-action@v2 with: files: "**/Dockerfile*" - name: Install hadolint if: steps.check_dockerfile.outputs.files_exists == 'true' run: | gh release download --pattern "*Linux-x86_64" --dir /tmp chmod +x /tmp/hadolint-Linux-x86_64 mv /tmp/hadolint-Linux-x86_64 /usr/local/bin/hadolint env: GH_REPO: hadolint/hadolint GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - name: Run hadolint if: steps.check_dockerfile.outputs.files_exists == 'true' run: | find . -name "Dockerfile*" -not -name "Dockerfile.j2" -not -path "*/ansible_collections/*" -print0 | xargs -0 -I{} hadolint "{}" shell: name: Shell runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v4 - name: Check for Shell files id: check_shell uses: andstor/file-existence-action@v2 with: files: "**/*.sh" - name: Install shellcheck if: steps.check_shell.outputs.files_exists == 'true' run: | gh release download --pattern "*linux.x86_64.tar.xz" --dir /tmp tar --extract --xz --strip-components 1 --file /tmp/shellcheck-*.linux.x86_64.tar.xz --directory /tmp chmod +x /tmp/shellcheck mv /tmp/shellcheck /usr/local/bin/shellcheck env: GH_REPO: koalaman/shellcheck GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - name: Run shellcheck if: steps.check_shell.outputs.files_exists == 'true' run: | find . -name "*.sh" -not -path "*/ansible_collections/*" -print0 | xargs -0 -I{} shellcheck --external-sources "{}" yaml: name: YAML runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v4 - name: Check for YAML files id: check_yaml uses: andstor/file-existence-action@v2 with: files: "**/*.yml" - name: Install yamllint if: steps.check_yaml.outputs.files_exists == 'true' run: | pip3 install --disable-pip-version-check yamllint - name: Run yamllint if: steps.check_yaml.outputs.files_exists == 'true' run: | yamllint --strict . python: name: Python runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v4 - name: Check for Python files id: check_python uses: andstor/file-existence-action@v2 with: files: "**/*.py" - name: Install flake8 if: steps.check_python.outputs.files_exists == 'true' run: | pip3 install --disable-pip-version-check flake8 - name: Run flake8 if: steps.check_python.outputs.files_exists == 'true' run: | flake8 --show-source . - name: Install isort if: steps.check_python.outputs.files_exists == 'true' run: | pip3 install --disable-pip-version-check isort[colors] - name: Run isort if: steps.check_python.outputs.files_exists == 'true' run: | isort . --check-only --diff --color - name: Check for Tox file id: check_tox uses: andstor/file-existence-action@v2 with: files: "tox.ini" - name: Install tox if: steps.check_tox.outputs.files_exists == 'true' run: | pip3 install --disable-pip-version-check tox - name: Install test dependencies if: steps.check_tox.outputs.files_exists == 'true' run: | make dev-requirements - name: Run tox if: steps.check_tox.outputs.files_exists == 'true' run: | tox ansible: name: Ansible runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v4 - name: Check for Ansible files id: check_ansible uses: andstor/file-existence-action@v2 with: files: "tasks, meta" - name: Set up Python 3.x if: steps.check_ansible.outputs.files_exists == 'true' uses: actions/setup-python@v5 with: python-version: '3.x' - name: Install ansible if: steps.check_ansible.outputs.files_exists == 'true' run: | pip3 install --disable-pip-version-check ansible - name: Install ansible-lint if: steps.check_ansible.outputs.files_exists == 'true' run: | pip3 install --disable-pip-version-check ansible-lint - name: Run ansible-lint if: steps.check_ansible.outputs.files_exists == 'true' run: | ansible-lint --force-color . - name: Check for Molecule files id: check_molecule uses: andstor/file-existence-action@v2 with: files: "molecule" - name: Install molecule if: steps.check_molecule.outputs.files_exists == 'true' run: | pip3 install --disable-pip-version-check molecule molecule-plugins[docker] pytest-testinfra - name: Run molecule if: steps.check_molecule.outputs.files_exists == 'true' run: | molecule test --all docker-compose: name: Docker-Compose runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v4 - name: Check for Docker-Compose test file id: check_docker_compose_test uses: andstor/file-existence-action@v2 with: files: "docker-compose.test.yml" - name: Run docker-compose test if: steps.check_docker_compose_test.outputs.files_exists == 'true' run: | docker compose --file docker-compose.test.yml build go: name: Go runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v4 - name: Check for Go files id: check_go uses: andstor/file-existence-action@v2 with: files: "**/*.go" - name: Set up Go if: steps.check_go.outputs.files_exists == 'true' uses: actions/setup-go@v5 with: go-version: 'stable' - name: Run go vet if: steps.check_go.outputs.files_exists == 'true' run: | go vet ./... - name: Run go test if: steps.check_go.outputs.files_exists == 'true' run: | go test -v -cover ./... - name: Install staticcheck if: steps.check_go.outputs.files_exists == 'true' run: | gh release download --pattern "*linux_amd64.tar.gz" --dir /tmp tar --extract --gzip --strip-components 1 --file /tmp/staticcheck_linux_amd64.tar.gz --directory /tmp chmod +x /tmp/staticcheck mv /tmp/staticcheck /usr/local/bin/staticcheck env: GH_REPO: dominikh/go-tools GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - name: Run staticcheck if: steps.check_go.outputs.files_exists == 'true' run: | staticcheck