diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f743d867..d3472ae8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,47 +4,35 @@ # REANA is free software; you can redistribute it and/or modify it # under the terms of the MIT License; see LICENSE file for more details. -name: CI +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 @@ -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 @@ -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: @@ -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 @@ -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 @@ -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 diff --git a/run-tests.sh b/run-tests.sh index 0ca5d13a..949f8c09 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -91,6 +91,10 @@ check_shfmt() { shfmt -d . } +check_jsonlint() { + find . -name "*.json" -exec jsonlint -q {} \+ +} + check_all() { check_commitlint check_shellcheck @@ -105,6 +109,7 @@ check_all() { check_markdownlint check_prettier check_shfmt + check_jsonlint } if [ $# -eq 0 ]; then @@ -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