Skip to content

restore CI

restore CI #822

name: Test code and publish package
on: [push]
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest", "macos-latest", "macos-13", "windows-2019"]
python-version: ["3.9", "3.10", "3.11", "3.12"]
defaults: # Needed for conda
run:
shell: bash -l {0}
steps:
- uses: actions/checkout@v4
with:
lfs: true
submodules: true
- uses: conda-incubator/setup-miniconda@v3
with:
python-version: ${{ matrix.python-version }}
channels: acellera,conda-forge,defaults
- name: Lint with flake8
run: |
pip install flake8 coverage pytest-cov pytest pytest-subtests
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Install moleculekit conda deps
run: |
conda install -y -q --file extra_requirements.txt python=${{ matrix.python-version }} -c acellera -c conda-forge
# scikit-learn, joblib, biopython are only used for rarely-used functions in smallmol
conda install -y -q scikit-learn joblib biopython -c conda-forge
# - name: Install cdpkit
# # if: ${{ matrix.os == 'ubuntu-latest' }}
# run: |
# # for testing CDPKit SmallMol
# pip install CDPKit
- name: Install moleculekit
run: |
pip install "numpy>=1.23.5" "Cython>=0.29.21"
pip install .
pip install "versioneer==0.28"
python setup.py build_ext --inplace
- name: List conda environment
run: conda list
- name: Test
run: |
pytest ./moleculekit
env:
GITHUB_ACTIONS: 1
# - name: Upload coverage to Codecov
# uses: codecov/codecov-action@v3
deploypypi:
if: startsWith(github.event.ref, 'refs/tags/')
needs: test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest"]
python-version: ["3.10"]
steps:
- uses: actions/checkout@v4
- uses: conda-incubator/setup-miniconda@v3
with:
activate-environment: deploy
python-version: ${{ matrix.python-version }}
- name: Build PyPI 📦
run: |
pip install numpy>=1.23.5 Cython>=0.29.21 build
python -m build --sdist --outdir dist/ .
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PUBLIC_PYPI_API_TOKEN }}
skip_existing: true
deploy_linux:
if: startsWith(github.event.ref, 'refs/tags/')
needs: test
runs-on: ${{ matrix.os }}
container: ${{ matrix.container }}
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest"]
python-version: ["3.10"]
container: ["quay.io/pypa/manylinux_2_28_x86_64"]
steps:
- uses: actions/checkout@v4
- uses: conda-incubator/setup-miniconda@v2
with:
miniconda-version: "latest"
activate-environment: ../deploy-env
python-version: ${{ matrix.python-version }}
- name: Install build deps
shell: bash -l {0}
run: |
git config --global --add safe.directory '*'
conda install anaconda-client rattler-build python=${{ matrix.python-version }} -c conda-forge
pip install versioneer==0.28 toml pyyaml
- name: Build conda package
shell: bash -l {0}
run: |
python package/moleculekit/insert_placeholder_values.py
rattler-build build --recipe ./package/moleculekit/recipe.yaml --output-dir ../pkg/ --no-include-recipe -c acellera -c conda-forge
- name: Upload to conda
shell: bash -l {0}
run: |
anaconda -t ${{ secrets.ANACONDA_TOKEN_BASIC }} upload -u acellera ../pkg/*/moleculekit-*.conda
deploy_osx:
if: startsWith(github.event.ref, 'refs/tags/')
needs: test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: ["macos-latest", "macos-13"]
python-version: ["3.10"]
steps:
- uses: actions/checkout@v4
- uses: ilammy/msvc-dev-cmd@v1
- uses: conda-incubator/setup-miniconda@v3
with:
miniconda-version: "latest"
activate-environment: ../deploy-env
python-version: ${{ matrix.python-version }}
- name: Install build deps
shell: bash -l {0}
run: |
git config --global --add safe.directory '*'
conda install anaconda-client rattler-build python=${{ matrix.python-version }} -c conda-forge
pip install versioneer==0.28 toml pyyaml
- name: Build conda package
shell: bash -l {0}
run: |
python package/moleculekit/insert_placeholder_values.py
rattler-build build --recipe ./package/moleculekit/recipe.yaml --output-dir ../pkg/ --no-include-recipe -c acellera -c conda-forge
- name: Upload to conda
shell: bash -l {0}
run: |
anaconda -t ${{ secrets.ANACONDA_TOKEN_BASIC }} upload -u acellera ../pkg/*/moleculekit-*.conda
windows_build:
if: startsWith(github.event.ref, 'refs/tags/')
needs: test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: ["windows-2019"]
python-version: ["3.10"]
steps:
- uses: actions/checkout@v4
- uses: conda-incubator/setup-miniconda@v3
with:
miniconda-version: "latest"
activate-environment: ../deploy-env
python-version: ${{ matrix.python-version }}
- name: Add compiler to PATH
run: |
echo "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
- name: Install build deps
shell: bash -l {0}
run: |
git config --global --add safe.directory '*'
conda install anaconda-client rattler-build python=${{ matrix.python-version }} -c conda-forge
pip install versioneer==0.28 toml pyyaml
- name: Build conda package
shell: bash -l {0}
run: |
python package/moleculekit/insert_placeholder_values.py
rattler-build build --recipe ./package/moleculekit/recipe.yaml --output-dir ../pkg/ --no-include-recipe -c acellera -c conda-forge
- name: Upload to conda
shell: bash -l {0}
run: |
anaconda -t ${{ secrets.ANACONDA_TOKEN_BASIC }} upload -u acellera ../pkg/*/moleculekit-*.conda