Skip to content

Commit

Permalink
try setting up actions and pypi release
Browse files Browse the repository at this point in the history
  • Loading branch information
RichieHakim committed Jan 29, 2024
1 parent 437fd74 commit 6eac23f
Show file tree
Hide file tree
Showing 3 changed files with 255 additions and 1 deletion.
153 changes: 153 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
name: build

on:
push:
branches: [ "main" ]
# branches: [ "dev" ]
# branches: [ "main", "dev" ]
# pull_request:
# branches: [ "main" ]
# branches: [ "dev" ]
# branches: [ "main", "dev" ]
workflow_dispatch:
inputs:
name:
description: 'description'
required: false
default: ''

permissions:
contents: read

jobs:

build:

name: ${{ matrix.platform }}, py${{ matrix.python-version }}, ${{ matrix.extra }}, ${{ matrix.install-level }}
runs-on: ${{ matrix.platform }}
strategy:
fail-fast: false
matrix:
platform: [
# ubuntu-latest,
ubuntu-22.04,
ubuntu-20.04,
# # windows-latest,
windows-2022,
windows-2019,
# # macos-latest,
macos-12,
macos-11.0,
# macos-10.15,
]
python-version: [
# "3.9",
# "3.10",
"3.11",
# "3.12",
]
extra: [
all,
all_latest,
]
install-level: [
system,
user,
]

steps:

- name: Set up conda
uses: conda-incubator/setup-miniconda@v2
with:
miniconda-version: latest
activate-environment: bnpm
auto-activate-base: true
auto-update-conda: false
remove-profiles: true
architecture: x64
clean-patched-environment-file: true
run-post: true

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}

- name: Check out repository code
uses: actions/checkout@v3

- name: Prepare PowerShell
shell: pwsh
run: |
conda info
conda list
- name: Check specs of the machine -- Linux
if: startsWith(matrix.platform, 'ubuntu')
run: |
## check cpu, memory, disk, etc.
## print the command inputs to the workflow
echo "CPU info (lscpu):"
lscpu
echo "Memory info (free -h):"
free -h
echo "Disk info (df -h):"
df -h
echo "Network info (ip a):"
ip a
echo "OS info (uname -a):"
uname -a
- name: Check specs of the machine -- Windows
if: startsWith(matrix.platform, 'windows')
run: |
## check cpu, memory, disk, etc.
## just do a generic check on system info
## print the command inputs to the workflow
echo "System info (systeminfo):"
systeminfo
- name: Check specs of the machine -- MacOS
if: startsWith(matrix.platform, 'macos')
run: |
## check cpu, memory, disk, etc.
## print the command inputs to the workflow
echo "CPU info (sysctl -n machdep.cpu.brand_string):"
sysctl -n machdep.cpu.brand_string
echo "Memory info (sysctl -n hw.memsize):"
sysctl -n hw.memsize
echo "Disk info (df -h):"
df -h
echo "OS info (uname -a):"
uname -a

- name: Install package with pip dependencies -- system-level
if: matrix.install-level == 'system'
run: |
## install dependencies with optional extras
pip install -v -e .[${{ matrix.extra }}]
- name: Install package with pip dependencies -- user-level
if: matrix.install-level == 'user'
run: |
pip install -v -e .[${{ matrix.extra }}] --user
- name: Check installed packages
run: |
pip list
## Below, check which versions of torch and torchvision are installed; and whether CUDA is available
python -c "import torch, torchvision; print(f'Using versions: torch=={torch.__version__}, torchvision=={torchvision.__version__}'); print('torch.cuda.is_available() = ', torch.cuda.is_available())"
- name: Run pytest and generate coverage report
run: |
# pip install tox tox-gh-actions
pip install pytest pytest-cov
python -m pytest --capture=tee-sys --cov=bnpm --cov-report=xml:coverage.xml --color=yes
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3 ## this is a public action recognized by GitHub Actions
with:
token: ${{ secrets.CODECOV_TOKEN }} ## this is a secret variable
file: coverage.xml ## this is the default name of the coverage report file
fail_ci_if_error: false
verbose: true
101 changes: 101 additions & 0 deletions .github/workflows/pypi_release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
name: Publish Python 🐍 distribution 📦 to PyPI

on:
workflow_dispatch:
inputs:
name:
description: 'description'
required: false
default: ''
jobs:
build:
name: Build distribution 📦
runs-on: ubuntu-20.04

steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install pypa/build
run: >-
python3 -m pip install build --user
- name: Build a binary wheel and a source tarball
run: python3 -m build
- name: Store the distribution packages
uses: actions/upload-artifact@v3
with:
name: python-package-distributions
path: dist/

publish-to-pypi:
name: >-
Publish Python 🐍 distribution 📦 to PyPI
# if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
needs:
- build
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/project/bnpm # Replace <package-name> with your PyPI project name
permissions:
id-token: write # IMPORTANT: mandatory for trusted publishing

steps:
- name: Download all the dists
uses: actions/download-artifact@v3
with:
name: python-package-distributions
path: dist/
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1

github-release:
name: >-
Sign the Python 🐍 distribution 📦 with Sigstore
and upload them to GitHub Release
needs:
- publish-to-pypi
runs-on: ubuntu-latest

permissions:
contents: write # IMPORTANT: mandatory for making GitHub Releases
id-token: write # IMPORTANT: mandatory for sigstore

steps:
- uses: actions/checkout@v4
- name: Download all the dists
uses: actions/download-artifact@v3
with:
name: python-package-distributions
path: dist/
- name: Sign the dists with Sigstore
uses: sigstore/[email protected]
with:
inputs: >-
./dist/*.tar.gz
./dist/*.whl
- name: List files in workspace
run: >-
ls ${{ github.workspace }}
- name: List files in upper directory
run: >-
ls ${{ github.workspace }}/..
- name: List files in dist
run: >-
ls ${{ github.workspace }}/dist
- name: Store the version number
run: |
version=$(grep '__version__' ${{ github.workspace }}/bnpm/__init__.py | awk -F = '{print $2}' | tr -d ' ' | tr -d \"\')
echo "VERSION=$version" >> $GITHUB_ENV
- name: Check version number
run: echo "Version is $VERSION"
- name: Create GitHub Release
env:
GITHUB_TOKEN: ${{ github.token }}
run: >-
gh release create "v$VERSION"
--title "v$VERSION"
--notes "Release for version $VERSION. Also available on PyPI: https://pypi.org/project/bnpm/$VERSION/"
--repo ${{ github.repository }}
2 changes: 1 addition & 1 deletion bnpm/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,4 @@
for pkg in __all__:
exec('from . import ' + pkg)

__version__ = '0.3.0'
__version__ = '0.3.1'

0 comments on commit 6eac23f

Please sign in to comment.