ci: improve tests and check configuration #763
Workflow file for this run
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: Tests | |
on: | |
push: | |
branches: | |
- master | |
- devel | |
pull_request: | |
concurrency: | |
group: ${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
build-linux: | |
runs-on: ubuntu-20.04 | |
name: Build Austin on Linux | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Install build dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get -y install libunwind-dev binutils-dev libiberty-dev | |
- name: Compile Austin | |
run: | | |
autoreconf --install | |
./configure --enable-debug-symbols true | |
make | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: austin-binaries | |
path: | | |
src/austin | |
src/austinp | |
build-linux-musl: | |
runs-on: ubuntu-20.04 | |
name: Build Austin on Linux (musl) | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Install build dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get -y install musl-tools | |
- name: Compile Austin | |
run: | | |
musl-gcc -O3 -Os -s -Wall -pthread src/*.c -o src/austin.musl -D__MUSL__ | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: austin-binaries | |
path: | | |
src/austin.musl | |
tests-linux: | |
runs-on: ubuntu-20.04 | |
needs: [build-linux, build-linux-musl] | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11"] | |
env: | |
AUSTIN_TESTS_PYTHON_VERSIONS: ${{ matrix.python-version }} | |
name: Tests on Linux with Python ${{ matrix.python-version }} | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: austin-binaries | |
path: src | |
- run: chmod +x src/austin && chmod +x src/austinp | |
- name: Install test dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get -y install \ | |
valgrind \ | |
gdb | |
- name: Install Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }}-dev | |
- name: Install Python 3.10 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- name: Install test dependencies | |
run: | | |
python3.10 -m venv .venv | |
source .venv/bin/activate | |
pip install --upgrade pip | |
pip install -r test/requirements.txt | |
deactivate | |
- name: Run tests | |
run: | | |
ulimit -c unlimited | |
source .venv/bin/activate | |
sudo -E env PATH="$PATH" .venv/bin/pytest --pastebin=failed --no-flaky-report -svr a | |
.venv/bin/pytest --pastebin=failed --no-flaky-report -svr a | |
deactivate | |
wheels-linux: | |
runs-on: ubuntu-20.04 | |
needs: build-linux | |
name: Build Linux wheels | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: austin-binaries | |
path: src | |
- run: chmod +x src/austin && chmod +x src/austinp | |
- name: Install Python 3.10 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- name: Build wheels | |
run: | | |
python3.10 -m venv .venv | |
source .venv/bin/activate | |
pip install --upgrade pip | |
pip install -r scripts/requirements-bw.txt | |
export VERSION=$(cat src/austin.h | sed -r -n "s/^#define VERSION[ ]+\"(.+)\"/\1/p"); | |
python scripts/build-wheel.py \ | |
--version=$VERSION \ | |
--platform=manylinux_2_12_x86_64.manylinux2010_x86_64 \ | |
--files austin:src/austin austinp:src/austinp | |
python scripts/build-wheel.py \ | |
--version=$VERSION \ | |
--platform=musllinux_1_1_x86_64 \ | |
--files austin:src/austin.musl | |
deactivate | |
build-osx-gcc: | |
runs-on: macos-latest | |
name: Build Austin on macOS (gcc) | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Compile Austin | |
run: gcc-11 -Wall -Werror -O3 -g src/*.c -o src/austin | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: austin-binary | |
path: | | |
src/austin | |
build-osx-clang: | |
runs-on: macos-latest | |
name: Build Austin on macOS (clang) | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Install automake | |
run: brew install automake | |
- run: | | |
autoreconf --install | |
./configure | |
make | |
tests-osx: | |
runs-on: macos-latest | |
needs: [build-osx-gcc, build-osx-clang] | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11"] | |
env: | |
AUSTIN_TESTS_PYTHON_VERSIONS: ${{ matrix.python-version }} | |
name: Tests on macOS with Python ${{ matrix.python-version }} | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: austin-binary | |
path: src | |
- run: chmod +x src/austin | |
- name: Install Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }}-dev | |
- name: Install Python 3.10 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- name: Remove signature from the Python binary | |
run: | | |
codesign --remove-signature /Library/Frameworks/Python.framework/Versions/${{ matrix.python-version }}/bin/python3 || true | |
codesign --remove-signature /Library/Frameworks/Python.framework/Versions/${{ matrix.python-version }}/Resources/Python.app/Contents/MacOS/Python || true | |
- name: Install test dependencies | |
run: | | |
python3.10 -m pip install --upgrade pip | |
python3.10 -m pip install -r test/requirements.txt | |
python${{ matrix.python-version }} -m venv .venv \ | |
|| (python${{ matrix.python-version }} -m pip install virtualenv && python${{ matrix.python-version }} -m virtualenv .venv) | |
- name: Run tests | |
run: | | |
source .venv/bin/activate | |
sudo -E pytest --ignore=test/cunit --pastebin=failed --no-flaky-report -svr a | |
pytest --ignore=test/cunit --pastebin=failed --no-flaky-report -svr a -k _darwin | |
deactivate | |
wheels-osx: | |
runs-on: macos-latest | |
needs: [build-osx-gcc, build-osx-clang] | |
name: Build macOS wheels | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: austin-binary | |
path: src | |
- run: chmod +x src/austin | |
- name: Install Python 3.10 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- name: Build wheels | |
run: | | |
python3.10 -m venv .venv | |
source .venv/bin/activate | |
pip install --upgrade pip | |
pip install -r scripts/requirements-bw.txt | |
export VERSION=$(cat src/austin.h | sed -n -E "s/^#define VERSION[ ]+\"(.+)\"/\1/p") | |
python scripts/build-wheel.py \ | |
--version=$VERSION \ | |
--platform=macosx_11_0_x86_64 \ | |
--files austin:src/austin | |
deactivate | |
build-win: | |
runs-on: windows-latest | |
name: Build Austin on Windows | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Compile Austin | |
run: | | |
gcc.exe --version | |
gcc.exe -O3 -g -o src/austin.exe src/*.c -lpsapi -lntdll -Wall -Werror | |
src\austin.exe --help | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: austin-binary | |
path: | | |
src/austin.exe | |
tests-win: | |
runs-on: windows-latest | |
needs: build-win | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11"] | |
env: | |
AUSTIN_TESTS_PYTHON_VERSIONS: ${{ matrix.python-version }} | |
name: Tests on Windows with Python ${{ matrix.python-version }} | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: austin-binary | |
path: src | |
- name: Install Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }}-dev | |
- uses: actions/setup-python@v2 | |
name: Install Python 3.10 | |
with: | |
python-version: '3.10' | |
- name: Install test dependencies | |
run: | | |
py -3.10 -m venv venv | |
venv\Scripts\Activate.ps1 | |
python -m pip install --upgrade pip | |
python -m pip install -r test/requirements.txt | |
deactivate | |
- name: Run tests | |
run: | | |
venv\Scripts\Activate.ps1 | |
python -m pytest --ignore=test\cunit --pastebin=failed --no-flaky-report -svr a | |
deactivate | |
wheels-win: | |
runs-on: windows-latest | |
needs: build-win | |
name: Build Windows wheels | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: austin-binary | |
path: src | |
- uses: actions/setup-python@v2 | |
name: Install Python 3.10 | |
with: | |
python-version: '3.10' | |
- name: Build wheels | |
shell: bash | |
run: | | |
py -3.10 -m pip install --upgrade pip | |
py -3.10 -m pip install -r scripts/requirements-bw.txt | |
export VERSION=$(cat src/austin.h | sed -r -n "s/^#define VERSION[ ]+\"(.+)\"/\1/p") | |
py -3.10 scripts/build-wheel.py \ | |
--version=$VERSION \ | |
--platform=win_amd64 \ | |
--files austin.exe:src/austin.exe | |
validation: | |
runs-on: ubuntu-20.04 | |
needs: build-linux | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ["3.5", "3.6", "3.7", "3.8", "3.9", "3.10", "3.11"] | |
env: | |
AUSTIN_TESTS_PYTHON_VERSIONS: ${{ matrix.python-version }} | |
name: Data validation with Python ${{ matrix.python-version }} | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Install build dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get -y install libunwind-dev binutils-dev libiberty-dev | |
- name: Install Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }}-dev | |
- name: Install Python 3.10 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.10" | |
- name: Compile Austin | |
run: | | |
autoreconf --install | |
./configure --enable-debug-symbols true | |
make | |
- name: Install runtime dependencies | |
run: | | |
python3.10 -m venv .venv | |
source .venv/bin/activate | |
pip install --upgrade pip | |
pip install -r scripts/requirements-val.txt | |
deactivate | |
- name: Run data validation | |
run: | | |
ulimit -c unlimited | |
source .venv/bin/activate | |
python scripts/validation.py --ignore-errors | |
deactivate |