Skip to content

Commit

Permalink
ci(jsonlint): add JSON linting (#838)
Browse files Browse the repository at this point in the history
In addition to adding JSON linting, orders all the GitHub CI checks
alphabetically.

Closes #836
  • Loading branch information
tiborsimko committed Nov 14, 2024
1 parent 4b8edd0 commit 456fae3
Show file tree
Hide file tree
Showing 2 changed files with 104 additions and 84 deletions.
182 changes: 98 additions & 84 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,42 +9,30 @@ name: CI
on: [push, pull_request]

jobs:
lint-commitlint:
docs-sphinx:
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup Node
uses: actions/setup-node@v4

- name: Install commitlint
run: |
npm install conventional-changelog-conventionalcommits
npm install commitlint@latest
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Check commit message compliance of the recently pushed commit
if: github.event_name == 'push'
- name: Install system dependencies
run: |
./run-tests.sh --check-commitlint HEAD~1 HEAD
sudo apt-get update -y
sudo apt install libcurl4-openssl-dev libssl-dev
sudo apt-get install libgnutls28-dev
- name: Check commit message compliance of the pull request
if: github.event_name == 'pull_request'
- name: Install Python dependencies
run: |
./run-tests.sh --check-commitlint ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} ${{ github.event.pull_request.number }}
lint-shellcheck:
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
pip install --upgrade pip setuptools py
pip install -e .[all]
- name: Runs shell script static analysis
run: |
sudo apt-get install shellcheck
./run-tests.sh --check-shellcheck
- name: Run Sphinx documentation with doctests
run: ./run-tests.sh --check-sphinx

format-black:
runs-on: ubuntu-24.04
Expand All @@ -62,22 +50,19 @@ jobs:
pip install black
./run-tests.sh --check-black
lint-flake8:
format-prettier:
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Setup Node
uses: actions/setup-node@v4

- name: Check compliance with pep8, pyflakes and circular complexity
- name: Check Prettier code fomatting
run: |
pip install --upgrade pip
pip install flake8
./run-tests.sh --check-flake8
npm install prettier --global
./run-tests.sh --check-prettier
format-pydocstyle:
runs-on: ubuntu-24.04
Expand All @@ -95,6 +80,17 @@ jobs:
pip install pydocstyle
./run-tests.sh --check-pydocstyle
format-shfmt:
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Check shell script code fomatting
run: |
sudo apt-get install shfmt
./run-tests.sh --check-shfmt
lint-check-manifest:
runs-on: ubuntu-24.04
steps:
Expand All @@ -111,56 +107,48 @@ jobs:
pip install check-manifest
./run-tests.sh --check-manifest
docs-sphinx:
lint-commitlint:
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
fetch-depth: 0

- name: Install system dependencies
- name: Setup Node
uses: actions/setup-node@v4

- name: Install commitlint
run: |
sudo apt-get update -y
sudo apt install libcurl4-openssl-dev libssl-dev
sudo apt-get install libgnutls28-dev
npm install conventional-changelog-conventionalcommits
npm install commitlint@latest
- name: Install Python dependencies
- name: Check commit message compliance of the recently pushed commit
if: github.event_name == 'push'
run: |
pip install --upgrade pip setuptools py
pip install -e .[all]
./run-tests.sh --check-commitlint HEAD~1 HEAD
- name: Run Sphinx documentation with doctests
run: ./run-tests.sh --check-sphinx
- name: Check commit message compliance of the pull request
if: github.event_name == 'pull_request'
run: |
./run-tests.sh --check-commitlint ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} ${{ github.event.pull_request.number }}
python-tests:
lint-flake8:
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Python 3.12
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install Python dependencies
- name: Check compliance with pep8, pyflakes and circular complexity
run: |
pip install --upgrade pip setuptools py
pip install twine wheel
pip install -e .[all]
- name: Run pytest
run: ./run-tests.sh --check-pytest

- name: Codecov Coverage
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: coverage.xml
pip install --upgrade pip
pip install flake8
./run-tests.sh --check-flake8
lint-helm:
runs-on: ubuntu-24.04
Expand All @@ -176,23 +164,19 @@ jobs:
- name: Run chart-testing (lint)
run: ct lint --config .github/ct.yaml --lint-conf .github/ctlint.yaml

lint-yamllint:
lint-jsonlint:
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Setup Node
uses: actions/setup-node@v4

- name: Lint YAML files
- name: Lint JSON files
run: |
pip install yamllint
./run-tests.sh --check-yamllint
npm install jsonlint --global
./run-tests.sh --check-jsonlint
lint-markdownlint:
runs-on: ubuntu-24.04
Expand All @@ -208,27 +192,57 @@ jobs:
npm install markdownlint-cli2 --global
./run-tests.sh --check-markdownlint
format-prettier:
lint-shellcheck:
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
- name: Runs shell script static analysis
run: |
sudo apt-get install shellcheck
./run-tests.sh --check-shellcheck
- name: Check Prettier code fomatting
lint-yamllint:
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Lint YAML files
run: |
npm install prettier --global
./run-tests.sh --check-prettier
pip install yamllint
./run-tests.sh --check-yamllint
format-shfmt:
python-tests:
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Check shell script code fomatting
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install Python dependencies
run: |
sudo apt-get install shfmt
./run-tests.sh --check-shfmt
pip install --upgrade pip setuptools py
pip install twine wheel
pip install -e .[all]
- name: Run pytest
run: ./run-tests.sh --check-pytest

- name: Codecov Coverage
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: coverage.xml
6 changes: 6 additions & 0 deletions run-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,10 @@ check_shfmt() {
shfmt -d .
}

check_jsonlint() {
find . -name "*.json" -exec jsonlint -q {} \+
}

check_all() {
check_commitlint
check_shellcheck
Expand All @@ -105,6 +109,7 @@ check_all() {
check_markdownlint
check_prettier
check_shfmt
check_jsonlint
}

if [ $# -eq 0 ]; then
Expand All @@ -127,5 +132,6 @@ case $arg in
--check-markdownlint) check_markdownlint ;;
--check-prettier) check_prettier ;;
--check-shfmt) check_shfmt ;;
--check-jsonlint) check_jsonlint ;;
*) echo "[ERROR] Invalid argument '$arg'. Exiting." && exit 1 ;;
esac

0 comments on commit 456fae3

Please sign in to comment.