Use latest actions and simplify variables/steps in GitHub Actions wor… #187
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: lint-test-cover-docs-build-upload | |
on: | |
push | |
jobs: | |
manylinux: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python: | |
- {version: '3.7', abi: 'cp37'} | |
- {version: '3.8', abi: 'cp38'} | |
- {version: '3.9', abi: 'cp39'} | |
- {version: '3.10', abi: 'cp310'} | |
- {version: '3.11', abi: 'cp311'} | |
name: Python ${{ matrix.python.version }} with ABI ${{ matrix.python.abi }} for manylinux2014_x86_64 | |
env: | |
WHEELNAME: rbcl-${{ github.ref_name }}-${{ matrix.python.abi }}-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Python. | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python.version }} | |
architecture: x64 | |
- name: Download libsodium source tree archive. | |
run: | | |
wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz | |
mv libsodium-1.0.18.tar.gz src/rbcl/libsodium.tar.gz | |
- name: Install Python dependencies for build process. | |
run: | | |
pip install .[build] | |
- name: Build wheel file. | |
run: | | |
mkdir tmpwheelhouse | |
LIBSODIUM_MAKE_ARGS="-j$(nproc)" python -m build --wheel | |
mv dist/rbcl*.whl tmpwheelhouse | |
mkdir wheelhouse | |
mv tmpwheelhouse/rbcl*.whl wheelhouse/ | |
cp build/lib*/rbcl/_sodium.py src/rbcl/_sodium.py | |
- name: Test wheel installation. | |
run: | | |
pip install -f wheelhouse --no-index --force-reinstall --no-dependencies rbcl | |
- name: Lint and test module (and compiled libsodium shared library file). | |
run: | | |
pip install -U .[lint,test] | |
python -m pylint rbcl src/rbcl/_sodium.tmpl src/rbcl/_sodium_build.py --disable=duplicate-code # Check against linting rules. | |
python src/rbcl/rbcl.py -v # Run doctests. | |
python -m pytest # Run tests. | |
- name: Publish coverage results. | |
run: | | |
pip install -U .[coveralls] | |
python -m coveralls --service=github # Submit to coveralls. | |
if: matrix.python.version == '3.11' | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} | |
- name: Test auto-generation of documentation. | |
run: | | |
pip install -U .[docs] | |
cd docs | |
sphinx-apidoc -f -E --templatedir=_templates -o _source .. ../src/rbcl/_sodium_build.py | |
make html | |
cd .. | |
- name: Upload wheel file. | |
run: | | |
mkdir rbcl-wheelhouse | |
mv wheelhouse/rbcl*.whl rbcl-wheelhouse/${{ env.WHEELNAME }}.whl | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.WHEELNAME }} | |
path: rbcl-wheelhouse/ | |
macos: | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
python: | |
- {version: '3.7', abi: 'cp37', url: '3.7.9'} | |
- {version: '3.8', abi: 'cp38', url: '3.8.9'} | |
- {version: '3.9', abi: 'cp39', url: '3.9.9'} | |
name: Python ${{ matrix.python.version }} with ABI ${{ matrix.python.abi }} for macOS 10.9 | |
env: | |
WHEELNAME: rbcl-${{ github.ref_name }}-${{ matrix.python.abi }}-abi3-macosx_10_9_x86_64 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Python. | |
run: | | |
curl "https://www.python.org/ftp/python/${{ matrix.python.url }}/python-${{ matrix.python.url }}-macosx10.9.pkg" -o python.pkg | |
sudo installer -pkg python.pkg -target / | |
/Library/Frameworks/Python.framework/Versions/${{ matrix.python.version }}/bin/python3 -m pip install -U virtualenv | |
/Library/Frameworks/Python.framework/Versions/${{ matrix.python.version }}/bin/python3 -m virtualenv venv | |
- name: Download libsodium source tree archive. | |
run: | | |
wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz | |
mv libsodium-1.0.18.tar.gz src/rbcl/libsodium.tar.gz | |
- name: Install Python dependencies for build process. | |
run: | | |
venv/bin/pip install -U pip .[build] | |
- name: Build wheel file. | |
run: | | |
mkdir wheelhouse | |
rm -f dist/*.* | |
LIBSODIUM_MAKE_ARGS="-j$(sysctl -n hw.ncpu)" CFLAGS="-mmacosx-version-min=10.9 -march=core2" \ | |
venv/bin/python -m build --wheel && mv dist/rbcl*.whl wheelhouse | |
cp build/lib*/rbcl/_sodium.py src/rbcl/_sodium.py | |
- name: Test wheel installation. | |
run: | | |
venv/bin/pip install -f wheelhouse --no-index --force-reinstall --no-dependencies rbcl | |
- name: Lint and test module (and compiled libsodium shared library file). | |
run: | | |
venv/bin/pip install -U pip .[lint,test] | |
venv/bin/python -m pylint rbcl src/rbcl/_sodium.tmpl src/rbcl/_sodium_build.py --disable=duplicate-code # Check against linting rules. | |
venv/bin/python src/rbcl/rbcl.py -v # Run doctests. | |
venv/bin/python -m pytest # Run tests. | |
- name: Test auto-generation of documentation. | |
run: | | |
venv/bin/pip install -U .[docs] | |
cd docs | |
../venv/bin/sphinx-apidoc -f -E --templatedir=_templates -o _source .. ../src/rbcl/_sodium_build.py | |
make html SPHINXBUILD='../venv/bin/sphinx-build' | |
cd .. | |
- name: Upload wheel file. | |
run: | | |
mkdir rbcl-wheelhouse | |
mv wheelhouse/rbcl*.whl rbcl-wheelhouse/${{ env.WHEELNAME }}.whl | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.WHEELNAME }} | |
path: rbcl-wheelhouse/ | |
macos-arm: | |
runs-on: [self-hosted, macos, ARM64] | |
strategy: | |
matrix: | |
python: | |
- {version: '3.9', abi: 'cp39', url: '3.9.9'} | |
- {version: '3.10', abi: 'cp310', url: '3.10.6'} | |
- {version: '3.11', abi: 'cp311', url: '3.11.3'} | |
name: Python ${{ matrix.python.version }} with ABI ${{ matrix.python.abi }} for macOS 11 ARM | |
env: | |
WHEELNAME: rbcl-${{ github.ref_name }}-${{ matrix.python.abi }}-abi3-macosx_10_10_universal2 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Python. | |
run: | | |
curl "https://www.python.org/ftp/python/${{ matrix.python.url }}/python-${{ matrix.python.url }}-macos11.pkg" -o python.pkg | |
sudo installer -pkg python.pkg -target / | |
/Library/Frameworks/Python.framework/Versions/${{ matrix.python.version }}/bin/python3 -m pip install -U virtualenv | |
/Library/Frameworks/Python.framework/Versions/${{ matrix.python.version }}/bin/python3 -m virtualenv venv | |
- name: Download libsodium source tree archive. | |
run: | | |
wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz | |
mv libsodium-1.0.18.tar.gz src/rbcl/libsodium.tar.gz | |
- name: Install Python dependencies for build process. | |
run: | | |
venv/bin/pip install -U pip .[build] | |
- name: Build wheel file. | |
run: | | |
mkdir wheelhouse | |
rm -f dist/*.* | |
LIBSODIUM_MAKE_ARGS="-j$(sysctl -n hw.ncpu)" MACOSX_DEPLOYMENT_TARGET="10.10" CFLAGS="-arch arm64" ARCHFLAGS="-arch arm64" _PYTHON_HOST_PLATFORM="macosx-10.9-universal2" \ | |
venv/bin/python -m build --wheel && mv dist/rbcl*.whl wheelhouse | |
cp build/lib*/rbcl/_sodium.py src/rbcl/_sodium.py | |
- name: Test wheel installation. | |
run: | | |
venv/bin/pip install -f wheelhouse --no-index --force-reinstall --no-dependencies rbcl | |
- name: Lint and test module (and compiled libsodium shared library file). | |
run: | | |
venv/bin/pip install -U pip .[lint,test] | |
venv/bin/python -m pylint rbcl src/rbcl/_sodium.tmpl src/rbcl/_sodium_build.py --disable=duplicate-code # Check against linting rules. | |
venv/bin/python src/rbcl/rbcl.py -v # Run doctests. | |
venv/bin/python -m pytest # Run tests. | |
- name: Test auto-generation of documentation. | |
run: | | |
venv/bin/pip install -U .[docs] | |
cd docs | |
../venv/bin/sphinx-apidoc -f -E --templatedir=_templates -o _source .. ../src/rbcl/_sodium_build.py | |
make html SPHINXBUILD='../venv/bin/sphinx-build' | |
cd .. | |
- name: Upload wheel file. | |
run: | | |
mkdir rbcl-wheelhouse | |
mv wheelhouse/rbcl*.whl rbcl-wheelhouse/${{ env.WHEELNAME }}.whl | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.WHEELNAME }} | |
path: rbcl-wheelhouse/ | |
windows: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
windows: | |
- {version: 'win32', arch: 'x86', arch-sodium: 'Win32', arch-vs: 'x86'} | |
- {version: 'win_amd64', arch: 'x64', arch-sodium: 'x64', arch-vs: 'amd64'} | |
python: | |
- {version: '3.7', abi: 'cp37'} | |
- {version: '3.8', abi: 'cp38'} | |
- {version: '3.9', abi: 'cp39'} | |
- {version: '3.10', abi: 'cp310'} | |
- {version: '3.11', abi: 'cp311'} | |
name: Python ${{ matrix.python.version }} with ABI ${{ matrix.python.abi }} for Windows ${{ matrix.windows.arch }} | |
env: | |
WHEELNAME: rbcl-${{ github.ref_name }}-${{ matrix.python.abi }}-abi3-${{ matrix.windows.version }} | |
INCLUDE: C:\libsodium\include | |
LIB: C:\libsodium\${{ matrix.windows.arch-sodium }}\Release\v142\dynamic\ | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Python. | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python.version }} | |
architecture: ${{ matrix.windows.arch }} | |
- name: Download and extract libsodium dynamic library file. | |
run: | | |
wget -O C:\libsodium-1.0.18-msvc.zip https://download.libsodium.org/libsodium/releases/libsodium-1.0.18-msvc.zip | |
Expand-Archive C:\libsodium-1.0.18-msvc.zip -DestinationPath C:\ | |
shell: powershell | |
- name: Install Python dependencies for build process. | |
run: | | |
pip install -U pip .[build] | |
shell: bash | |
- name: Build wheel file. | |
run: | | |
mkdir wheelhouse | |
call "C:\Program Files (x86)\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" -no_logo -arch=${{ matrix.windows.arch-vs }} | |
python -m build --wheel | |
mv dist/rbcl*.whl wheelhouse | |
cp build/lib*/rbcl/_sodium.py src/rbcl/_sodium.py | |
shell: cmd | |
- name: Test wheel installation. | |
run: | | |
pip install -f wheelhouse rbcl --no-index --force-reinstall --no-dependencies | |
shell: bash | |
- name: Lint and test module (and compiled libsodium shared library file). | |
run: | | |
pip install -U pip .[lint,test] | |
python -m pylint rbcl src/rbcl/_sodium.tmpl src/rbcl/_sodium_build.py --disable=duplicate-code # Check against linting rules. | |
python src/rbcl/rbcl.py -v # Run doctests. | |
python -m pytest # Run tests. | |
shell: bash | |
- name: Test auto-generation of documentation. | |
run: | | |
pip install -U .[docs] | |
cd docs | |
sphinx-apidoc -f -E --templatedir=_templates -o _source .. ../src/rbcl/_sodium_build.py | |
make html | |
cd .. | |
shell: bash | |
- name: Upload wheel file. | |
run: | | |
mkdir rbcl-wheelhouse | |
move wheelhouse\rbcl*.whl rbcl-wheelhouse\${{ env.WHEELNAME }}.whl | |
shell: cmd | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.WHEELNAME }} | |
path: rbcl-wheelhouse\ |