Skip to content

feat: change hadolint package name #77

feat: change hadolint package name

feat: change hadolint package name #77

Workflow file for this run

name: Test
'on':
push:
branches:
- master
pull_request:
workflow_call:
secrets:
VAULT_PASS:
description: 'Password for Ansible Vault'
required: false
jobs:
commits:
name: Commits
runs-on: ubuntu-latest
steps:
- name: Check out repository
if: github.event_name == 'pull_request'
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Set up Node.js
if: github.event_name == 'pull_request'
uses: actions/setup-node@v4
with:
node-version: 'lts/*'
- name: Install commitlint
if: github.event_name == 'pull_request'
run: |
npm install --global @commitlint/cli @commitlint/config-conventional
- name: Configure commitlint
if: github.event_name == 'pull_request'
run: |
echo 'module.exports = {extends: ["@commitlint/config-conventional"]}' > commitlint.config.js
- name: Run commitlint
if: github.event_name == 'pull_request'
run: |
commitlint \
--from "${{ github.event.pull_request.base.sha }}" \
--to "${{ github.event.pull_request.head.sha }}" \
--color \
--verbose
secrets:
name: Secrets
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Install gitleaks
env:
GH_REPO: gitleaks/gitleaks
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release download --pattern "*linux_x64.tar.gz" --dir /tmp
tar --extract --gzip --file /tmp/*linux_x64.tar.gz --directory /tmp
chmod +x /tmp/gitleaks
mv /tmp/gitleaks /usr/local/bin/gitleaks
- name: Run gitleaks
run: |
gitleaks detect --no-banner --redact
editorconfig:
name: Editorconfig
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v5
- name: Install editorconfig-checker
env:
GH_REPO: editorconfig-checker/editorconfig-checker
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
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
- name: Run editorconfig-checker
run: |
ec -verbose
dockerfile:
name: Dockerfile
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v5
- name: Check for Dockerfile files
id: check_dockerfile
uses: andstor/file-existence-action@v3
with:
files: "**/Dockerfile*"
- name: Install hadolint
if: steps.check_dockerfile.outputs.files_exists == 'true'
env:
GH_REPO: hadolint/hadolint
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
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
- 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 "{}"
prettier:
name: Prettier
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v5
- name: Check for CSS files
id: check_css
uses: andstor/file-existence-action@v3
with:
files: "**/*.css"
- name: Check for HTML files
id: check_html
uses: andstor/file-existence-action@v3
with:
files: "**/*.html"
- name: Check for JS files
id: check_js
uses: andstor/file-existence-action@v3
with:
files: "**/*.js"
- name: Check for JSON files
id: check_json
uses: andstor/file-existence-action@v3
with:
files: "**/*.json"
- name: Check for Markdown files
id: check_md
uses: andstor/file-existence-action@v3
with:
files: "**/*.md"
- name: Set up NodeJS LTS
if: steps.check_css.outputs.files_exists == 'true' || steps.check_html.outputs.files_exists == 'true' || steps.check_js.outputs.files_exists == 'true' || steps.check_json.outputs.files_exists == 'true' || steps.check_md.outputs.files_exists == 'true'
uses: actions/setup-node@v4
with:
node-version: 'lts/*'
- name: Install prettier
if: steps.check_css.outputs.files_exists == 'true' || steps.check_html.outputs.files_exists == 'true' || steps.check_js.outputs.files_exists == 'true' || steps.check_json.outputs.files_exists == 'true' || steps.check_md.outputs.files_exists == 'true'
run: |
npm install --global prettier
- name: Run prettier
if: steps.check_css.outputs.files_exists == 'true' || steps.check_html.outputs.files_exists == 'true' || steps.check_js.outputs.files_exists == 'true' || steps.check_json.outputs.files_exists == 'true' || steps.check_md.outputs.files_exists == 'true'
run: |
prettier . --check
shell:
name: Shell
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v5
- name: Check for Shell files
id: check_shell
uses: andstor/file-existence-action@v3
with:
files: "**/*.sh"
- name: Install shellcheck
if: steps.check_shell.outputs.files_exists == 'true'
env:
GH_REPO: koalaman/shellcheck
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
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
- 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 "{}"
- name: Install shfmt
if: steps.check_shell.outputs.files_exists == 'true'
env:
GH_REPO: mvdan/sh
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release download --pattern "*_linux_amd64" --dir /tmp
mv /tmp/shfmt_*_linux_amd64 /tmp/shfmt
chmod +x /tmp/shfmt
mv /tmp/shfmt /usr/local/bin/shfmt
- name: Run shfmt
if: steps.check_shell.outputs.files_exists == 'true'
run: |
shfmt --indent 2 --case-indent --diff .
yaml:
name: YAML
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v5
- name: Check for YML files
id: check_yml
uses: andstor/file-existence-action@v3
with:
files: "**/*.yml"
- name: Check for YAML files
id: check_yaml
uses: andstor/file-existence-action@v3
with:
files: "**/*.yaml"
- name: Set up Python 3.x
if: steps.check_yml.outputs.files_exists == 'true' || steps.check_yaml.outputs.files_exists == 'true'
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install yamllint
if: steps.check_yml.outputs.files_exists == 'true' || steps.check_yaml.outputs.files_exists == 'true'
run: |
pip3 install --disable-pip-version-check yamllint
- name: Run yamllint
if: steps.check_yml.outputs.files_exists == 'true' || steps.check_yaml.outputs.files_exists == 'true'
run: |
touch ".gitignore"
touch ".yamlignore"
yamllint --strict .
python:
name: Python
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v5
- name: Check for Python files
id: check_python
uses: andstor/file-existence-action@v3
with:
files: "**/*.py"
- name: Set up Python 3.x
if: steps.check_python.outputs.files_exists == 'true'
uses: actions/setup-python@v5
with:
python-version: '3.x'
- 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: Install black
if: steps.check_python.outputs.files_exists == 'true'
run: |
pip3 install --disable-pip-version-check black
- name: Run black
if: steps.check_python.outputs.files_exists == 'true'
run: |
black . --check --diff --color
- name: Check for Tox file
id: check_tox
uses: andstor/file-existence-action@v3
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@v5
- name: Check for Ansible role files
id: check_ansible_role
uses: andstor/file-existence-action@v3
with:
files: "tasks, meta"
- name: Check for Ansible playbook files
id: check_ansible_playbook
uses: andstor/file-existence-action@v3
with:
files: "site.yml"
- name: Set up Python 3.x
if: steps.check_ansible_role.outputs.files_exists == 'true' || steps.check_ansible_playbook.outputs.files_exists == 'true'
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install ansible
if: steps.check_ansible_role.outputs.files_exists == 'true' || steps.check_ansible_playbook.outputs.files_exists == 'true'
run: |
pip3 install --disable-pip-version-check ansible
- name: Install ansible-lint
if: steps.check_ansible_role.outputs.files_exists == 'true' || steps.check_ansible_playbook.outputs.files_exists == 'true'
run: |
pip3 install --disable-pip-version-check ansible-lint
- name: Fix yamllint configuration
if: steps.check_ansible_role.outputs.files_exists == 'true' || steps.check_ansible_playbook.outputs.files_exists == 'true'
run: |
touch ".gitignore"
touch ".yamlignore"
- name: Run ansible-lint for Ansible role
if: steps.check_ansible_role.outputs.files_exists == 'true'
run: |
ansible-lint --strict --force-color .
- name: Run ansible-lint for Ansible playbook
if: steps.check_ansible_playbook.outputs.files_exists == 'true'
env:
VAULT_PASS: ${{ secrets.VAULT_PASS }}
run: |
find . -maxdepth 1 -name "*.yml" -not -name "requirements.yml" -not -name "hosts.yml" | xargs -n1 ansible-lint --strict --force-color
- name: Install role and collection dependencies
if: steps.check_ansible_playbook.outputs.files_exists == 'true'
run: |
ansible-galaxy role install --role-file=requirements.yml
ansible-galaxy collection install --requirements-file=requirements.yml
- name: Run ansible-playbook syntax-check for Ansible playbook
if: steps.check_ansible_playbook.outputs.files_exists == 'true'
env:
VAULT_PASS: ${{ secrets.VAULT_PASS }}
run: |
find . -maxdepth 1 -name "*.yml" -not -name "requirements.yml" -not -name "hosts.yml" | xargs -n1 ansible-playbook --inventory="hosts.yml" --syntax-check
- name: Check for Molecule files
id: check_molecule
uses: andstor/file-existence-action@v3
with:
files: "molecule"
- name: Free disk space
if: steps.check_molecule.outputs.files_exists == 'true'
uses: jlumbroso/free-disk-space@main
with:
tool-cache: false
- 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@v5
- name: Check for Docker-Compose test file
id: check_docker_compose_test
uses: andstor/file-existence-action@v3
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@v5
- name: Check for Go files
id: check_go
uses: andstor/file-existence-action@v3
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'
env:
GH_REPO: dominikh/go-tools
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
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
- name: Run staticcheck
if: steps.check_go.outputs.files_exists == 'true'
run: |
staticcheck