Statick #188
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: Statick | |
on: # NOLINT | |
pull_request: | |
push: | |
schedule: | |
- cron: '0 10 * * MON' | |
workflow_dispatch: | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [macos-latest, ubuntu-20.04, ubuntu-22.04, windows-latest] | |
python-version: ['3.9', '3.10', '3.11'] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: '16' | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- uses: actions/cache@v3 | |
if: startsWith(runner.os, 'Linux') | |
with: | |
path: ~/.cache/pip | |
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} | |
restore-keys: | | |
${{ runner.os }}-pip- | |
- uses: actions/cache@v3 | |
if: startsWith(runner.os, 'macOS') | |
with: | |
path: ~/Library/Caches/pip | |
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} | |
restore-keys: | | |
${{ runner.os }}-pip- | |
- uses: actions/cache@v3 | |
if: startsWith(runner.os, 'Windows') | |
with: | |
path: ~\AppData\Local\pip\Cache | |
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} | |
restore-keys: | | |
${{ runner.os }}-pip- | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install --upgrade -r requirements.txt | |
python -m pip install --upgrade mypy | |
python -m pip install --upgrade setuptools | |
python -m pip install --upgrade tox | |
python -m pip install --upgrade tox-gh-actions | |
python -m pip install --upgrade types-deprecated | |
python -m pip install --upgrade types-PyYAML | |
python -m pip install --upgrade types-tabulate | |
python -m pip install --upgrade wheel | |
# Remove apt repos that are known to break from time to time. | |
# See https://github.com/actions/virtual-environments/issues/323 | |
- name: Remove broken apt repos [Ubuntu] | |
if: matrix.os == 'ubuntu-20.04' || matrix.os == 'ubuntu-22.04' | |
run: | | |
for apt_file in `grep -lr microsoft /etc/apt/sources.list.d/`; do sudo rm $apt_file; done | |
# Use apt-get instead of apt as apt does not have a stable CLI interface. The apt tool prints out | |
# "WARNING: apt does not have a stable CLI interface. Use with caution in scripts." | |
- name: Install tools (Linux) | |
if: matrix.os == 'ubuntu-20.04' || matrix.os == 'ubuntu-22.04' | |
run: | | |
sudo apt-get update | |
sudo apt-get install cccc | |
sudo apt-get install clang | |
sudo apt-get install clang-format | |
sudo apt-get install clang-tidy | |
sudo apt-get install cppcheck | |
sudo apt-get install libpcre3-dev | |
sudo apt-get install libperl-critic-perl | |
sudo apt-get install libxml2 | |
sudo apt-get install libxml2-utils | |
sudo apt-get install shellcheck | |
sudo apt-get install uncrustify | |
- name: Install clang tools (for unit tests) | |
if: matrix.os == 'ubuntu-22.04' | |
run: | | |
sudo apt-get update | |
sudo apt-get install clang-format-14 | |
sudo apt-get install clang-tidy-14 | |
# Have to install newer version from non-apt source due to SSL library compatibility issues. | |
- name: Install node | |
if: matrix.os == 'ubuntu-20.04' || matrix.os == 'ubuntu-22.04' | |
run: | | |
npm install -g [email protected] | |
npm install -g npm-groovy-lint | |
- name: Test with mypy | |
run: | | |
mypy --ignore-missing-imports --strict statick statick_tool/ | |
- name: Statick markdown | |
if: matrix.os == 'ubuntu-20.04' || matrix.os == 'ubuntu-22.04' | |
run: | | |
statick . --check --profile documentation.yaml | |
- name: Sphinx lint | |
if: matrix.os == 'ubuntu-20.04' || matrix.os == 'ubuntu.22.04' | |
uses: ammaraskar/sphinx-action@master | |
with: | |
docs-folder: 'docs/' | |
- name: Test with tox | |
run: | | |
python -m tox | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
fail_ci_if_error: false | |
- name: Self check | |
if: matrix.os == 'ubuntu-20.04' || matrix.os == 'ubuntu-22.04' | |
run: | | |
mkdir statick-output | |
./statick . --output-directory statick-output --check --profile self_check.yaml --log INFO |