-
Notifications
You must be signed in to change notification settings - Fork 3
133 lines (106 loc) · 3.65 KB
/
Copy pathrelease.yml
File metadata and controls
133 lines (106 loc) · 3.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
name: Build wheels and publish to PyPI
on:
release:
types: [published]
jobs:
check_tag:
name: Check tag
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- shell: bash
run: |
TAG="${{ github.event.release.tag_name }}"
GH_TAG_NAME="${TAG#v}"
PY_VERSION=$(python - <<'PY'
import pathlib, tomllib
data = tomllib.loads(pathlib.Path("pyproject.toml").read_text(encoding="utf-8"))
print(data.get("project").get("version"))
PY
)
if [ "${GH_TAG_NAME}" != "${PY_VERSION}" ]; then
echo "::error::Tag (${GH_TAG_NAME}) does not match pyproject.toml version (${PY_VERSION})."
exit 2
fi
build_wheels:
needs: check_tag
name: Build wheels
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Build wheel and sdist
run: |
python -m pip install build
python -m build --wheel --sdist --outdir wheelhouse
- name: Store wheels
uses: actions/upload-artifact@v5
with:
name: wheels
path: wheelhouse/*
test_wheels:
needs: build_wheels
name: Test wheels on ${{ matrix.os }} with ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ["3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Set execute permission for OSX install script
if: runner.os == 'macOS'
run: chmod +x .github/scripts/install_osx_dependencies.sh
- name: Install OSX packages
if: runner.os == 'macOS'
shell: bash
run: ./.github/scripts/install_osx_dependencies.sh
- name: Force non-GUI Matplotlib backend (Windows)
if: ${{ matrix.os == 'windows-latest' }}
shell: pwsh
run: echo "MPLBACKEND=Agg" >> $env:GITHUB_ENV
- name: Force non-GUI Matplotlib backend (macOS)
if: ${{ matrix.os == 'macos-latest' }}
shell: bash
run: echo "MPLBACKEND=Agg" >> $GITHUB_ENV
- uses: actions/download-artifact@v5
with:
name: wheels
path: wheelhouse
- name: Get wheel filename (Unix)
if: runner.os != 'Windows'
run: echo "WHEELNAME=$(ls ./wheelhouse/hypertrees_forecasting-*none-any.whl)" >> $GITHUB_ENV
- name: Get wheel filename (Windows)
if: runner.os == 'Windows'
run: echo "WHEELNAME=$(Get-ChildItem ./wheelhouse/hypertrees_forecasting-*none-any.whl)" >> $env:GITHUB_ENV
- name: Install wheel and test extras
run: python -m pip install "${{ env.WHEELNAME }}[test]"
- name: Force CPU-only torch (avoid pulling CUDA wheels in CI)
run: python -m pip install --force-reinstall --no-deps torch --extra-index-url https://download.pytorch.org/whl/cpu
- name: Run tests
run: |
python -m pytest
upload_wheels:
name: Upload wheels to PyPI
runs-on: ubuntu-latest
needs: [build_wheels, test_wheels]
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v5
with:
name: wheels
path: wheelhouse
- name: Publish package to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: wheelhouse/