Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ci] Update Publish workflow #6

Merged
merged 29 commits into from
Sep 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
236 changes: 229 additions & 7 deletions .github/workflows/Publish.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Publish to PyPI.org
name: Publish to PyPI.org(CPU)

on:
schedule:
Expand All @@ -11,15 +11,237 @@ on:
type: string
required: false
jobs:
pypi:
# Define test jobs as part of the publish workflow
test_linux:
name: Test on Linux
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12"]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
fetch-depth: 0
- run: python setup.py bdist_wheel --python-tag=py3
- name: Publish package
uses: pypa/gh-action-pypi-publish@release/v1
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip cache purge
python -m pip install --upgrade pip setuptools --no-cache-dir
python -m pip install -r requirements-dev.txt --no-cache-dir
python -m pip install setuptools==68.2.0
- name: Build Wheel
run: python setup.py bdist_wheel
- name: Test with pytest
run: |
pip install dist/*.whl
pytest tests/
build_linux_cpu:
name: Build on Linux(CPU)
runs-on: ubuntu-latest
needs: [test_linux]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python 3.9
uses: actions/setup-python@v5
with:
python-version: 3.9
- name: Install dependencies
run: |
python -m pip cache purge
pip install cibuildwheel
- name: Build Wheel
run: |
cibuildwheel --platform linux
mkdir dist
cp wheelhouse/*.whl dist/
- name: Archive Wheel Artifacts
uses: actions/upload-artifact@v3
with:
name: dist-linux-cpu
path: dist/*.whl
retention-days: 20

# build_linux_gpu:
# name: Build on Linux(GPU)
# runs-on: ubuntu-latest
# needs: [test_linux]
# steps:
# - name: Checkout
# uses: actions/checkout@v4
# - name: Set up Python 3.9
# uses: actions/setup-python@v5
# with:
# python-version: 3.9
# - name: Install dependencies
# run: |
# python -m pip cache purge
# python -m pip install --upgrade pip setuptools --no-cache-dir
# python -m pip install -r requirements-dev.txt --no-cache-dir
# python -m pip install setuptools==68.2.0
# pip install cibuildwheel
# - name: Build Wheel
# run: |
# rm -rf setup.py
# cp setup_cuda.py setup.py
# cibuildwheel --platform linux
# mkdir dist
# cp wheelhouse/*.whl dist/
# - name: Archive Wheel Artifacts
# uses: actions/upload-artifact@v3
# with:
# name: dist-linux-gpu
# path: dist/*.whl
# retention-days: 20
build_and_test_macos_arm:
name: Build and Test on macOS(ARM)
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12"]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip cache purge
python -m pip install --upgrade pip setuptools --no-cache-dir
python -m pip install -r requirements-dev.txt --no-cache-dir
python -m pip install setuptools==68.2.0
pip install cibuildwheel
- name: Build Wheel
run: |
sh copy_pyproject_mac_arm64.sh
cibuildwheel --platform macos
mkdir dist
cp wheelhouse/*.whl dist/
- name: Archive Wheel Artifacts
uses: actions/upload-artifact@v3
with:
name: dist-macos-arm
path: dist/*.whl
retention-days: 20
- name: Test with pytest
run: |
pip install dist/*.whl
pytest tests/

# build_macos_x86:
# name: Build on macOS(x86)
# runs-on: macos-latest
# needs: [build_and_test_macos_arm]
# steps:
# - name: Checkout
# uses: actions/checkout@v4
# - name: Set up Python 3.9
# uses: actions/setup-python@v5
# with:
# python-version: 3.9
# - name: Install dependencies
# run: |
# python -m pip cache purge
# python -m pip install --upgrade pip setuptools --no-cache-dir
# python -m pip install -r requirements-dev.txt --no-cache-dir
# python -m pip install setuptools==68.2.0
# pip install cibuildwheel
# - name: Build Wheel
# run: |
# sh copy_pyproject_mac_x86_64.sh
# cibuildwheel --platform macos
# mkdir dist
# cp wheelhouse/*.whl dist/
# - name: Archive Wheel Artifacts
# uses: actions/upload-artifact@v3
# with:
# name: dist-macos-x86
# path: dist/*.whl
# retention-days: 20


build_and_test_windows:
name: Build and Test on Windows
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12"]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip cache purge
python -m pip install --upgrade pip setuptools --no-cache-dir
python -m pip install -r requirements-dev.txt --no-cache-dir
python -m pip install setuptools==68.2.0
- name: Build Wheel
run: python setup.py bdist_wheel
- name: Archive Wheel Artifacts
uses: actions/upload-artifact@v3
with:
password: ${{ secrets.PYPI_API_TOKEN }}
name: dist-windows
path: dist/*.whl
retention-days: 20
- name: Test with pytest
run: |
$whl = Get-ChildItem -Path dist -Filter *.whl | Select-Object -First 1
if ($whl) { pip install $whl.FullName }
else { Write-Error "No wheel file found in dist directory" }
pytest tests/

publish_pypi:
name: Upload release to PyPI
runs-on: ubuntu-latest
needs: [build_linux_cpu, build_and_test_macos_arm, build_and_test_windows]
permissions:
id-token: write
contents: write
packages: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download linux(CPU) Artifacts
uses: actions/download-artifact@v3
with:
name: dist-linux-cpu
path: dist/

# - name: Download linux(GPU) Artifacts
# uses: actions/download-artifact@v3
# with:
# name: dist-linux-gpu
# path: dist/

- name: Download macOS(ARM) Artifacts
uses: actions/download-artifact@v3
with:
name: dist-macos-arm
path: dist/

# - name: Download macOS(x86) Artifacts
# uses: actions/download-artifact@v3
# with:
# name: dist-macos-x86
# path: dist/

- name: Download Windows Artifacts
uses: actions/download-artifact@v3
with:
name: dist-windows
path: dist/
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_API_TOKEN }}
90 changes: 90 additions & 0 deletions ci/linux/gpu/prepare_build_wheel_on_cuda.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
#! /bin/sh

set -e
set -x

#pip install "cmake==3.22.*"
rm setup.py
mv setup_cuda.py setup.py
# mv setup_cpu.py setup.py

# https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/

# Install CUDA 11.2, see:
# * https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/11.2.2/centos7-x86_64/base/Dockerfile
# * https://gitlab.com/nvidia/container-images/cuda/-/blob/master/dist/11.2.2/centos7-x86_64/devel/Dockerfile
#yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo
#yum install --setopt=obsoletes=0 -y \
# cuda-nvcc-11-2-11.2.152-1 \
# cuda-cudart-devel-11-2-11.2.152-1 \
# libcurand-devel-11-2-10.2.3.152-1 \
# libcudnn8-devel-8.1.1.33-1.cuda11.2 \
# libcublas-devel-11-2-11.4.1.1043-1
#ln -s cuda-11.2 /usr/local/cuda
#
#yum install -y python3-devel.x86_64


# Install CUDA 11.4
#yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo
#yum install --setopt=obsoletes=0 -y \
# cuda-nvcc-11-4-11.4.152-1 \
# cuda-cudart-devel-11-4-11.4.148-1 \
# libcurand-devel-11-4-10.2.5.120-1 \
# libcudnn8-devel-8.2.4.15-1.cuda11.4 \
# libcublas-devel-11-4-11.6.5.2-1
#ln -s cuda-11.4 /usr/local/cuda
#
#yum install -y python3-devel.x86_64


# Install CUDA 11.6
# sed -i 's/enabled=1/enabled=0/' /etc/yum/pluginconf.d/fastestmirror.conf
#yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo
#yum install --setopt=obsoletes=0 -y \
# cuda-nvcc-11-6-11.6.124-1 \
# cuda-cudart-devel-11-6-11.6.55-1 \
# libcurand-devel-11-6-10.2.9.124-1 \
# libcudnn8-devel-8.4.1.50-1.cuda11.6 \
# libcublas-devel-11-6-11.9.2.110-1
#ln -s cuda-11.6 /usr/local/cuda


# Install CUDA 11.8
# yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo
# yum install --setopt=obsoletes=0 -y \
# cuda-nvcc-11-8-11.8.89-1 \
# cuda-cudart-devel-11-8-11.8.89-1 \
# libcurand-devel-11-8-10.3.0.86-1\
# libcudnn8-devel-8.8.0.121-1.cuda11.8 \
# libcublas-devel-11-8-11.11.3.6-1
# ln -s cuda-11.8 /usr/local/cuda

# yum install -y python3-devel.x86_64

# Install CUDA 12.0
yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo
yum install --setopt=obsoletes=0 -y \
cuda-drivers-525.147.05-1.x86_64 \
cuda-nvcc-12-0-12.0.140-1 \
cuda-cudart-devel-12-0-12.0.146-1
ln -s cuda-12.0 /usr/local/cuda

yum install glibc-devel

yum install --disableplugin=fastmirror -y python3-devel.x86_64

pip_config_dir="${HOME}/.pip"
pip_config_file="${pip_config_dir}/pip.conf"

mkdir -p "${pip_config_dir}"

if [[ ! -f "${pip_config_file}" ]]; then
touch "${pip_config_file}"
fi

echo "[global]" >> "${pip_config_file}"
# echo "index-url = https://mirrors.aliyun.com/pypi/simple/" >> "${pip_config_file}"
echo "index-url = https://pypi.org/simple" >> "${pip_config_file}"

echo "Pip mirror sources have been set!"
Loading
Loading