archey4/.github/workflows/integration.yml

167 lines
4.0 KiB
YAML

---
name: Integration
on: [push, pull_request]
jobs:
python_test:
name: Run against Python ${{ matrix.python-version }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
env:
CLICOLOR_FORCE: 1
strategy:
fail-fast: false
matrix:
os:
- 'macOS-latest'
- 'ubuntu-latest'
python-version:
# - '3.7'
# - '3.8'
- '3.9'
# - '3.10'
- '3.11'
- '3.12-dev'
- 'pypy3.9'
include:
- os: 'ubuntu-20.04'
python-version: '3.6'
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install required dependencies
run: |
python -m pip install --upgrade pip setuptools
- name: Install module regularly
run: pip install .
- name: Simple module executions
run: |
time archey
time python -m archey
- name: Run our test suite
run: python -m unittest
standalone_build:
name: Standalone builds
runs-on: ubuntu-latest
env:
CLICOLOR_FORCE: 1
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install required dependencies
run: |
sudo apt update && sudo apt install -y patchelf
python -m pip install --upgrade pip setuptools
pip install nuitka pex stickytape pyinstaller
pip install .
- name: Standalone building (with Nuitka)
run: |
python -m nuitka \
--onefile \
--include-package=archey.logos \
--output-filename=archey \
--output-dir=dist \
--quiet \
archey/__main__.py
time ./dist/archey
rm dist/archey
- name: Standalone building (with PEX)
run: |
pex \
-o dist/archey \
-m archey \
.
time ./dist/archey
rm dist/archey
- name: Standalone building (with Stickytape)
run: |
stickytape \
--copy-shebang \
--add-python-path . \
--output-file dist/archey \
--add-python-module archey.logos."$(python -c 'import distro; print(distro.id())')" \
archey/__main__.py
chmod +x dist/archey
time ./dist/archey
rm dist/archey
- name: Standalone building (with PyInstaller)
run: |
pyinstaller \
--distpath dist \
--specpath dist \
--name archey \
--onefile archey/__main__.py \
--hidden-import archey.logos."$(python -c 'import distro; print(distro.id())')" \
--log-level WARN
time ./dist/archey
rm dist/archey
python_lint:
name: Lint Python sources
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install required dependencies
run: |
python -m pip install --upgrade pip
pip install pylint pylint-secure-coding-standard mypy black isort
pip install .
- name: Lint sources against Pylint
run: pylint archey/
- name: Lint sources against Mypy
run: mypy archey/
- name: Run isort
run: isort --check --diff archey/
- name: Run Black
run: black --check --diff archey/
shell_lint:
name: Lint packaging shell scripts
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: shellcheck packaging/*
man_lint:
name: Lint manual page
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: sudo apt update && sudo apt install -y groff
- run: |
groff -man -Tascii -z archey.1 2&>1 | tee errors
test ! -s errors